Ultrathink is a keyword you can put anywhere in a Claude Code prompt to ask for deeper reasoning on that one turn. According to Anthropic's model configuration docs, Claude Code "recognizes the keyword and adds an in-context instruction," and "the effort level sent to the API is unchanged." For lasting control over how much Claude thinks, the main setting today is the effort level.
That is a change from how many older posts describe it. This page covers what ultrathink does now, how effort levels and the thinking toggle work, and when each is worth using. Everything here was checked against code.claude.com/docs on 24 October 2026.
What does ultrathink do in Claude Code today?
Type it anywhere in the prompt:
ultrathink: the checkout total is off by one cent for some carts. Find the cause before changing anything.
Claude Code spots the word and adds an instruction asking Claude to reason more deeply on that turn. Three details matter:
- It lasts one turn. Your session's effort setting does not change.
- It is an instruction, not a budget. The effort level sent to the API stays the same, so ultrathink nudges Claude within its current setting.
- It is the only keyword. The docs say Claude Code "passes other phrases such as 'think', 'think hard', and 'think more' through as ordinary prompt text and doesn't recognize them as keywords."
Ultrathink also works inside a skill. The skills docs say that to request deeper reasoning when a skill runs, you include ultrathink anywhere in the skill content. That is useful for a review or debugging skill that should always reason carefully.
What are effort levels, and how do they relate to thinking?
Extended thinking is the reasoning Claude produces before it answers. Current models use what Anthropic calls adaptive reasoning: the model decides on each step whether to think and how much, based on the task. The effort level is the main dial for that. Lower effort is faster and cheaper; higher effort reasons more deeply.
Available levels depend on the model:
| Model | Effort levels | Default |
|---|---|---|
| Opus 5.5, Sonnet 5.5, Haiku 5.5 | low, medium, high, xhigh, max |
medium |
| Fable 5.1, Fable 5, Opus 5, Sonnet 5, Opus 4.8 | low, medium, high, xhigh, max |
high |
| Opus 4.7 | low, medium, high, xhigh, max |
xhigh |
| Opus 4.6, Sonnet 4.6 | low, medium, high, max |
high |
If you pick a level the model doesn't support, Claude Code falls back to the highest supported level below it, so xhigh runs as high on Opus 4.6. The docs also note that the scale "is calibrated per model, so the same level name does not represent the same underlying value across models." On Opus 5.5 specifically, Anthropic says that in its testing, "Opus 5.5 at medium matches or exceeds Opus 5 at high on coding and knowledge-work evaluations."
How do you change the effort level?
You have several options, from quick to permanent:
/effort: run it alone for a slider, or with a level such as/effort high./effort autoclears your saved level for the current model. In the slider,Entersaves the level as your default andsapplies it to this session only./model: use the left and right arrow keys to move the effort slider while picking a model.--effort: launch withclaude --effort highfor one session.- Environment variable: set
CLAUDE_CODE_EFFORT_LEVELto a level name orauto. - Settings: set a per-model level under
modelSettings, oreffortLevelas a default. Neither key acceptsmax. - Skill and subagent frontmatter: an
effortfield applies while that skill or subagent runs.
max is special: unless you set it through the environment variable, Claude Code applies it to the current session only. The session header shows the active level next to the model name, for example "with low effort," so you can confirm it at a glance.
The /effort slider also has an Ultracode toggle. The docs describe it as "a Claude Code setting rather than a model effort level": with it on, Claude plans a dynamic workflow for substantive tasks at whatever effort level you run. Despite the similar name, it is a separate feature from the ultrathink keyword.
How do you turn thinking on, off, or make it visible?
These controls come from the extended thinking section of the docs:
| Control | How |
|---|---|
| Toggle for this session | Option+T on macOS, Alt+T on Windows and Linux |
| Global default | /config, toggle thinking mode (saved as alwaysThinkingEnabled) |
| Disable with an environment variable | MAX_THINKING_TOKENS=0 (no effect on Opus 5.5, Sonnet 5.5, Haiku 5.5 or Fable models) |
| See the reasoning | Ctrl+O opens the transcript viewer |
| Full summaries instead of redacted | showThinkingSummaries: true in settings |
You can't turn thinking off on Opus 5.5, Sonnet 5.5, Haiku 5.5 or the Fable models. On those, the toggle shows "Thinking can't be turned off," and the model decides per step how much to think based on effort. To spend less there, lower the effort level.
On Opus 4.6 and Sonnet 4.6 only, setting CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 switches back to a fixed thinking budget controlled by MAX_THINKING_TOKENS. Newer models always use adaptive reasoning.
When should you use ultrathink, and when a higher effort level?
The docs give a guide for each level:
| Level | Good fit |
|---|---|
low |
Brainstorming, a first sketch, a rename |
medium |
Day-to-day work with a clear scope, such as a new feature (default on Opus 5.5, Sonnet 5.5 and Haiku 5.5) |
high |
Bug fixes in existing code, where edge cases are likely |
xhigh |
Deeper reasoning at higher token spend |
max |
Hard problems you want Claude to work through alone, such as finding security vulnerabilities |
The docs warn that max "may show diminishing returns and is prone to overthinking, so test before adopting it broadly."
A simple rule follows from this. Use ultrathink when one prompt in an otherwise routine session needs care: a tricky bug, a design trade-off, a plan you will act on. Use /effort when the whole session is hard, such as a long debugging hunt or an audit. Pair ultrathink with plan mode when you want Claude to reason through an approach before it touches files.
Ultrathink is not a fix for a vague prompt. A specific prompt with a test Claude can run, as our Claude Code tips describe, usually does more than extra reasoning on an unclear task.
Does ultrathink cost more?
Thinking is not free. The costs docs state: "Thinking tokens are billed as output tokens." The model configuration page adds that "you are charged for all thinking tokens generated, even when collapsed or redacted." A turn where Claude reasons longer uses more of them, which counts against your plan limits or API bill. Our Claude Code pricing guide covers how plans and usage work.
Longer reasoning also takes space in the conversation. If a session is getting full, see the context window guide for /context and /compact.
How do you reuse prompts that need deep reasoning?
If you keep typing the same "ultrathink, find the root cause before editing" brief, save it once. Kipt keeps prompts like that as Markdown in a private GitHub repo you own, with {{name}} blanks for the bug or file, so the full brief is a Cmd+K search away. For a brief you want Claude to use on its own, the SKILL.md generator turns it into a skill, and ultrathink can live inside the skill body.