What is effort in Claude Code?
Effort is the setting that decides how hard Claude thinks before it acts. You change it with the /effort command inside a session or the --effort flag when you launch claude. Low effort is faster and cheaper for simple work; high effort reasons more deeply for hard problems.
Anthropic's model configuration docs describe it this way: effort levels "control adaptive reasoning, which lets the model decide whether and how much to think on each step based on task complexity." So effort is not a fixed token budget. It tells the model how much reasoning a step deserves, and the model decides from there.
That makes effort a second dial next to the model. The model sets how capable Claude is; effort sets how much of that capability it spends on each step.
Which effort levels can you use?
The levels on offer depend on the model. This is the table from the official docs as of October 2026:
| Model | Levels |
|---|---|
| Fable 5.1 and Fable 5 | low, medium, high, xhigh, max |
| Opus 5.5, Sonnet 5.5, Haiku 5.5, Opus 5, Sonnet 5, Opus 4.8 and Opus 4.7 | low, medium, high, xhigh, max |
| Opus 4.6 and Sonnet 4.6 | low, medium, high, max |
Models not listed don't support effort. If you pick a level the active model lacks, Claude Code uses the highest supported level at or below it, so xhigh runs as high on Opus 4.6.
The scale is also calibrated per model. The docs note that "the same level name does not represent the same underlying value across models," so medium on one model is not the same amount of thinking as medium on another.
What is the default effort level?
Each model has its own default:
mediumon Opus 5.5, Sonnet 5.5 and Haiku 5.5xhighon Opus 4.7highon every other model that supports effort
If your organization sets a default effort level for its organization default model, that level is the default when you run that model.
Opus 5.5 starting at medium is deliberate. Anthropic says that in its testing, "Opus 5.5 at medium matches or exceeds Opus 5 at high on coding and knowledge-work evaluations," and recommends starting at medium rather than carrying over the level you used on Opus 5. You can check the level in effect at any time: the session header shows it next to the model name, for example "with low effort", and /effort status prints it.
How do you change the effort level?
There are several ways, and they stack in a fixed order.
| Method | How | How long it lasts |
|---|---|---|
/effort slider |
Run /effort, pick a level, press Enter |
Saved as your default for that model |
/effort with s |
In the slider or /model picker, press s instead of Enter |
This session only (v2.1.257 or later) |
/effort <level> |
Type the level, such as /effort high |
Saved as your default for that model |
/model picker |
Left and right arrow keys move the effort slider | Same as the slider |
--effort flag |
claude --effort low |
That session |
| Environment variable | CLAUDE_CODE_EFFORT_LEVEL=high |
Wherever it is set |
| Settings | modelSettings per model, or effortLevel as a fallback |
Until you change the file |
A few rules worth knowing:
- Precedence. An explicit choice wins first, then your saved settings, then the model default. Among explicit choices, the environment variables reference says
CLAUDE_CODE_EFFORT_LEVELoverrides both--effortand/effort. The environment variables guide explains where to set it. - Per model. Claude Code saves the level you pick for each model under
modelSettingsin your user settings, so switching models brings back that model's own level. maxis temporary. Unless you set it throughCLAUDE_CODE_EFFORT_LEVEL,maxapplies to the current session only, and the settings keys don't accept it.- Reset.
/effort autoclears your saved level for the active model so it goes back to the default. - Mid-turn changes. You can run
/effortwhile Claude is working. The new level applies to the next request in the turn.
Which effort level should you use?
The official docs pair each level with a kind of work. Paraphrased:
| Level | Good for |
|---|---|
low |
Quick exchanges you review each time: brainstorming, a first sketch, a rename |
medium |
Day-to-day work with a clear scope, such as implementing a feature, on Opus 5.5 and Sonnet 5.5. On models with a higher default, a way to cut tokens for cost-sensitive work |
high |
Work where verification matters or edge cases are likely, such as fixing a bug in an existing codebase |
xhigh |
Deeper reasoning at higher token spend |
max |
Hard problems you want Claude to work through on its own, such as hunting for security vulnerabilities |
Anthropic adds a warning about the top level: max "may show diminishing returns and is prone to overthinking, so test before adopting it broadly."
In Anthropic's tests on Opus 5.5 and Fable 5.1, higher levels tested more edge cases, verified more work and made more choices on their own. Lower levels returned a starting point sooner, which suits work where you check each result and steer the next step.
A practical rule: if Claude missed something it could have found, such as a file it never opened or tests it didn't run, raise effort. If Claude had the context, clearly tried, and still got it wrong, a more capable model is the better fix. The models guide covers that choice.
How does effort affect cost and speed?
Effort is a direct lever on what a session costs. The costs page explains why: "Thinking tokens are billed as output tokens, and the default budget can be tens of thousands of tokens per request depending on the model." You pay for all thinking tokens, even when the thinking is collapsed in the terminal.
For simple tasks, lowering effort with /effort is the documented way to cut that spend. On Pro, Max, Team and Enterprise plans, the /usage breakdown can also recommend an effort change, such as switching from max to high, and on v2.1.305 or later pressing f runs those /effort commands for you.
Changing effort mid-session can cost you a cache rebuild. The prompt caching docs say that on most models, changing effort "means the next request reads the entire conversation history with no cache hits," and Claude Code asks you to confirm while the cache is warm. On Opus 5.5, Sonnet 5.5, Haiku 5.5 and Fable 5.1 with an API key or a Claude subscription, changing effort keeps the cache. That exception doesn't apply on Amazon Bedrock, Google Cloud's Agent Platform or a Claude apps gateway. The prompt caching guide has the full list of actions that break the cache.
How do effort and extended thinking relate?
On models with adaptive reasoning, effort is the main control for how much thinking happens. Fable models, Sonnet 5 and later, Haiku 5.5, and Opus 4.7 and later always use adaptive reasoning.
You can't turn thinking off at all on Opus 5.5, Sonnet 5.5, Haiku 5.5 or the Fable models. On other models, Option+T on macOS or Alt+T on Windows and Linux toggles thinking for the session, and /config sets the default.
MAX_THINKING_TOKENS only matters on models with a fixed thinking budget. Opus 4.6 and Sonnet 4.6 use one if you set CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1. Adaptive-reasoning models ignore a nonzero budget, so use effort there instead.
What does ultrathink do?
Include ultrathink anywhere in a prompt to ask for deeper reasoning on that one turn. Claude Code adds an in-context instruction, and the effort level sent to the API stays the same. Phrases such as "think hard" or "think more" are passed through as ordinary text, not keywords.
Ultracode is different. It appears as a toggle in the /effort slider, but the docs call it "a Claude Code setting rather than a model effort level." With it on, Claude plans a dynamic workflow for substantive tasks. claude --effort ultracode starts a session at xhigh with ultracode on, and /effort ultracode off turns it off.
Can skills, subagents and admins set effort?
Yes. A skill or subagent can set effort in its frontmatter, which overrides the session level while it runs but not the environment variable. A quick formatting skill can run at low while a security review skill runs at high.
---
name: security-review
description: Review the current diff for security problems
effort: high
---
Skills can also read the active level through the ${CLAUDE_EFFORT} substitution, and Bash commands and hooks see it in the CLAUDE_EFFORT environment variable.
To keep spend in check, the maxEffortLevel setting caps the level every session can use. Per the settings reference, when several scopes set a cap the lowest applies, so a cap in managed settings can't be raised elsewhere. Claude Enterprise admins can also set per-role effort caps for each model.
Keep the prompts that need high effort together
Some prompts only work well at a particular level: a thorough review prompt at high, a quick rename at low. Writing the level into the prompt or a skill's frontmatter saves you from remembering it. Kipt keeps prompts and Agent Skills as Markdown in a private GitHub repo you own, so a review prompt with a {{scope:current diff}} blank is a Cmd+K search away, and your skills install into Claude Code with one npx skills add command.
For the cost side in depth, see how to reduce Claude Code costs.