Description
V1 lets a model opt out of Anthropic thinking block binding with blockBinding: false (#46820). After moving to V2, that opt-out does nothing, so endpoints that reject the field fail again:
thinking.adaptive.block_binding: Extra inputs are not permitted
The V2 config migration copies thinking.blockBinding into the model settings, but V2 decides from compatibility.supportsThinkingBlockBinding and never reads the setting. Model.Compatibility also doesn't declare that field yet, so it's dropped from config either way.
#48793 covers this in the protocol layer but no longer applies to v2. #51864 and #52172 add the compatibility field but don't touch the V1 config path.
Plugins
None
OpenCode version
2.0.18 (also current v2)
Steps to reproduce
-
Use a legacy (provider) config for an Anthropic-compatible endpoint that rejects block_binding, with the V1 opt-out on a Claude 5.1+ model:
{
"provider": {
"gateway": {
"npm": "@ai-sdk/anthropic",
"options": { "baseURL": "https://gateway.example.com/v1" },
"models": {
"claude-opus-5-5": {
"options": { "thinking": { "type": "adaptive", "blockBinding": false } }
}
}
}
}
}
-
opencode run -m gateway/claude-opus-5-5 "hi"
-
The request fails with thinking.adaptive.block_binding: Extra inputs are not permitted. The same config works on V1.
Screenshot and/or share link
N/A
Operating System
Linux
Terminal
N/A (opencode run)
Description
V1 lets a model opt out of Anthropic thinking block binding with
blockBinding: false(#46820). After moving to V2, that opt-out does nothing, so endpoints that reject the field fail again:The V2 config migration copies
thinking.blockBindinginto the model settings, but V2 decides fromcompatibility.supportsThinkingBlockBindingand never reads the setting.Model.Compatibilityalso doesn't declare that field yet, so it's dropped from config either way.#48793 covers this in the protocol layer but no longer applies to
v2. #51864 and #52172 add the compatibility field but don't touch the V1 config path.Plugins
None
OpenCode version
2.0.18 (also current
v2)Steps to reproduce
Use a legacy (
provider) config for an Anthropic-compatible endpoint that rejectsblock_binding, with the V1 opt-out on a Claude 5.1+ model:{ "provider": { "gateway": { "npm": "@ai-sdk/anthropic", "options": { "baseURL": "https://gateway.example.com/v1" }, "models": { "claude-opus-5-5": { "options": { "thinking": { "type": "adaptive", "blockBinding": false } } } } } } }opencode run -m gateway/claude-opus-5-5 "hi"The request fails with
thinking.adaptive.block_binding: Extra inputs are not permitted. The same config works on V1.Screenshot and/or share link
N/A
Operating System
Linux
Terminal
N/A (
opencode run)