Extended thinking and reasoning effort: when to spend it

Reasoning effort is a dial that trades tokens and latency for depth. It is worth a great deal on a small class of problems and pure waste on everything else, which makes leaving it at the top an expensive habit rather than a careful one.

By the Continuum team. We build a workbench that runs Claude Code, Codex, and their peers, so the model rates quoted here are the ones our own cost analytics ship with.

The short version

Extended thinking is the reasoning a model emits before answering, and it is billed as output tokens. Claude Code exposes it as an effort level: low, medium, high, xhigh, and max on current models, defaulting to high. Set it with /effort, the --effort flag, CLAUDE_CODE_EFFORT_LEVEL, the effortLevel setting, or skill and subagent frontmatter. Higher effort pays on large search spaces and wastes money on mechanical work.

What you need to know
  • Effort trades tokens and latency for depth of reasoning.
  • The thinking itself is billed as output tokens, the expensive category.
  • The default is high on every model that supports effort. Haiku 4.5 does not.
  • ultrathink in a prompt requests deeper reasoning for that turn only.
  • The scale is calibrated per model, so high is not one fixed amount of thinking.

What the dial actually does

At higher effort the model produces more internal reasoning before committing: considering alternatives, checking its own logic, exploring consequences. That reasoning is real work, and it is billed as output tokens whether or not you ever see it.

Current models use adaptive reasoning, which makes thinking optional on each step rather than a fixed budget spent every turn. The model can answer a routine prompt quickly and reserve deliberation for the steps that benefit. Effort sets how freely it may do that.

Levels by model, per Claude Code documentation in August 2026.

ModelLevels available
Opus 5, Sonnet 5, Fable 5low, medium, high, xhigh, max
Opus 4.8, Opus 4.7low, medium, high, xhigh, max
Opus 4.6, Sonnet 4.6low, medium, high, max
Haiku 4.5Not supported. Setting a level does nothing
  • The default is high on every model that supports effort, except Opus 4.7 which defaults to xhigh.
  • Set a level the active model does not support and Claude Code falls back to the highest supported level at or below it. xhigh runs as high on Opus 4.6.
  • low, medium, high, and xhigh persist across sessions when set interactively. max applies to the current session only, unless set through the environment variable.
  • The effort scale is calibrated per model. The same level name does not represent the same underlying amount of reasoning across two models, so re-tune when you switch.
  • On Enterprise plans an administrator can cap the maximum level per model per role. A higher level then runs at the cap, with a warning in interactive sessions and silently in JSON output.

The five places you can set it

Listed from lowest priority to highest.
# 1. settings file: accepts low, medium, high, xhigh only
#    { "effortLevel": "medium" }

# 2. skill or subagent frontmatter: applies while that skill or agent runs
#    effort: low

# 3. in session
/effort              # interactive slider
/effort xhigh        # set directly
/effort auto         # back to the model default
/model               # left and right arrows move the effort slider here too

# 4. at launch, for one session
claude --effort high

# 5. environment variable: outranks everything above
export CLAUDE_CODE_EFFORT_LEVEL=medium

The current level is shown in the session header next to the model name, as "with low effort" or similar, so you can confirm what is active without opening anything.

ultrathink, for one turn

Include the word ultrathink anywhere in a prompt to request deeper reasoning on that turn without changing your session setting. Claude Code recognises the keyword and adds an in-context instruction; the effort level sent to the API is unchanged.

ultracode, which is not an effort level

The /effort menu also offers ultracode. It is a Claude Code setting rather than a model level: it sends xhigh to the model and has Claude orchestrate a dynamic workflow for substantive tasks. It applies to the current session only, and neither the persisted effortLevel setting nor CLAUDE_CODE_EFFORT_LEVEL accepts it. Requires Claude Code v2.1.203 or later.

Turning thinking off, and where you cannot

ControlHow
Toggle for this sessionOption+T on macOS, Alt+T on Windows and Linux
Set the global default/config, saved as alwaysThinkingEnabled
Disable regardless of effortMAX_THINKING_TOKENS=0 on the Claude API
See the reasoningCtrl+O toggles verbose mode

On Opus 4.6 and Sonnet 4.6 you can set CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 to revert to the older fixed thinking budget controlled by MAX_THINKING_TOKENS. Fable 5, Sonnet 5, and Opus 4.7 and later always use adaptive reasoning, so neither that variable nor a nonzero budget applies to them: use effort levels instead.

When it pays and when it does not

TaskEffortWhy
Rename a symbol across 30 fileslowNo decisions to make
Write tests to a stated speclowPattern-following
Generate commit messages in a looplowLatency is the cost that matters
Add a feature you described preciselymediumSome judgement, bounded
Fix a bug you already locatedmediumSmall search space
A bug that survived one attempthighThe first approach was wrong
Choose an architecturehigh or xhighA wrong direction is very expensive
Understand an unfamiliar systemhighReasoning across many parts
A subtle concurrency or data bugxhighExactly what deliberation is for

Anthropic own guidance on max is unusually blunt and worth repeating: it can improve performance on demanding tasks, but it shows diminishing returns and is prone to overthinking, so test it before adopting it broadly. high is described as the balance point, and xhigh as the deeper option for coding and agentic work.

What it costs

Thinking tokens are output tokens, which are the most expensive category on every model. Output is priced five times input across the Claude lineup, so effort is a multiplier on the costliest part of a request.

Output rates per million tokens, checked August 2026. Sonnet 5 is on introductory pricing through 31 August 2026.

ModelOutput rateEffort supported
Haiku 4.5$5.00No
Sonnet 5$10.00 (then $15.00)To max
Opus 5$25.00To max
Fable 5$50.00To max, and thinking cannot be disabled

The other cost is attention. Higher effort means noticeably longer before the first token, and on a task where you were going to read and correct the output anyway, latency you spend waiting is not obviously better than latency you spend iterating.

A routing habit that works

  1. Leave it at the default. high is the balance point and it is already selected.
  2. Drop to low the moment a task turns mechanical, which often happens partway through: once a decision is made, applying it across thirty files is not a thinking problem.
  3. Escalate on evidence. One failed attempt is the signal, not a suspicion that something might be hard.
  4. Escalate for the plan, not the implementation. High effort deciding the approach and the default executing it is the best value pairing available, and opusplan automates the model half of the same idea.
  5. Pin it in frontmatter for work that always has the same shape: effort: low on a mechanical migration subagent, effort: xhigh on a review skill.

Questions people ask

The reasoning a model emits before committing to an answer, considering alternatives and checking its own logic. It is billed as output tokens, the most expensive category, and you are charged for it even when the terminal collapses or redacts it.

On Opus 5, Sonnet 5, Fable 5, Opus 4.8, and Opus 4.7: low, medium, high, xhigh, and max. Opus 4.6 and Sonnet 4.6 omit xhigh. Haiku 4.5 does not support effort at all. The default is high everywhere except Opus 4.7, which defaults to xhigh.

Run /effort for a slider, /effort xhigh to set it directly, or /effort auto to reset. You can also launch with --effort, set CLAUDE_CODE_EFFORT_LEVEL, put effortLevel in settings, or set effort in skill and subagent frontmatter. The environment variable wins over all of them.

Yes, for one turn. Claude Code recognises the word anywhere in a prompt and adds an in-context instruction requesting deeper reasoning. The effort level sent to the API is unchanged. "think hard" and similar phrases are ordinary text and do nothing.

No. On mechanical work with a complete specification it produces the same answer more slowly and at several times the cost. Anthropic own guidance is that max shows diminishing returns and is prone to overthinking, so test before adopting it broadly.

Press Option+T on macOS or Alt+T elsewhere for the session, toggle it in /config to set the default, or set MAX_THINKING_TOKENS=0 on the Claude API. None of these work on Fable 5, where thinking is always on.

Architecture decisions, bugs that survived one attempt, unfamiliar systems, and subtle concurrency or data problems. All four have large search spaces where most plausible actions are wrong, which is the condition deliberation is for.

The idea is the same and the names overlap. Codex exposes model_reasoning_effort with low, medium, high, and xhigh, set in config.toml or overridden per run. The scales are not comparable across vendors any more than they are across Claude models.

Sources

Every figure above was read from these pages on August 2026. Vendors reprice without notice; if you find a stale number, tell us.

  1. Claude Code: model configuration
  2. Anthropic pricing
  3. Codex configuration reference
Try it

Effort, as
a chip.

Continuum surfaces model and reasoning effort per session and reports what each combination actually cost.

free app · your subscriptions · local-first