fix: provider headers from config not applied to fetch requests #11788
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixed #11789
When configuring custom headers (including User-Agent) for a provider or model in opencode.jsonc, the headers are not actually sent with the API requests.
For example, this configuration does not work:
{ "provider": { "myprovider": { "options": { "apiKey": "sk-xxx", "baseURL": "https://apis.iflow.cn/v1", "headers": { "user-agent": "MyCustomAgent/1.0" // custom user-agent } }, "models": { "my-model": { "headers": { "User-Agent": "MyCustomAgent/2.0" // custom user-agent (higher priority) } } } } } }In packages/opencode/src/provider/provider.ts, the getSDK function correctly merges model.headers into options["headers"]:
However, in the custom fetch function, opts.headers comes from the init parameter passed by the AI SDK, not from options["headers"]. This means the configured headers are never actually included in the request.
Solution
Update the custom fetch function to merge options["headers"] into opts.headers: