Certopolis

Claude Certified Architect – Foundations

Claude effort vs adaptive thinking: what each one controls

thinking decides whether Claude reasons in thinking blocks; effort decides how much work Claude puts into the whole response. With adaptive thinking, Claude chooses when and how deeply to think, and output_config.effort (low, medium, high, xhigh or max) is the recommended way to steer that depth.

Two separate controls

thinking: {"type": "adaptive"} lets Claude decide per request whether to think and for how long. adaptive is a thinking mode, not an effort level, so output_config: {"effort": "adaptive"} is invalid.

Effort applies to every output token: text, tool calls and thinking. Lower effort means less thinking, fewer and terser tool calls, and lower cost. It is a behavioural signal, not a strict token budget. Most models default to high; Claude Opus 5.5 and Claude Haiku 5.5 default to medium. Not every model that supports max supports xhigh, which is meant for agentic and coding tasks running over 30 minutes.

Which thinking settings each model accepts

On Claude Opus 5, Claude Sonnet 5 and later models, adaptive thinking is on with no configuration. On Claude Opus 4.8, 4.7, 4.6 and Claude Sonnet 4.6, thinking is off until you send thinking: {"type": "adaptive"}.

The older manual mode, thinking: {"type": "enabled", "budget_tokens": N}, returns a 400 on Claude Opus 5, Sonnet 5, Opus 4.8 and Opus 4.7. It still works but is deprecated on Claude Opus 4.6 and Sonnet 4.6, and it is the only option on Claude Opus 4.5, Sonnet 4.5 and Haiku 4.5, where adaptive returns a 400. On Claude Opus 5, thinking: {"type": "disabled"} works only at high effort or below.

Display, billing and caching

The display field sets what comes back. "summarized" returns a summary of the reasoning. "omitted", the default on the newest models, returns thinking blocks with an empty thinking field and a signature. Thinking tokens are billed as output either way, so omitting them speeds up time to first text token when streaming but does not cut cost.

The thinking configuration and effort level are part of the rendered prompt. Changing either at the top level between requests starts a new cache prefix, so keep them constant within a cached conversation.

Where the exam catches people

  • Believing adaptive is an effort value: it is a thinking type, and the effort levels are low, medium, high, xhigh and max.
  • Believing budget_tokens still works on every model: it returns a 400 on Claude Opus 5, Sonnet 5, Opus 4.8 and Opus 4.7.
  • Believing display: "omitted" saves money: the full thinking is still billed as output; the gain is latency.
  • Believing effort only affects thinking: it affects text and tool calls too, and works with thinking off.

Written from Anthropic's documentation

Try 3 questions on this

Pick an answer to see why each option is right or wrong.

  1. Your batch service on Claude Opus 5 (claude-opus-5) never shows reasoning to end users. An engineer proposes thinking: {"type": "adaptive", "display": "omitted"} on every request, and you ask what the setting actually saves on the bill and on latency before it ships. How should you evaluate this proposal?

    Right. In the game that’s Renown for your Prompt Engineering, Structured Output and Retrieval building.

    Not that one: A is right. In the game your Prompt Engineering, Structured Output and Retrieval building would lose a little Renown, and this question would come back later.

    Show the full explanation and doc quotes

    ` the thinking blocks come back with an empty `thinking` field, but the model still reasons and the full thinking tokens are still billed as output. The documented benefit is faster time to first text token when streaming, because the server skips streaming thinking tokens and delivers only the signature.

    Written from platform.claude.com/docs/en/build-with-claude/thinking

  2. You want Claude Sonnet 5 (claude-sonnet-5) to decide per request how deeply to reason, and you write output_config: {"effort": "adaptive"} on the request. The API rejects the value. What is the most likely root cause?

    Right. In the game that’s Renown for your Prompt Engineering, Structured Output and Retrieval building.

    Not that one: B is right. In the game your Prompt Engineering, Structured Output and Retrieval building would lose a little Renown, and this question would come back later.

    Show the full explanation and doc quotes

    The effort documentation warns explicitly not to pass adaptive as an effort value.

    Written from platform.claude.com/docs/en/build-with-claude/effort

  3. You maintain a shared prompting library used against several Claude models. One code path still sends thinking: {type: "enabled", budget_tokens: 8000}. On Claude Sonnet 4.6 (claude-sonnet-4-6) requests succeed, but the identical call against Claude Opus 5 (claude-opus-5) returns 400. What is the most likely root cause?

    Right. In the game that’s Renown for your Prompt Engineering, Structured Output and Retrieval building.

    Not that one: D is right. In the game your Prompt Engineering, Structured Output and Retrieval building would lose a little Renown, and this question would come back later.

    Show the full explanation and doc quotes

    Adaptive thinking with output_config.effort is the replacement.

    Written from platform.claude.com/docs/en/build-with-claude/thinking