# 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.

Source: https://shuriken.sh/guides/claude-code-effort-levels

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.

By Shuriken Updated 27 October 2026 4 min read

**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](https://code.claude.com/docs/en/model-config), 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](https://code.claude.com/docs/en/costs) 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](https://shuriken.sh/guides/claude-5-hour-limit-explained) 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_LEVEL environment variable, the --effort flag, or /effort in the session.
- Your settings: a level saved for that model, or the effortLevel key.
- The model's default: high on models that support effort, except medium on Opus 5.5, Sonnet 5.5 and Haiku 5.5 and xhigh on 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).

Shuriken runs your coding agents on your own computers and keeps them going when an account hits its limit.

[Download](https://shuriken.sh/download)

## How to set it #

For this session:

bash
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:

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](https://code.claude.com/docs/en/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](https://shuriken.sh/guides/claude-code-headless-mode) 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" #

- ultrathink still 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.
- ultracode isn't an effort level. It's a Claude Code setting that plans a workflow for each substantial task. --effort ultracode turns it on and sets effort to xhigh; /effort ultracode off turns 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](https://shuriken.sh/download).

Share

[X](https://x.com/intent/post?url=https%3A%2F%2Fshuriken.sh%2Fguides%2Fclaude-code-effort-levels&text=Claude%20Code%20thinking%20and%20effort%20levels%2C%20explained)[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fshuriken.sh%2Fguides%2Fclaude-code-effort-levels)[Hacker News](https://news.ycombinator.com/submitlink?u=https%3A%2F%2Fshuriken.sh%2Fguides%2Fclaude-code-effort-levels&t=Claude%20Code%20thinking%20and%20effort%20levels%2C%20explained)[Reddit](https://www.reddit.com/submit?url=https%3A%2F%2Fshuriken.sh%2Fguides%2Fclaude-code-effort-levels&title=Claude%20Code%20thinking%20and%20effort%20levels%2C%20explained)[E-mail](mailto:?subject=Claude%20Code%20thinking%20and%20effort%20levels%2C%20explained&body=https%3A%2F%2Fshuriken.sh%2Fguides%2Fclaude-code-effort-levels)

## Sources

- [Claude Code docs: Model configuration](https://code.claude.com/docs/en/model-config) (accessed 22 October 2026)
- [Claude Code docs: Manage costs effectively](https://code.claude.com/docs/en/costs) (accessed 22 October 2026)
- [Claude Code docs: CLI reference](https://code.claude.com/docs/en/cli-reference) (accessed 22 October 2026)
- [Claude Code docs: Settings reference](https://code.claude.com/docs/en/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.

Shuriken

The harness for your coding agents.

Run Claude Code, Codex and Gemini CLI on your own computers, move chats to your next account at a limit, and follow every chat from any device.

[Download](https://shuriken.sh/download)

[Other platforms](https://shuriken.sh/download#main)

## Keep reading

- [Opus vs Sonnet for coding: which Claude model to use: Guide 27 Oct 2026 6 min read Opus vs Sonnet for coding: Sonnet 5.5 for well-scoped work, Opus 5.5 for long or open-ended jobs. Opus costs twice as much per token; judge it per task.](https://shuriken.sh/guides/opus-vs-sonnet-for-coding)
- [How to change the model in Claude Code: Guide 27 Oct 2026 3 min read Change the model in Claude Code with /model, claude --model, an environment variable or settings.json. /model wins; Enter in its picker sets your default.](https://shuriken.sh/guides/change-model-in-claude-code)
- [Claude Code API Error 400 on tool_use: what to do: Guide 27 Oct 2026 4 min read A Claude Code API Error 400 about tool use means the saved history has a tool call out of step with its result. Update, then rewind past the broken turn.](https://shuriken.sh/guides/claude-code-api-error-400-tool-use)
- [Claude Code custom slash commands: make your own: Guide 27 Oct 2026 3 min read Make your own Claude Code slash commands: one Markdown file in .claude/commands or a skill, with arguments, shell output and allowed tools. With examples.](https://shuriken.sh/guides/claude-code-custom-slash-commands)
- [Claude Code chat history deleted? Set cleanupPeriodDays: Guide 27 Oct 2026 5 min read Claude Code deletes session transcripts after 30 days by default. Raise cleanupPeriodDays in settings.json to keep them, and back up what you can't lose.](https://shuriken.sh/guides/claude-code-history-deleted-after-30-days)
- [Claude Code hooks not working? Why they don't fire: Guide 27 Oct 2026 6 min read A Claude Code hook that never fires is either not loaded (missing from /hooks) or loaded with a matcher that matches nothing. The causes and their fixes.](https://shuriken.sh/guides/claude-code-hooks-not-working)
- [Claude Code keyboard shortcuts and commands cheat sheet: Guide 27 Oct 2026 5 min read Every Claude Code keyboard shortcut worth knowing, for Mac and Windows, plus the slash commands that matter. One page, checked against Anthropic's docs.](https://shuriken.sh/guides/claude-code-keyboard-shortcuts)

## Free tools

- [Claude limit reset tracker](https://shuriken.sh/tools/limit-resets/claude)
- [Codex limit reset tracker](https://shuriken.sh/tools/limit-resets/codex)
