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.
- Effort trades tokens and latency for depth of reasoning.
- The thinking itself is billed as output tokens, the expensive category.
- The default is
highon every model that supports effort. Haiku 4.5 does not. ultrathinkin a prompt requests deeper reasoning for that turn only.- The scale is calibrated per model, so
highis 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.
| Model | Levels available |
|---|---|
| Opus 5, Sonnet 5, Fable 5 | low, medium, high, xhigh, max |
| Opus 4.8, Opus 4.7 | low, medium, high, xhigh, max |
| Opus 4.6, Sonnet 4.6 | low, medium, high, max |
| Haiku 4.5 | Not supported. Setting a level does nothing |
- The default is
highon every model that supports effort, except Opus 4.7 which defaults toxhigh. - Set a level the active model does not support and Claude Code falls back to the highest supported level at or below it.
xhighruns ashighon Opus 4.6. low,medium,high, andxhighpersist across sessions when set interactively.maxapplies 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
# 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
| Control | How |
|---|---|
| Toggle for this session | Option+T on macOS, Alt+T on Windows and Linux |
| Set the global default | /config, saved as alwaysThinkingEnabled |
| Disable regardless of effort | MAX_THINKING_TOKENS=0 on the Claude API |
| See the reasoning | Ctrl+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
| Task | Effort | Why |
|---|---|---|
| Rename a symbol across 30 files | low | No decisions to make |
| Write tests to a stated spec | low | Pattern-following |
| Generate commit messages in a loop | low | Latency is the cost that matters |
| Add a feature you described precisely | medium | Some judgement, bounded |
| Fix a bug you already located | medium | Small search space |
| A bug that survived one attempt | high | The first approach was wrong |
| Choose an architecture | high or xhigh | A wrong direction is very expensive |
| Understand an unfamiliar system | high | Reasoning across many parts |
| A subtle concurrency or data bug | xhigh | Exactly 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.
| Model | Output rate | Effort supported |
|---|---|---|
| Haiku 4.5 | $5.00 | No |
| Sonnet 5 | $10.00 (then $15.00) | To max |
| Opus 5 | $25.00 | To max |
| Fable 5 | $50.00 | To 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
- Leave it at the default.
highis the balance point and it is already selected. - Drop to
lowthe 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. - Escalate on evidence. One failed attempt is the signal, not a suspicion that something might be hard.
- Escalate for the plan, not the implementation. High effort deciding the approach and the default executing it is the best value pairing available, and
opusplanautomates the model half of the same idea. - Pin it in frontmatter for work that always has the same shape:
effort: lowon a mechanical migration subagent,effort: xhighon 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.