Effort, Thinking, and Fallback
Effort
The effort levels are low, medium, high, xhigh, and max.
A level the model does not accept runs as the highest accepted level below it.
The effort cost index scales the cost of a level against high, which is 1.
It comes from the catalog (
claude-opus-4-7 has the default xhigh and no index. Other models not listed have no default effort in the catalog.
| Item | Status | What it does |
|---|---|---|
-- | Documented: An official docs page names this item. | Sets the effort for a session. ultracode sets xhigh and turns on the workflow mode. |
CLAUDE_ | Documented: An official docs page names this item. | Sets the effort. It wins over --, /, and settings. auto uses the model default. |
effort, max, model | Documented: An official docs page names this item. | Settings for the default level and a cap. |
output_ | Documented: An official docs page names this item. | The request field that carries the level. Since 2., when the server refuses it, the request goes again without it, and it stays off for that model until the process ends (the program). |
per- | Undocumented: Only the program shows this item. It can change without notice. | A beta that lets some models take the effort with each message. |
ultrathink | Documented: An official docs page names this item. | A word in a prompt that asks for deeper thinking on that turn only. Since 2., in the interactive terminal on the Anthropic API, it runs the turn at xhigh effort on Opus 5.5, Sonnet 5.5, Haiku 5.5, and Fable 5.1. Typed while Claude is working, it raises the rest of that turn. The rainbow on the word shows only where it can raise effort (see the note below). |
| Default effort | Documented: An official docs page names this item. | The default is high, except medium for Opus 5.5, Sonnet 5.5, and Haiku 5.5, and xhigh for Opus 4.7. |
| Cache warning | Undocumented: Only the program shows this item. It can change without notice. | Since 2., the dialog Switch model? or Change effort level? says This conversation is cached for the current model. the new value in bold means the full history gets re- (the program, chunk-, :). The old text ended with on your next message. |
| Effort note in the prompt | Undocumented: Only the program shows this item. It can change without notice. | The prompt shows the level and /. Since 2., it shows may wait for your next message in place of / only while the request has not yet carried the shown level (see the note below). |
| Spinner effort | Undocumented: Only the program shows this item. It can change without notice. | The spinner adds the text with <level> effort. Since 2., the level is the one the request carried (see the note below). |
Source for ultrathink: the Claude Code changelog and the program.
These four models are the ones whose catalog entry has the capability per_turn_effort (chunk-dmakgjeg.js:207, :423, :712, :805).
At submit, chunk-8qajn51r.js:4138 sets the turn effort to xhigh. A prompt typed during a turn gets the same level (chunk-qw7sm5zw.js:3626).
The gate that decides whether a model can take the boost is chunk-r1ht672j.js:18693. The prompt colors the word only when it passes (chunk-xnjmsx7r.js:54917).
Source for the cache warning, the prompt note, and the spinner: the program and the 2.1.312 release notes.
The text of the prompt note did not change in 2.1.312. Only the flag changed.
In 2.1.311, the flag was true after a step key press while Claude was working, on a model that passes the per-turn check, and it cleared when Claude stopped (chunk-xnjmsx7r.js:57759, :57763, :59815, :60285).
Since 2.1.312, the flag is true when the request sent a level, no turn effort is set, the sent level differs from the shown level, and the model passes the per-turn check (chunk-7ss0ryz6.js:60684).
The note clears when one of these stops being true. The program then removes the effort-level notification (chunk-7ss0ryz6.js:60697).
The program builds the prompt text at chunk-7ss0ryz6.js:11353.
The request puts its level in output_config.effort (chunk-r5cyd28m.js:136925). The request sends it with the stream start (chunk-r5cyd28m.js:140243).
The program stores it as the sent level (chunk-7ss0ryz6.js:97569, :97576).
The spinner reads the sent level first (chunk-zgj89n5s.js:1465). It uses the resolved level only when the program stores no sent level (chunk-8h49xv0g.js:1512-1516).
In 2.1.311, the spinner function took no sent level (chunk-a4650erw.js:1503-1507).
id | Default effort | Index (low, medium, high, xhigh, max) |
|---|---|---|
claude- | high | 0.6, 0.77, 1, 1.74, 1.91 |
claude- | high | 0.75, 0.86, 1, 1.38, 1.74 |
claude- | medium | 0.38, 0.52, 1, 2.03, 4.34 |
claude- | high | 0.75, 0.86, 1, 1.38, 1.74 |
claude- | xhigh | none |
claude- | high | 0.72, 0.9, 1, 1.65, 1.88 |
claude- | high | 0.67, 0.76, 1, 1.6, 1.7 |
claude- | medium | 0.48, 0.66, 1, 1.66, 3.44 |
claude- | high | 0.47, 0.74, 1, 2.41, 5.59 |
claude- | medium | 0.49, 0.54, 1, 1.87, 5.5 |
Thinking
Sources: Model Configuration and Environment Variables.
| Item | Status | What it does |
|---|---|---|
thinking: | Documented: An official docs page names this item. | Lets the model choose how long it thinks. Newer models always use it. |
MAX_ | Documented: An official docs page names this item. | Sets a fixed thinking budget. 0 turns thinking off on the Anthropic API. It cannot turn thinking off on Opus 5.5, Sonnet 5.5, Haiku 5.5, and the Fable models. |
CLAUDE_ | Documented: An official docs page names this item. | Returns to the fixed budget on Opus 4.6 and Sonnet 4.6. It has no effect on newer models. |
CLAUDE_ | Documented: An official docs page names this item. | Omits the thinking field, for proxies that reject it. |
always, show | Documented: An official docs page names this item. | Settings for thinking. Option+T or Alt+T toggles it. |
-- | Undocumented: Only the program shows this item. It can change without notice. | This flag is hidden and works in print mode. enabled equals adaptive. |
-- | Undocumented: Only the program shows this item. It can change without notice. | This flag is hidden. It sets how thinking text comes back. |
-- | Undocumented: Only the program shows this item. It can change without notice. Deprecated: The program or the official docs call this deprecated. Use --thinking | This flag is hidden and deprecated. Use --. |
Fallback and Retries
Sources: Model Configuration and Error Reference: Automatic Retries.
| Item | Status | What it does |
|---|---|---|
--, fallback | Documented: An official docs page names this item. | A chain of up to three models for overload and server errors. |
CLAUDE_ | Undocumented: Only the program shows this item. It can change without notice. | Forbids the substitution of a model. |
CLAUDE_ | Documented: An official docs page names this item. | The number of retries. The default is 10. The maximum is 15. |
CLAUDE_ | Documented: An official docs page names this item. | Retries 429 and 529 errors without end and removes the cap. Off by default. Since 2., CLAUDE_ keeps only that part. Since 2., it no longer retries a 429 or 529 that the API marked not to retry with the header x- (chunk-). This holds in watchdog mode too. A rate-limit header with the value fetch_ still allows a retry. |
CLAUDE_, CLAUDE_ | Documented: An official docs page names this item. | The start wait and the longest wait after a 529. The defaults are 500 and 32000. |
API_ | Documented: An official docs page names this item. | The request timeout. The default is 600000. |
CLAUDE_, CLAUDE_ | Documented: An official docs page names this item. | Stream silence and first-byte deadlines. The program sets the defaults. A value below 5 minutes for CLAUDE_ counts as 5 minutes. |
CLAUDE_ | Documented: An official docs page names this item. | Stops the retry without streaming after a stream fails. It is off by default. |
The rules for these are on Models and Retries and Timeouts.
Automatic Switches and the Prompt for Unrecognized Names
Both rows are about a model name that Claude Code does not recognize, such as a custom deployment name or an inference profile ARN.
| Item | Status | Effect | Notes |
|---|---|---|---|
CLAUDE_ | Undocumented: Only the program shows this item. It can change without notice. | Turns off the automatic switch to another model after a flagged message. | Since 2., the switch also covers names that Claude Code does not recognize. Before, a name with no catalog flag and no known flagged family got no switch. The setting switch is a second control. Source: chunk- lines 13296, 13298 to 13305, and 13376 to 13392. |
CLAUDE_ | Documented: An official docs page names this item. | 0 keeps the full system prompt. | Since 2., an unrecognized name gets the short prompt. See Names That Claude Code Does Not Recognize. |
Related Pages
- Models and Providers lists the pages of this section and shows an example.