How do I turn off ultrathink in Claude Code with `CLAUDE_CODE_DISABLE_ULTRATHINK`?
On Claude Code 2.1.316 or later, set CLAUDE_CODE_DISABLE_ULTRATHINK to turn the ultrathink keyword off. It does not change /effort.
To turn off the ultrathink keyword in Claude Code, set the environment variable CLAUDE_CODE_DISABLE_ULTRATHINK. It shipped in Claude Code 2.1.316, released on October 31, 2026. The changelog says it "turns the ultrathink keyword off" and names no value, so we use 1, the usual on-switch. The changelog lists the variable as added in 2.1.316, not earlier.
CLAUDE_CODE_DISABLE_ULTRATHINK · floor 2.1.316 · released 2026-10-31 · affects only the ultrathink keyword, not /effort, not maxEffortLevel. The docs don't list the variable yet, so the value 1 is our reading of the general rule. Checked 2026-11-01.What ultrathink does
Anthropic's model configuration docs say: "Include ultrathink anywhere in your prompt to request deeper reasoning on that turn without changing your session effort setting." One word, one turn, no saved change.
The Claude Code changelog adds the detail. Since 2.1.311 (October 26, 2026), the word typed in the interactive terminal runs its turn at xhigh effort on Opus 5.5, Sonnet 5.5, Haiku 5.5 and Fable 5.1 through Anthropic's API. It shows in rainbow colors where it can raise effort.
In 2.1.316 the VS Code extension gets the same behavior: xhigh for the turn and a rainbow word in the chat box.
How to set it
Shell, before launching:
export CLAUDE_CODE_DISABLE_ULTRATHINK=1
claude
Settings file, using the generic env key:
{
"env": {
"CLAUDE_CODE_DISABLE_ULTRATHINK": "1"
}
}
The environment variables page says to add variables "under the env key in a settings.json file". A running session applies new values when you save the file, except for features that read their variables once at startup. We don't know which group this one is in, so relaunch claude after the change.
The file can be ~/.claude/settings.json or .claude/settings.json. For the org-wide route, see managed settings, which are the settings an organization deploys. For the wider variable setup, see API keys and env.
Why the value is 1
The env-vars page gives one general rule: for on/off variables, "set 1, true, yes, or on to turn it on and 0, false, no, or off to turn it off, in any casing."
A few variables break that rule and treat any non-empty value as on. When we read the page, CLAUDE_CODE_DISABLE_ULTRATHINK had no row at all, so we can't tell you it follows the general rule. 1 is the safest guess. If you need certainty, run the check below.
The Claude moves worth stealing, by email
Workflows tested on real jobs, sent only when they are worth it. Free.
A check you can run yourself
We haven't run this. It is the check we would do, and the docs describe what you should see.
- Run
claude --versionand confirm 2.1.316 or later. - Without the variable, start a new turn in the terminal and type
ultrathinkas a plain word in a prompt that doesn't start with/. Per the docs, it should show in rainbow colors where it can raise effort. - Set the variable, relaunch, and type the same prompt. If the keyword is off, the rainbow should be gone.
Step 3 is our expectation, not a documented result. The docs don't describe the word's appearance once the variable is set.
What it does not change
The variable targets one keyword. Everything that sets effort for the whole session is separate.
| Lever | What it controls | Source |
|---|---|---|
ultrathink keyword | One turn, raised to xhigh where it can | Model config |
/effort, --effort | Session effort level | Model config |
CLAUDE_CODE_EFFORT_LEVEL | First in the resolution order | Model config |
maxEffortLevel | A ceiling on the level | Settings reference |
CLAUDE_CODE_DISABLE_ULTRATHINK | Turns the keyword off | Changelog 2.1.316 |
The effort levels themselves are explained in our guide to maxEffortLevel.
If your goal is a cost ceiling
Turning off one keyword is a narrow fix. If you want to stop anyone raising effort, a cap is the lever the docs give you.
The model config docs list reasons the rainbow may not appear: CLAUDE_CODE_EFFORT_LEVEL set below xhigh, your own maxEffortLevel below xhigh, or an organization limit. So a cap below xhigh already stops the word from raising a turn to xhigh. That is our reading of the docs' list, and we haven't tested it.
Set the cap in managed settings and the whole team gets it. Fast mode is a different trade-off, covered in Claude Code fast mode.
Also in 2.1.316: subagent effort
The same release added CLAUDE_CODE_SUBAGENT_EFFORT. The changelog says it sets "the effort level subagents run at when nothing else names one, instead of inheriting the session's". It is a different variable with its own use. For how subagents work, start with Claude Code subagents.
Limits and what we could not check
- Not run by us. We had no terminal for this page. Everything comes from Anthropic's docs and changelog, read on 2026-11-01.
- Docs lag the changelog.
CLAUDE_CODE_DISABLE_ULTRATHINKwas absent from the env-vars page when we read it. - Unknown after disabling. The docs say other phrases such as "think hard" pass through as ordinary text. They don't say what happens to
ultrathinkitself once it is off. - Version drift. Claude Code ships often. Confirm with
claude --version.
We track small Claude Code changes like this one in the newsletter.
FAQ
How do I turn off ultrathink in Claude Code?
Set CLAUDE_CODE_DISABLE_ULTRATHINK, in your shell or under the env key of a settings file, on Claude Code 2.1.316 or later. The changelog says it turns the keyword off. We use the value 1.
Does ultrathink change my effort setting for the whole session?
No. The docs say it requests deeper reasoning on that turn "without changing your session effort setting". Your /effort choice, saved level and maxEffortLevel cap stay as they were.
Do "think hard" or "think more" trigger it?
No. The docs say Claude Code passes phrases such as "think", "think hard" and "think more" through as ordinary prompt text and doesn't recognize them as keywords. Only ultrathink is the keyword.
Sources (checked 2026-11-01)
- Claude Code changelog, entries 2.1.316 (October 31, 2026) and 2.1.311 (October 26, 2026)
- Model configuration, "Use ultrathink for one-off deep reasoning" and effort resolution order
- Environment variables, on/off rule and the
envkey - Settings reference,
maxEffortLevel
Related: Set maxEffortLevel · Managed settings · Claude Code subagents
