[BUG] 400 "output_config.effort 'xhigh' is not supported when thinking is disabled" on Opus 4.8 despite alwaysThinkingEnabled: true (VS Code, 2.1.205–2.1.207)

Open 💬 5 comments Opened Jul 11, 2026 by NormikRoma

Bug description

On Claude Opus 4.8 with effortLevel: "xhigh", requests intermittently fail with:

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.

This happens despite alwaysThinkingEnabled: true in settings.json (key verified to exist against claude-code-settings.schema.json shipped with the extension). It looks like the client omits thinking: {type: "adaptive"} in some requests while still sending effort: "xhigh", which the API rejects.

Environment

  • Claude Code: 2.1.205 → 2.1.207 (error reproduced across both)
  • Entrypoint: VS Code extension (claude-vscode), Windows 11 Home
  • Model: Claude Opus 4.8 (subscription)
  • settings.json: effortLevel: "xhigh", alwaysThinkingEnabled: true (both schema-valid)
  • Env: CLAUDE_EFFORT=xhigh

Frequency / evidence

Counted from session transcripts (~/.claude/projects/*/*.jsonl), matching only synthetic API-error records ("isApiErrorMessage":true + the error text), main thread only:

  • 13 error events total: 7 on 2026-07-09, 6 on 2026-07-11, across 7 different sessions
  • All events have isSidechain: false (main conversation loop); 0 events in subagent transcripts — subagents never hit this
  • 3 of the 13 records share an identical timestamp within one session (likely one event recorded three times, or instant retries)

Expected

With alwaysThinkingEnabled: true (or absent, per its schema description: "When absent or true, thinking is enabled automatically for supported models"), every request on Opus 4.8 with effort: xhigh should include thinking: {type: "adaptive"} and succeed.

Actual

Some main-loop requests run without thinking and get rejected with the 400 above. Behavior is intermittent within the same session and across sessions started with identical config.

Possibly related

  • Changelog v2.1.203: "Fixed background sessions ignoring effortLevel changes in settings.json when forked through the daemon" — same class (effort/thinking config not propagated), shipped right before this started for me (first event 2026-07-09 on 2.1.205)
  • #65863 (400 thinking options type cannot be disabled when reasoning_effort is set)
  • #68567 (thinking.disabled.display: Extra inputs are not permitted on subagent spawns)

Workarounds found

  • Switch to a model where thinking cannot be disabled (Fable 5): error is architecturally impossible there, confirmed gone after switching mid-session
  • Or drop to effortLevel: "high" on Opus 4.8 (error only fires on xhigh)

View original on GitHub ↗

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