v2.1.116 fails with Bedrock: output_config.effort not permitted
Status Fixed / completed
Reported on v2.1.116
Maintainer reply ✓ Yes — mhegazy
Workaround ✓ Mentioned in thread ↓
Activity 10 comments · opened Apr 20, 2026 · closed Apr 22, 2026
💡 Likely answer: A maintainer (mhegazy, contributor)
responded on this thread — see the highlighted reply below.
Description
Claude Code v2.1.116 fails immediately on any input when using Amazon Bedrock.
Error Message
API Error: 400 output_config.effort: Extra inputs are not permitted
Environment
- Claude Code version: 2.1.116
- API: Amazon Bedrock (enterprise)
- OS: WSL2 Ubuntu on Windows
Steps to Reproduce
- Start a new Claude Code session with Bedrock enabled
- Type any input (even just "test")
- Error appears immediately
Workaround
v2.1.114 works correctly. Users can run the older version directly:
~/.local/share/claude/versions/2.1.114
Or alias it:
alias claude='~/.local/share/claude/versions/2.1.114'
Notes
- Sessions started before the update (on v2.1.114) continue to work
- Only new sessions on v2.1.116 are affected
- The
output_config.effortparameter appears to be related to extended thinking and is rejected by Bedrock's API validation
10 Comments
This is a clean regression boundary: same Bedrock deployment path, newer Claude Code version, immediate failure on any prompt because the client is sending a parameter the Bedrock side rejects. The error text is especially useful because it points to a concrete schema mismatch rather than a vague connectivity problem.
That makes this less about Bedrock generally and more about client compatibility discipline. If v2.1.114 works and v2.1.116 fails on the same enterprise setup, then the newer client likely started emitting request shape that Bedrock does not accept.
From the operator perspective, this is severe because it blocks the entire product at input 1. Enterprise users do not get degraded quality or a missing feature, they get a dead-on-arrival upgrade.
Looking at the v2.1.116 release notes, this is likely related to:
The
output_config.effortparameter is probably how Claude Code now communicates thinking effort level to the API for these new progress indicators. Bedrock's API validation appears to reject this parameter.Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
This appears related to #50100 but in the opposite direction:
output_config.effort(Claude Code wasn't sending it)output_config.effort(Claude Code now sends it)The fix for 4.7 appears to have broken 4.5 on Bedrock. The parameter may need to be conditionally sent based on model version.
Also related to #30760 (closed) - same underlying issue of
effortparameter being sent to models that don't support it. That fix addressed model switching; this appears to be the same parameter now being sent unconditionally on session startup.This is a recurring regression. Same issue occurred in v2.1.68 (#30795) with Sonnet 4.5 on Bedrock GovCloud -
effortparameter sent to models that don't support it.Pattern: updates that add/modify thinking features break Bedrock deployments where the model version doesn't support the new parameters.
This also affects subagent dispatches in mixed-model workflows, not just session startup.
When the parent session runs on Opus (which accepts
effort), subagents dispatched withmodel: haikuin their agent definition frontmatter inherit the effort setting and immediately fail with400 output_config.effort: Extra inputs are not permitted. The subagent never starts — it bombs on the first API call.Reproduction path:
model: haiku(e.g. agent definition frontmatter or inline)output_config.effortto Haiku endpoint → 400This is distinct from the global session scenario in the OP because the parent model supports effort — it's the per-subagent model resolution that needs to conditionally strip it.
The workaround is to avoid Haiku entirely and run those agents on Sonnet, but that defeats the cost optimisation of using Haiku for trivial tasks.
#51059 proposes a
modelEffortblock in settings.json which would be the proper declarative fix for this. At minimum, Claude Code should stripoutput_config.effortfor models that don't support it, regardless of the global setting.Previously reported as #30795 (v2.1.68, Sonnet 4.5 on GovCloud) — same root cause, now resurfacing on Haiku.
Thanks for flagging. Fix should be in the upcomming v2.1.117 release
Confirmed. This is fixed for my use case. No longer getting 400 errors.
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.