Linking Local Targets to Cloud¶
When using custom providers (Python, JavaScript, HTTP), link your local configuration to a cloud target using linkedTargetId. This consolidates findings from multiple eval runs into one dashboard, allowing you to track performance and vulnerabilities over time and view comprehensive reporting.
How to Link Targets¶
Step 1: Get the Target ID¶
- Log in to Promptfoo Cloud (https://www.promptfoo.app/ or your on-prem URL)
- Navigate to the Targets page:
/redteam/targets - Find the target you want to link to
- Copy its ID (looks like
12345678-1234-1234-1234-123456789abc)
Step 2: Add to Provider Config¶
Format the ID as promptfoo://provider/<target-id> and add to your provider config:
Python provider:
providers:
- id: 'file://my_provider.py'
config:
linkedTargetId: 'promptfoo://provider/12345678-1234-1234-1234-123456789abc'
# Your other config...
JavaScript provider:
providers:
- id: 'file://customProvider.js'
config:
linkedTargetId: 'promptfoo://provider/12345678-1234-1234-1234-123456789abc'
# Your other config...
HTTP provider:
providers:
- id: https
config:
url: 'https://api.example.com/endpoint'
method: 'POST'
linkedTargetId: 'promptfoo://provider/12345678-1234-1234-1234-123456789abc'
headers:
'Content-Type': 'application/json'
body:
prompt: '{{prompt}}'
Step 3: Run Your Eval¶
Results will now consolidate under the linked cloud target.
Troubleshooting¶
"Invalid linkedTargetId format" Error¶
Problem: linkedTargetId doesn't start with promptfoo://provider/
Solution: Ensure format is exactly promptfoo://provider/<UUID>:
# ✅ Correct
linkedTargetId: 'promptfoo://provider/12345678-1234-1234-1234-123456789abc'
# ❌ Wrong - missing prefix
linkedTargetId: '12345678-1234-1234-1234-123456789abc'
# ❌ Wrong - incorrect prefix
linkedTargetId: 'promptfoo://12345678-1234-1234-1234-123456789abc'
"linkedTargetId not found" Error¶
Problem: Target doesn't exist in your cloud organization or you lack access
Troubleshooting steps:
- Verify you're logged in:
promptfoo auth status
- Check the target exists:
- Visit your cloud dashboard
/redteam/targetspage - Verify the target ID is correct
-
Ensure target wasn't deleted
-
Verify organization access:
- Targets are scoped to your organization
- Ensure you're logged into the correct org
- Confirm you have permission to access this target
linkedTargetId Specified But Cloud Not Configured¶
Warning message: linkedTargetId specified but cloud is not configured
Problem: You're not logged into Promptfoo Cloud
Solution:
promptfoo auth login
linkedTargetId only works when cloud features are enabled.
FAQ¶
Q: Can I use linkedTargetId with built-in providers (OpenAI, Anthropic, etc.)?
Yes, linkedTargetId works with any provider type. However, it's most useful for custom providers (Python, JavaScript, HTTP) since they don't have a stable identifier. Built-in providers (like openai:gpt-4) already have consistent IDs, so they're less likely to need manual linking.
Q: What happens if I remove linkedTargetId after using it?
The next eval will create a new target entry. Previous results remain under the linked target.
Q: Can I link to a target from a different organization?
No, targets are organization-scoped. You can only link to targets in your current organization.
Q: Do I need a new linkedTargetId for each eval?
No! Use the same linkedTargetId across all evals. That's the point - it consolidates results under one target.