Troubleshooting · effort × thinking

is not supported when thinking is disabled
xhigh / max plus thinking off is 400; 2.1.251 sends high instead

Claude Code 2.1.251 (2026-08-28) fixed Opus 5 requests that failed when effort was xhigh/max and thinking was off. The literal is effort … is not supported when thinking is disabled. In that combo the client now sends effort high. API docs still say: Opus 5 may disable thinking at high and below; xhigh or max plus thinking off returns 400.

#is not supported when thinking is disabled#xhigh / max#Claude Code 2.1.251#HTTP 400

Four facts you can quote

is not supported when thinking is disabled

The substring people search

Full sentence often: output_config.effort 'xhigh' is not supported when thinking is disabled on this model. That half-sentence matches the changelog and issues.

xhigh / max

The levels that cannot stack with thinking disabled

Thinking docs on platform.claude.com: Opus 5 allows thinking: {type: "disabled"} at effort high and below. xhigh or max plus thinking off is 400.

2.1.251

Claude Code fix train

Changelog 2026-08-28: Fixed Opus 5 requests failing with that literal when effort was xhigh/max and thinking was turned off; effort is now sent as high in that case.

400

Not a quota 429

The parameter combo is rejected. Not weekly limit, not Credit balance is too low. Retrying the same body stays 400.

Effort and thinking are two knobs

Anthropic’s help center: effort is how thorough each reply is; thinking is whether reasoning appears in an expandable block first. Combinations exist, not every combination. Opus 5 thinks by default; the API allows thinking off at high and below; above that the interface rejects. Fable 5 / Mythos-class models reject thinking disabled entirely.

Why the client emitted an illegal combo

GitHub issues since Opus 4.8: alwaysThinkingEnabled: true and effortLevel: xhigh, yet some requests omit thinking while still sending xhigh, hence 400. 2.1.251’s fix is client-side: send high in that case — not a lesson in swapping HTTP headers to beat validation. Validation stays on the API.

Timeline

From 2026-07 (issue trail)

anthropics/claude-code#76689 and siblings record the 400 literal output_config.effort 'xhigh' is not supported when thinking is disabled on this model.

Docs as fetched 2026-08

Thinking docs: Opus 5 may disable thinking at high and below; xhigh/max plus off is 400. Fable 5 / Mythos 5 reject thinking disabled.

2026-08-28 · 2.1.251

Claude Code changelog calls the failure a bug and fixes it by sending effort high. Same release adds PreModelSwitch. Upgrading the client does not make the API accept xhigh+disabled.

Confirmed vs mix-up

Confirmed

Substring, 400, xhigh/max mutually exclusive with thinking disabled, 2.1.251 client sends high, Opus 5 may disable thinking at high and below — changelog and platform docs, rechecked 2026-08-30.

Common mix-ups

“This is quota empty” — status 400, copy talks effort/thinking. “2.1.251 lets you keep max with thinking off” — the fix downshifts to high, it does not lift the mutex. “Change headers and it passes” — this page states official combos only; it does not describe beating parameter checks.

Thinking off vs keeping effort

Must disable thinking: drop effort to high or below

Documented combo: thinking disabled + high/medium/low. Claude Code 2.1.251 sends high if you picked xhigh/max and turned thinking off. Raw API callers change output_config.effort themselves.

Must keep xhigh / max: enable thinking

xhigh/max needs thinking on (Opus 5 and later models with this cap). Fable 5 cannot turn thinking off, so this 400 should not appear there per the docs.

What to do (official combo; no platform switch required)

Check the literal contains is not supported when thinking is disabled. Then check whether effort is xhigh/max and thinking is disabled. Pick one: lower effort, or turn thinking on. Upgrade Claude Code to 2.1.251+ so the client stops sending the illegal combo. This page does not describe forging thinking fields or bypassing capability checks.

This 400 is not a QCode balance error

is not supported when thinking is disabled is upstream rejecting a parameter combo. QCode forwards sold models at official price × service fee; it does not turn an illegal effort/thinking pair legal. Opus 5 has real calls in the usage table. Fix the body; do not hunt a hidden switch that skips the check.

FAQ

What does the full error look like?

Often: API Error: 400 output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking. Match on is not supported when thinking is disabled.

Still upgrade after 2.1.251?

Yes. Older clients can still emit xhigh + thinking off. After upgrade the client sends high; raw API callers must still avoid the mutex.

Does Sonnet 5 do this too?

Docs list per model whether thinking can be off. Opus 5 explicitly allows off at high and below and 400 above. Copy that sentence onto other ids only if their row says so.

Why does alwaysThinkingEnabled: true still fail?

Issues describe the client omitting the thinking block while still sending xhigh. That is a client-bug trail; 2.1.251 downshifts. Do not assume the setting equals thinking on every request.

Related to monthly cap / credits?

No. Those are 429 without retry-after or prepaid credits at zero. This is a 400 parameter rejection.

Will QCode rewrite xhigh to high?

This page does not claim the gateway rewrites your effort. Legal combos follow Anthropic docs. 2.1.251’s rewrite is in the official client, not a reseller promise.

Sources

Claude Code changelog 2.1.251 (2026-08-28) fix line and literal. Thinking docs https://docs.claude.com/en/docs/build-with-claude/thinking.md and platform.claude.com effort/thinking notes (rechecked 2026-08-30). Literal sample: anthropics/claude-code#76689. Help center: Change the model, effort, and thinking settings.

Fix the parameter combo before you rotate keys

The 400 is xhigh/max + thinking disabled. Upgrade to Claude Code 2.1.251, or drop effort / enable thinking per the docs. Sold models still bill at official price × service fee.

Related

Reading of the Claude Code changelog and Anthropic public docs, not a promise about a given client build. Trust the 400 body you received and current docs. QCode does not bypass model parameter checks.