Claude Code guide: models and effort

Claude Code effort levels and how to switch model

Claude Code effort sets how much the model reasons before it answers: low, medium, high, xhigh or max, changed with /effort in a session or --effort at launch. To switch model, run /model inside a session or start with claude --model opus. Both save as your default from their pickers, with one exception: max effort lasts for the current session only.

Anthropic

On Claude Code

Model

Picked per run. Use the ids the engine itself reports rather than a list you keep, because a hardcoded catalog goes stale the day a new model ships and then silently hides it.

Reasoning effort

Set per run alongside the model. Not every model has one: a model with no thinking dial reports an empty set of levels, which is a real answer meaning none rather than a missing one.

The thinking budget is separate

How much the model may think, and whether you are shown that thinking, is a distinct control from effort. It has to be sent before the prompt, not with it. Sent afterwards it is accepted and then ignored by every model call in the turn, which looks exactly like it worked.

Context window

Claude reports the window it is actually using, so a usage bar built on it does not need a correction factor. Codex is the one that needs adjusting.

Do not hardcode the catalog

The model list is worth reading live every time. A stored copy is the failure mode that hides a newly released model from the picker while everything appears to work.

Models

How to switch model in Claude Code

You can set the model in five places. When more than one is set, the higher one on this list wins:

  1. In a session: /model opens the picker, /model <alias or name> switches immediately.
  2. At launch: claude --model <alias or name>.
  3. Environment: ANTHROPIC_MODEL=<alias or name>.
  4. Settings: the model field in settings.json.
  5. Default for new sessions: ANTHROPIC_DEFAULT_MODEL.
bash
claude --model opus
claude --model sonnet --effort high

In the /model picker, Enter switches and saves the model as your default, and s switches for this session only. Left and Right adjust the effort slider for the model you are choosing. /status shows which model the session is really on.

Aliases

Claude Code model aliases

Aliases follow the newest model in each family, so you rarely need a full model id. What each resolves to on the Anthropic API in Claude Code 2.1.309:

AliasWhat it means
defaultClears any override and uses your account default. On Pro, Max, Team, Enterprise and the API that is Opus 5.5.
opusOpus 5.5, for complex reasoning.
sonnetSonnet 5.5, for daily coding.
haikuHaiku 5.5, fast and cheap for simple tasks.
fableFable 5.1, for the hardest and longest tasks.
bestWhatever fable resolves to where Fable is available to you, otherwise the same as opus.
opusplanOpus while in plan mode, Sonnet once it starts executing.
opus[1m], sonnet[1m]The 1M token context variant. No effect on Opus 5.5 or Sonnet 5.5, which already run on a 1M window.

On Bedrock, Google Cloud and Foundry the same aliases can point at older models. Fable is not the default on any plan, and depending on your plan and seat it can bill to usage credits rather than your included limits. For plan mode itself, see Claude Code permission modes.

Effort

Claude Code effort levels and defaults

Effort trades tokens for depth. Lower levels answer faster and spend less; higher levels think longer and check more. The levels depend on the model:

ModelLevelsDefault
Opus 5.5, Sonnet 5.5, Haiku 5.5low, medium, high, xhigh, maxmedium
Fable 5.1, Fable 5, Opus 5, Sonnet 5, Opus 4.8low, medium, high, xhigh, maxhigh
Opus 4.7low, medium, high, xhigh, maxxhigh
Opus 4.6, Sonnet 4.6low, medium, high, maxhigh

Pick a level the model does not have and Claude Code uses the highest one below it, so xhigh runs as high on Opus 4.6. Anthropic notes that max shows diminishing returns and can overthink, so try it on the task before making it your habit.

Persistence

How to set effort, and make it stick

Effort comes from the first of these that is set:

  1. An explicit choice: the CLAUDE_CODE_EFFORT_LEVEL environment variable, --effort at launch, or /effort in the session.
  2. Your settings: a level saved for the model, or the effortLevel key.
  3. The model default from the table above.
bash
/effort              # open the slider
/effort high         # set it directly, saved as your default
/effort auto         # clear the saved level for this model
claude --effort low  # this session only

In the /effort slider, Enter saves the level as your default and s applies it to this session only. To pin a default in a file, use effortLevel in ~/.claude/settings.json:

json
{
  "model": "opus",
  "effortLevel": "xhigh"
}

max is the exception people trip over. Neither effortLevel nor the pickers save it; it lasts for the current session. The one way to keep it is the environment variable, for example export CLAUDE_CODE_EFFORT_LEVEL=max in your shell profile. While it is set, it also beats a saved effortLevel and the effort a skill or subagent asks for, so unset it when you want the pickers back in charge.

Thinking

Effort, thinking and ultrathink are different controls

  • Effort is sent with every request and decides how hard the model works on the whole session.
  • ultrathink anywhere in a prompt asks for deeper reasoning on that turn only. Claude Code adds an instruction to the context; the effort level sent to the API does not change.
  • Thinking on or off is a separate toggle: Option+T on macOS, Alt+T on Windows and Linux, or alwaysThinkingEnabled via /config. It cannot be turned off on Opus 5.5, Sonnet 5.5, Haiku 5.5 or the Fable models.

You are billed for thinking tokens even when the thinking is collapsed or hidden.

Limits

Effort, usage limits and fast mode

Effort is one of the two dials you control for how quickly a subscription runs down; the model is the other. Every level above the one you need spends tokens on reasoning the task did not require, so a sensible pattern is the default for normal work, /effort low or medium for renames, tests and boilerplate, and xhigh or max for the one hard bug. /usage (also /cost) shows session cost and what is contributing to your limits. Switching to sonnet or haiku for routine work has the same effect.

/fast is not an effort level. It runs Opus 5.5, Opus 5 or Opus 4.8 up to 2.5 times faster at a higher per-token price, with the same quality. On Pro, Max, Team and Enterprise it bills to usage credits only, never to your included limits, and Team and Enterprise need an Owner to enable it. Do not turn it on to save usage; it does the opposite.

Termdeck

Model and effort per chat in Termdeck

Termdeck runs the real Claude Code CLI on your machine, so the models and levels are the ones your installed version offers. The message box has a model picker and a thinking level picker for each chat, and the level list comes from the model itself, so a model without an effort dial says so and a new model arrives with its own levels. Defaults for new chats live in Settings, then General, and each chat can change its own afterwards.

Each chat keeps its own model and effort, so one chat can grind on a hard bug at a high level while another runs routine work on a cheaper model, on the same machine or different ones. The sessions docs cover the pickers, and the Codex CLI models and effort guide covers the other engine.

Compare

Model and reasoning controls by engine

FeatureClaude CodeCodex CLIGrok CLI
Pick a modelYesYesYes
Reasoning effortYesYes, per modelYes, per model
Separate thinking budgetYesNoNo
Where the level list comes fromThe engineThe model catalogThe initialize handshake
Reports its context windowYesYes, larger than usableYes, and it is accurate
Auto compactionYesYesAt 85 percent of the window

Termdeck drives all three from one console, so the differences above stop being three separate habits to remember.

FAQ

Claude Code models and effort, answered

How do I switch model in Claude Code?

Run /model inside a session to open the picker, or /model sonnet to switch straight away. At launch, use claude --model with an alias such as opus, sonnet, haiku or fable, or a full model name. In the picker, Enter saves the model as your default and s switches for this session only.

What are the Claude Code effort levels?

low, medium, high, xhigh and max on the current Claude 5 and Fable models. Opus 4.6 and Sonnet 4.6 have no xhigh. A level the model does not offer runs at the nearest one below it, and models without effort support ignore it.

What is the default effort in Claude Code?

Opus 5.5, Sonnet 5.5 and Haiku 5.5 default to medium. Other models that support effort default to high, except Opus 4.7, which defaults to xhigh. Running /effort auto clears a saved level so the model default applies again.

How do I make max effort persist?

Set the environment variable CLAUDE_CODE_EFFORT_LEVEL=max before starting Claude Code. Picking max with /effort or --effort applies to the current session only, and the effortLevel key in settings.json accepts low, medium, high or xhigh but not max.

Does lower effort help with usage limits?

Lower effort spends fewer tokens per turn, so routine work at medium or low uses your plan more slowly than the same work at xhigh or max. The official docs describe lower effort as faster and cheaper and note that max can overthink. Run /usage to see what is drawing on your limits.

What is the difference between effort and ultrathink?

Effort is a setting sent with every request. Typing ultrathink in a prompt asks for deeper reasoning on that one turn by adding an instruction to the context, and leaves the effort level sent to the API unchanged.

Which model does Claude Code use by default?

On Pro, Max, Team, Enterprise and the Anthropic API the default is Opus 5.5. Run /status to see the model a session is actually on.