Bedrock: CLAUDE_CODE_EFFORT_LEVEL=high does not set output_config.effort=max at API level

Resolved 💬 3 comments Opened Mar 10, 2026 by KevinZhao Closed Mar 13, 2026

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 highmax:

[#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=max as 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:

  1. Map highmax at the API level for adaptive thinking models (Opus 4.6, Sonnet 4.6)
  2. Support max as a valid effort level in CLAUDE_CODE_EFFORT_LEVEL env var and the UI effort picker
  3. 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=high in ~/.claude/settings.json
  • Analysis method: Local reverse proxy intercepting all API request bodies

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗