Ultrathink is Back

Claude Code 2.1.68 re-introduces the ultrathink keyword, which sets the effort level to high for a single turn on Opus 4.6 and Sonnet 4.6. This post covers the history of ultrathink, why it was removed, the new effort system it now operates within, what ultrathink does today, and how to configure effort level persistently.

Ultrathink

The Original Ultrathink

Before Claude Code 2.0, the CLI supported a hierarchy of thinking keywords that you could embed anywhere in a prompt. Each keyword mapped to a specific extended thinking token budget, passed to the Anthropic API via the budget_tokens parameter.

The keyword hierarchy worked like this:

  • think — approximately 4,000 thinking tokens
  • think hard or megathink — approximately 10,000 thinking tokens
  • think harder or ultrathink — the maximum budget of 31,999 thinking tokens

Claude Code preprocessed these keywords before forwarding the request to the API. The ultrathink keyword became a go-to for complex architectural decisions, deep debugging sessions, and any task where shallower reasoning produced inadequate results. The behavior was exclusive to Claude Code’s terminal interface — the keywords had no effect in Claude.ai’s web chat or through the raw API.

Why It Was Removed

In November 2025, Claude Code 2.0 made extended thinking the default. A tab toggle replaced the keyword hierarchy, and explicit thinking triggers (including ultrathink) were deprecated. Anthropic’s rationale was that automatic thinking with a maximum budget removed the need to remember specific keywords.

By January 16, 2026, the ultrathink keyword was officially retired. Anthropic closed related issues with the note: “ultrathink is now deprecated and thinking mode is enabled by default.”

The deprecation triggered community pushback. A GitHub issue (#19098) filed on January 18, 2026 documented user reports of quality degradation. Users paying for Opus pricing reported behavior consistent with lighter models, with no mechanism to force maximum reasoning engagement. The issue was closed as a duplicate of existing bug reports without restoring explicit effort control.

The New Effort System

Claude Code introduced a new approach to reasoning control alongside the launch of Opus 4.6. Rather than a fixed token budget, Opus 4.6 and Sonnet 4.6 use adaptive reasoning: the model dynamically allocates thinking tokens based on the configured effort level and the perceived complexity of the task.

Three effort levels are available:

  • low — minimal thinking, fastest response
  • medium — the current default for Opus 4.6 on Max and Team plans (as of 2.1.68)
  • high — maximum thinking depth, slower but most thorough

This is an architectural departure from the old approach. With the old system, ultrathink reserved 31,999 tokens for thinking regardless of whether the task needed them. With the effort system, high effort directs the model to reason as deeply as the task warrants, and the model allocates tokens accordingly. If you need to revert Opus 4.6 or Sonnet 4.6 to the old fixed-budget behavior, the CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 environment variable restores it.

Ultrathink Today

In Claude Code 2.1.68, ultrathink returns as a per-turn keyword. Including the word anywhere in a prompt sets the effort level to high for that single turn, without permanently changing the configured effort setting.

The practical use case is targeted override. If your default effort is medium (the new Opus 4.6 default), adding ultrathink to a complex request engages maximum reasoning depth for that turn only. The following turn reverts to medium.

One important distinction from the old behavior: other thinking phrases no longer carry mechanical weight. The official documentation states:

Phrases like “think”, “think hard”, and “think more” are interpreted as regular prompt instructions and don’t allocate thinking tokens.

ultrathink is now the only recognized keyword with a mechanical effect. Phrases like “think harder” or “megathink” are treated as ordinary text instructions with no impact on the thinking budget.

Configuring Effort Level

If you want to change the baseline effort level beyond a single-turn override, three configuration options are available. The highest-priority setting wins in all cases.

During a session, open /model and use the left/right arrow keys to adjust the effort slider when a supported model is selected. This applies for the remainder of the current session only.

Via environment variable, set CLAUDE_CODE_EFFORT_LEVEL before launching:

$ export CLAUDE_CODE_EFFORT_LEVEL=high
$ claude

This applies to all sessions started in that shell environment. Useful for temporarily running at a different effort level without touching your settings files.

Via settings file, add effortLevel to your project or user settings:

{
  "model": "opus",
  "effortLevel": "high"
}

Place the file at .claude/settings.json for project-scoped configuration or ~/.claude/settings.json for global settings. This persists across sessions and is the preferred approach for a permanent change.

Effort levels are only supported on Opus 4.6 and Sonnet 4.6. The effort slider in /model appears when either of those models is active. Other models continue to use the fixed thinking budget controlled by MAX_THINKING_TOKENS.

The return of ultrathink gives back explicit per-turn control over reasoning depth without requiring a permanent configuration change. The underlying mechanism maps to the high effort tier in the adaptive reasoning system rather than a fixed token budget, but the practical result is the same: add the keyword to a prompt, get maximum thinking for that turn.