Claude Code thinking and effort levels, explained
Claude Code's effort levels, low to max, set how much Claude thinks before it acts. What each level is for, the defaults, ultrathink, and how to set it.
Contents
Short answer: Claude Code's effort level sets how much Claude reasons before it acts. On current models the levels are low, medium, high, xhigh and max. A higher level means more reasoning before each step. Set it with /effort, --effort or the effortLevel setting.
Names and defaults below are from Anthropic's model configuration docs, read on 22 October 2026. Check the page if a level is refused: model names and defaults can change with a release.
What effort changes#
Current Claude models think before they answer: they write out reasoning, then act. Effort controls how much of that they do. Anthropic's docs say "each level trades token spend against capability", and they describe each level by when to use it:
| Level | Anthropic's guidance |
|---|---|
low |
Quick exchanges where you review each result |
medium |
Default on Opus 5.5, Sonnet 5.5 and Haiku 5.5, for everyday work with a clear scope |
high |
Verification matters or edge cases are likely |
xhigh |
Deeper reasoning at higher token spend |
max |
Hard problems. "May show diminishing returns and is prone to overthinking" |
Not every model has every level. Fable, Opus 5.5, Sonnet 5.5, Haiku 5.5, Opus 5, Sonnet 5, Opus 4.8 and Opus 4.7 have all five. Opus 4.6 and Sonnet 4.6 have no xhigh. If you ask for a level the model lacks, Claude Code uses the highest one at or below it.
How thinking tokens are counted#
Thinking is output. Anthropic's cost docs say "thinking tokens are billed as output tokens, and the default budget can be tens of thousands of tokens per request depending on the model". The model-config page adds: "You are charged for all thinking tokens generated, even when collapsed or redacted." On a Pro or Max plan nothing is billed per token, and the same tokens count toward your 5-hour window and weekly limit.
Anthropic doesn't publish how many thinking tokens each level produces, and it varies with the task.
The defaults, and why yours might differ#
Claude Code picks the level in this order, first match wins:
- Something explicit: the
CLAUDE_CODE_EFFORT_LEVELenvironment variable, the--effortflag, or/effortin the session. - Your settings: a level saved for that model, or the
effortLevelkey. - The model's default:
highon models that support effort, exceptmediumon Opus 5.5, Sonnet 5.5 and Haiku 5.5 andxhighon Opus 4.7. An organisation can set its own default for its default model.
One trap: a top-level effortLevel in user settings doesn't apply to Opus 5.5, which starts at medium unless something higher in the list sets it. Use a per-model setting for Opus instead (below).
How to set it#
For this session:
claude --effort high
Or type /effort for a slider, or /effort xhigh to set it directly. In the slider, Enter saves the level as your default; s applies it to this session only. /effort auto clears your saved level for the current model.
As a default, in settings.json:
{
"effortLevel": "high",
"modelSettings": { "claude-opus-5-5": { "effortLevel": "xhigh" } }
}
modelSettings is keyed by the model's full name, and Claude Code matches its alias to the same entry (settings reference). Both keys take low, medium, high or xhigh; max isn't accepted there.
From the environment: export CLAUDE_CODE_EFFORT_LEVEL=high.
In a script: claude -p --effort low "…". With -p, /effort applies to that run only. Our headless mode guide has the other flags worth setting there.
For one skill or subagent: an effort field in its frontmatter overrides the session level while it runs, so a lookup agent can run on low inside a session on high.
Ultrathink, ultracode and "think hard"#
ultrathinkstill works. Put it anywhere in a prompt and Claude Code adds an instruction to reason more deeply on that turn. The effort level sent to the API doesn't change.- "think hard" and similar phrases are passed through as ordinary text, with no special handling.
ultracodeisn't an effort level. It's a Claude Code setting that plans a workflow for each substantial task.--effort ultracodeturns it on and sets effort toxhigh;/effort ultracode offturns it off.
Can you turn thinking off entirely? Not on Opus 5.5, Sonnet 5.5, Haiku 5.5 or Fable, which always think. On older models, /config or MAX_THINKING_TOKENS=0 does it.
In Shuriken#
Each chat in Shuriken has a Thinking picker next to the model, listing the levels that chat's model offers, so a quick chat can sit on Low while a hard one runs on High in the same project. If you lean on high effort and hit limits, hot swapping helps: Shuriken moves your chats to another of your accounts when one nears its limit (99% by default), inside the running chat. Only add accounts you own and are entitled to use; providers' terms may not allow sharing a subscription sign-in.
If you want effort set per chat rather than per terminal, download Shuriken.
Sources
- Claude Code docs: Model configuration (accessed 22 October 2026)
- Claude Code docs: Manage costs effectively (accessed 22 October 2026)
- Claude Code docs: CLI reference (accessed 22 October 2026)
- Claude Code docs: Settings reference (accessed 22 October 2026)
Frequently asked questions
What effort levels does Claude Code have?
On current models, low, medium, high, xhigh and max. Older models such as Opus 4.6 and Sonnet 4.6 have no xhigh. If you ask for a level the model doesn't support, Claude Code uses the highest one it supports at or below it.
What is the default effort in Claude Code?
As of 22 October 2026, medium on Opus 5.5, Sonnet 5.5 and Haiku 5.5, and high on other models that support effort, with Opus 4.7 at xhigh. Your organisation can set its own default.
Does ultrathink still work?
Yes. Put ultrathink anywhere in a prompt and Claude Code adds an instruction to reason more deeply on that turn. It doesn't change the effort level sent to the API, and phrases like think hard are treated as ordinary text.
Can a skill or subagent run at its own effort level?
Yes. An effort field in its frontmatter overrides the session's level while that skill or subagent runs, and the session goes back to its own level afterwards.
Can I turn thinking off in Claude Code?
Not on Opus 5.5, Sonnet 5.5, Haiku 5.5 or the Fable models, which always think. On older models you can turn it off in /config or with MAX_THINKING_TOKENS=0.