Bedrock: CLAUDE_CODE_EFFORT_LEVEL=high does not set output_config.effort=max at API level
Summary
When CLAUDE_CODE_EFFORT_LEVEL is set to high, Claude Code does not translate this to output_config.effort: "max" in the API request body for Opus 4.6 / Sonnet 4.6 on Bedrock. Instead, the literal string "high" is sent, which is not a valid API value. The Anthropic Messages API expects "max", "high", or "low" in output_config.effort, but for adaptive thinking models, "max" provides the deepest reasoning and is what users setting CLAUDE_CODE_EFFORT_LEVEL=high likely intend.
Evidence from Proxy Logs
Every single request in my session shows the proxy upgrading high → max:
[#74] thinking: effort->max (was high) | cache: 1bp(tools,1h,pre=2,upg=2)
[#76] thinking: effort->max (was high) | cache: 1bp(tools,1h,pre=3,upg=3)
[#78] thinking: effort->max (was high) | cache: 1bp(tools,1h,pre=3,upg=3)
[#84] thinking: effort->max (was high) | cache: 1bp(tools,1h,pre=3,upg=3)
[#89] thinking: effort->max (was high) | cache: 1bp(tools,1h,pre=3,upg=3)
[#92] thinking: effort->max (was high) | cache: 1bp(tools,1h,pre=3,upg=3)
This pattern is consistent across all requests — both main REPL (Opus) and subagent (Sonnet) requests.
Current Config
{
"env": {
"CLAUDE_CODE_EFFORT_LEVEL": "high"
}
}
Expected Behavior
When CLAUDE_CODE_EFFORT_LEVEL=high is set and the model supports adaptive thinking (Opus 4.6, Sonnet 4.6):
- The API request should contain
"output_config": {"effort": "max"} - Or: CC should support
CLAUDE_CODE_EFFORT_LEVEL=maxas a valid value that maps to the API's"max"effort level
Actual Behavior
The API request contains "output_config": {"effort": "high"}, leaving reasoning depth below maximum. For users who explicitly opt into high effort, they most likely want the deepest reasoning available (max).
Proposed Solution
Either:
- Map
high→maxat the API level for adaptive thinking models (Opus 4.6, Sonnet 4.6) - Support
maxas a valid effort level inCLAUDE_CODE_EFFORT_LEVELenv var and the UI effort picker - Document the difference between UI effort levels and API effort levels so users can make informed choices
Environment
- Claude Code version: 2.1.76
- Provider: AWS Bedrock
- Models affected: Opus 4.6, Sonnet 4.6 (adaptive thinking models)
- Config:
CLAUDE_CODE_EFFORT_LEVEL=highin~/.claude/settings.json - Analysis method: Local reverse proxy intercepting all API request bodies
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗