The way Claude "thinks" has changed shape dramatically over the past year. The old extended thinking worked by having a human specify how many tokens the model could spend reasoning. The current generation replaces it with adaptive thinkingthe model itself decides whether to think and how deeply. And with Claude Opus 5, thinking is now on by default, so even the old assumption that "no configuration means no thinking" belongs to the past.

This article walks through what actually separates extended thinking from adaptive thinking, how behavior differs model by model, and the traps that catch people migrating code — 400 errors, truncated output, and bills that quietly go up. Everything is grounded in Anthropic's official documentation.

THINKING: EXTENDED → ADAPTIVE

From "the human sets the depth" to "the model decides"

The generational change in three steps

EXTENDED THINKING (OLD)
budget_tokens: 10000
A human specifies the thinking budget
ADAPTIVE THINKING (CURRENT)
type: "adaptive"
Whether and how much to think is the model's call
OPUS 5 AND LATER
Thinking on by default
Depth is tuned with effort now
Source: Anthropic documentation, "Thinking" and "Extended thinking" (as of August 2026)

1. What thinking is

Thinking is the stage where Claude works through the problem in its own words before it starts writing the final answer. It restates the question, tries several approaches, checks intermediate results, and abandons paths that don't hold up — and that process is generated as thinking content blocks ahead of the response. The payoff is biggest on tasks where the quality of the intermediate work decides the quality of the answer: math, coding, analysis, and long-running agentic work.

It isn't free, though. As Anthropic's "Thinking" documentation states plainly, the tokens Claude spends reasoning are billed as output tokens and count toward max_tokens — and the billing is the same even in configurations where the thinking text is never returned to you (see section 6). Designing your thinking setup is as much a cost and latency question as a quality question.

2. The extended thinking era — you set budget_tokens

The first incarnation was extended thinking. You attach thinking: {"type": "enabled", "budget_tokens": N} to the request, and Claude reasons against that budget before answering. A human specifies how much to think, on every request. Per the official documentation, the rules are:

  • Minimum 1,024 tokens. The API rejects smaller values
  • Must be less than max_tokens — thinking counts toward it, so room has to be left for the answer
  • The budget is a target, not a strict cap. Actual usage varies by task, and Claude often finishes thinking well before the budget runs out
  • For thinking budgets above 32,000, Anthropic recommends batch processing to avoid timeouts

The problem with this design is straightforward: the right budget differs per task, and a human can't guess it in advance. Simple questions can burn the budget you allotted; hard problems can starve on it. And changing the budget value invalidates your prompt cache — the documentation demonstrates this with a measured example.

3. The shift to adaptive thinking — the model decides

That is what adaptive thinking, introduced in 2026, replaces. The configuration is a single line: thinking: {"type": "adaptive"}. Whether to think, and how deeply, is Claude's own decision based on how hard the request looks. Easy inputs get an instant answer with thinking skipped; hard problems get deep reasoning.

The migration followed the schedule laid out in Anthropic's "Extended thinking" documentation: budget_tokens was deprecated on Claude Opus 4.6 / Sonnet 4.6 (it still works there), and models from Claude Opus 4.7 onward reject it with a 400 error. Point old code at a new model and it stops with this:

# Old: extended thinking (400 error on Opus 4.7 and later)
"thinking": {"type": "enabled", "budget_tokens": 10000}
→ 400: "thinking.type.enabled" is not supported ...

# New: adaptive thinking (depth is set via effort)
"thinking": {"type": "adaptive"},
"output_config": {"effort": "high"}

The rewrite itself is small — delete budget_tokens, switch to adaptive, and hand depth control to effort. But as the documentation warns, this is a behavioral change, not just a syntax change. With a fixed budget, Claude thought on every request; with adaptive thinking, at lower effort settings it may skip thinking entirely on easy inputs.

4. How each model handles thinking, at a glance

The tricky part is that "is it on by default?" and "can it be turned off?" differ per model. Here is the official documentation condensed into one table.

Model If you configure nothing Disabling thinking budget_tokens
Claude Fable 5 / Mythos 5 Thinking on (always) Not possible (400) Not possible (400)
Claude Opus 5 Thinking on (adaptive) Only at effort high or below
Combined with xhigh / max: 400
Not possible (400)
Claude Sonnet 5 Thinking on (adaptive) Allowed Not possible (400)
Claude Opus 4.8 / 4.7 No thinking (enable with explicit adaptive) Allowed Not possible (400)
Claude Opus 4.6 / Sonnet 4.6 No thinking (enable with explicit adaptive) Allowed Deprecated (still works)
Sonnet 4.5 / Haiku 4.5 and older No thinking — (off is the default anyway) Required (the only thinking mode; adaptive returns 400)

Source: Anthropic, "Thinking" and "Extended thinking" (as of August 2026)

Two things matter in practice. First, the default flipped to "thinking on" with the Opus 5 generation — if you were running a job cheaply on Opus 4.8 with thinking off and you change only the model ID, output tokens grow by the thinking share, and answers get cut off at max_tokens or the bill goes up (covered in detail in our guide to Opus 5's breaking changes). Second, only the legacy models keep using budget_tokens — as long as you stay on Sonnet 4.5 or earlier there is nothing to migrate; rewrite when you move to a newer model.

5. Depth is now tuned with effort

With the "budget" gone, thinking depth is adjusted through output_config: {"effort": ...} — five levels, low / medium / high / xhigh / max, with high as the API default. Effort shapes more than thinking depth: it also affects how consolidated tool calls are and how much preamble you get, i.e. overall token spend.

low / medium

Routine jobs, classification, subagents. May skip thinking on easy inputs = fast and cheap

high (default) to xhigh

high for general work; xhigh is Anthropic's recommended starting point for coding and agents

max

For problems where being right beats cost. Not always the best result, so don't pin it

What the five levels mean, the Claude Code slider, and how settings persist are covered in our guide to the effort setting. One caching note from the documentation: in adaptive mode, the effort value is rendered into the prompt, so changing it invalidates the prompt cache — the same shape as "changing the budget busts the cache" in the extended-thinking era. Don't flip it back and forth mid-conversation.

6. You pay for thinking even when you can't see it

How thinking looks from the outside is controlled by the display field. It takes two values:

  • "summarized" — the thinking block carries a readable summary of the reasoning. Default on Claude Opus 4.6 / Sonnet 4.6 and earlier
  • "omitted" — the thinking block comes back with an empty string inside. Default on Fable 5 / Mythos 5 / Opus 5 / Sonnet 5 / Opus 4.8 / 4.7

Two traps live here. First, the newer the model, the more the default leans toward "don't show it" — move an app that streamed the reasoning to users onto a new model, and the experience turns into a long silence followed by a sudden answer. If you want it visible, say so explicitly: thinking: {"type": "adaptive", "display": "summarized"}. Second, display changes visibility only — billing is identical. The documentation is explicit: with omitted you are still charged for the full thinking tokens; what you save is latency, not cost. And in no configuration do you get the raw chain of thought — what summarized shows is a summary.

Measuring what thinking costs you: the response field usage.output_tokens_details.thinking_tokens reports how many billed output tokens were internal reasoning. When streaming, it appears only on the final message_delta event. "I can't see thinking" never means "it isn't happening" — check this field after migrating.

One more thing that matters in practice: handling of thinking blocks. In multi-turn conversations and tool use, pass the previous response's thinking blocks back completely unmodified. Editing them triggers a 400 — the "invalid signature in thinking block" error Claude Code users run into comes from exactly this mechanism.

7. The traps of turning thinking off

"We care about speed, let's turn thinking off" is a legitimate call — but on Opus 5 it comes with conditions. Per the official documentation:

✅ Allowed

Thinking off + effort low / medium / high

❌ 400 error

Thinking off + effort xhigh / max (checked per request)

🔧 Recommended

Don't turn it off — lower effort to low / medium instead

Even when the request goes through, there are side effects. Anthropic documents that with thinking disabled, Opus 5 can write tool calls out as body text (the tool never runs while the turn still looks successful) and can leak internal XML tags into the output. If you are building agents, keeping thinking on and lowering effort is the safe path — and it cuts cost in roughly the same direction anyway.

8. Thinking between tool calls — interleaved thinking

Thinking isn't only "once, before the answer." With interleaved thinking, Claude also reasons between tool calls, weighing each tool result before deciding the next move — revising the plan after reading search results, choosing the next command after reading the output of the last one. It is the machinery behind good agentic behavior.

There is a generational difference here too. In the old extended-thinking world this required the beta header interleaved-thinking-2025-05-14; with adaptive thinking it is automatic and the header is unnecessary (the documentation states that "adaptive thinking interleaves automatically" and says you can drop the header after migrating). Moving to adaptive thinking simplifies your code by one more setting.

9. When you need speed: fast mode

If you want the quality of thinking but less waiting, the option is fast mode. Per the Claude Code documentation on fast mode, this is not a downgrade to a different model: it runs the same Claude Opus in a speed-first configuration. Output is up to about 2.5x faster and the price doubles ($10 in / $50 out per million tokens on both Opus 5 and Opus 4.8). It is available on Opus 5 and Opus 4.8 only; fast mode for Opus 4.7 was removed on July 24, 2026.

In Claude Code: /fast

Type /fast in the CLI to toggle it (the VS Code extension doesn't support it). The official guidance: on for interactive rapid iteration, off when cost matters more than latency.

On the API: research preview

Claude API only — not available on Amazon Bedrock, Google Cloud, or Microsoft Foundry. Also note that switching speed invalidates the prompt cache.

Thinking, effort, and fast mode play different roles: thinking = the mechanism for whether to reason, effort = how deeply to reason, fast mode = how fast the same reasoning is delivered. Before you reach for "it's slow, kill thinking," remember you hold two other cards: lower the effort, or turn on fast mode.

Summary

  • Extended thinking (budget_tokens) is the old way. Deprecated on Opus 4.6 / Sonnet 4.6, a 400 error from Opus 4.7 onward — and still the only thinking mode on legacy models (Sonnet 4.5 / Haiku 4.5, etc.)
  • Adaptive thinking is the current way. The model decides whether and how much to think; depth is tuned with effort (five levels, default high)
  • Opus 5 / Sonnet 5 / Fable 5 have thinking on by default. Fable 5 can't turn it off; Opus 5 can only at effort high or below
  • You pay for thinking even when it's invisible. The new-generation default is display: "omitted" (empty thinking blocks). Measure with usage.output_tokens_details.thinking_tokens
  • Turning thinking off has side effects (tool calls as text, tag leakage). Lowering effort is safer than disabling
  • Interleaved thinking is automatic with adaptive — the beta header is no longer needed
  • Need speed? Fast mode (about 2.5x, 2x price, Opus 5/4.8; toggle with /fast in Claude Code)

FAQ

Q. I set budget_tokens and got a 400 error.

A. Models from Opus 4.7 onward (including Opus 5 / Sonnet 5 / Fable 5) do not accept thinking: {"type": "enabled", "budget_tokens": N}. Rewrite it as thinking: {"type": "adaptive"} and control depth with output_config: {"effort": ...}. If you stay on legacy models like Sonnet 4.5 / Haiku 4.5, no rewrite is needed.

Q. After switching to adaptive thinking, answers get cut off mid-sentence.

A. Thinking tokens count toward max_tokens. Opus 5 in particular has thinking on by default, so code that sized max_tokens tightly for an older model now loses budget to thinking and truncates the answer. Give max_tokens more headroom, or lower the effort.

Q. The thinking blocks come back empty. Is something broken?

A. That's the spec. On Opus 5 / Sonnet 5 / Fable 5 / Opus 4.8 / 4.7, the display default is "omitted" (empty thinking blocks). To see the summary, set thinking: {"type": "adaptive", "display": "summarized"} explicitly. Billing is identical either way.

Q. If I turn thinking off, do I save that money?

A. You save the thinking tokens themselves. But on Opus 5 it can't be combined with effort xhigh/max (400 error), and even when it works, Anthropic documents side effects: tool calls written as plain text and internal tags leaking into output. For agent workloads, keeping thinking on and dropping effort to low / medium cuts cost more safely.

Q. Do I need to configure thinking in Claude Code (or the chat apps)?

A. No — Claude Code and claude.ai manage thinking for you, so there are no API parameters to set. What you can touch is the effort setting and /fast (the fast mode toggle); the thinking on/off mechanics never surface.

Note: the specifications and figures in this article are based on Anthropic's documentation "Thinking", "Extended thinking", and the Claude Code documentation "Fast mode" (all as of August 2026). Specifications change; check the official docs for the current wording before you build on them.