Claude Adaptive Thinking vs Extended Thinking: What Changed
The way Claude thinks went through a generational change. The old extended thinking had you specify a token budget on every request — thinking: {"type": "enabled", "budget_tokens": N} — but the right budget differs per task and can't be guessed in advance, and changing it invalidates the prompt cache. The current adaptive thinking is one line, type: "adaptive": whether to think and how deeply is the model's own decision based on how hard the request looks. The migration was staged: budget_tokens was deprecated on Opus 4.6 / Sonnet 4.6 and is rejected with a 400 error from Opus 4.7 onward. This article condenses the per-model rules into one table — Fable 5 thinks always (cannot be disabled), Opus 5 and Sonnet 5 default to thinking on (on Opus 5, disabling is only allowed at effort high or below), Opus 4.8 / 4.7 require an explicit adaptive setting, and legacy models such as Sonnet 4.5 / Haiku 4.5 still use budget_tokens as their only mode. Depth control moved to output_config: {"effort": ...} with five levels (default high), and changing effort busts the cache the same way changing the budget used to. Visibility is governed by display: the new-generation default is "omitted" (empty thinking blocks), and you are billed for the full thinking tokens either way — measure with usage.output_tokens_details.thinking_tokens; no setting ever returns the raw chain of thought. Disabling thinking on Opus 5 carries documented side effects (tool calls written as plain text, internal tags leaking), so lowering effort is the safer cost lever. Interleaved thinking — reasoning between tool calls — is automatic under adaptive, with the old beta header no longer needed. And when you need speed, fast mode runs the same Opus at about 2.5x for 2x the price (Opus 5/4.8 only, toggled with /fast in Claude Code). Everything is grounded in Anthropic's official Thinking, Extended thinking, and Fast mode documentation.