Kipt

Ultrathink in Claude Code: what it does now, and effort levels explained

What ultrathink does in Claude Code today, how it differs from effort levels and extended thinking, how to toggle thinking, and when deep reasoning pays off.

By the Kipt team · Updated 24 October 2026

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 auto clears your saved level for the current model. In the slider, Enter saves the level as your default and s applies it to this session only.
  • /model: use the left and right arrow keys to move the effort slider while picking a model.
  • --effort: launch with claude --effort high for one session.
  • Environment variable: set CLAUDE_CODE_EFFORT_LEVEL to a level name or auto.
  • Settings: set a per-model level under modelSettings, or effortLevel as a default. Neither key accepts max.
  • Skill and subagent frontmatter: an effort field 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.

Questions

Does ultrathink still work in Claude Code?

Yes. Include ultrathink anywhere in a prompt and Claude Code recognizes it and adds an in-context instruction to reason more deeply on that turn. It does not change the effort level sent to the API or your session's effort setting.

Do think, think hard and think harder still do anything?

Not as keywords. Anthropic's model configuration docs say Claude Code passes phrases such as think, think hard and think more through as ordinary prompt text. Only ultrathink is recognized. The model can still respond to plain requests to reason carefully, within its effort level.

What is the difference between ultrathink and /effort max?

Ultrathink is a one-turn nudge added to your prompt; the effort level stays the same. /effort max changes the effort level for the rest of the session, and Claude Code applies max to the current session only unless you set it with the CLAUDE_CODE_EFFORT_LEVEL environment variable.

How do I see Claude's thinking in Claude Code?

Thinking output is collapsed by default. Press Ctrl+O to open the transcript viewer and see the reasoning as gray italic text. Interactive sessions on the Anthropic API get redacted thinking by default, so set showThinkingSummaries to true in settings if you want full summaries.

Can I turn extended thinking off?

On many models, yes: press Option+T on macOS or Alt+T on Windows and Linux for the session, or toggle it in /config. You can't turn thinking off on Opus 5.5, Sonnet 5.5, Haiku 5.5 or the Fable models; on those, lower the effort level instead.

More in Claude Code

All guides

Keep your prompts and skills in one place, in your own GitHub. Install every skill with one command.

Get started

Kipt is an independent product, not affiliated with or endorsed by Anthropic, OpenAI, Cursor or GitHub. Claude, ChatGPT, Codex, Cursor and GitHub are trademarks of their owners.