v2.1.113: --effort max CLI flag and CLAUDE_CODE_EFFORT_LEVEL env var ignored

Resolved 💬 4 comments Opened Apr 17, 2026 by 07-C9 Closed May 25, 2026

Bug Description

The --effort max CLI flag and CLAUDE_CODE_EFFORT_LEVEL=max environment variable are not being respected. Effort level defaults to "medium" (v2.1.113) or displays as "xhigh" in the /effort slider even when "max" is explicitly configured through every available mechanism.

Environment

  • Claude Code version: v2.1.112 -> v2.1.113 (auto-updated during debugging)
  • OS: macOS 26.4.1
  • Shell: zsh
  • Model: claude-opus-4-6[1m] (pinned in ~/.claude/settings.json)
  • Plan: Claude Max

Steps to Reproduce

Method 1: Environment variable in settings.json

{
  "model": "claude-opus-4-6[1m]",
  "env": {
    "CLAUDE_CODE_EFFORT_LEVEL": "max"
  }
}

Result: Banner does NOT show "with max effort". /effort slider shows "xhigh", not "max".

Method 2: Environment variable in ~/.zshrc

export CLAUDE_CODE_EFFORT_LEVEL=max

Verified with echo $CLAUDE_CODE_EFFORT_LEVEL which outputs max in the shell before launching claude.

Result on v2.1.112: Banner briefly showed "Opus 4.6 (1M context) with max effort" (this worked once, then stopped working on subsequent launches with identical configuration). /effort slider still showed "xhigh" even when the banner showed "max effort".

Result on v2.1.113: Banner shows just "Opus 4.6 (1M context) - Claude Max" with no effort indicator. Status bar shows "medium".

Method 3: CLI flag via alias

alias claude='claude --effort max'

Verified with type claude which outputs claude is an alias for claude --effort max.

Result on v2.1.113: Banner shows "Opus 4.6 (1M context) - Claude Max" with no effort indicator. Status bar shows "medium". The --effort max flag is completely ignored.

Method 4: Both env var AND settings.json AND alias simultaneously

All three methods active at once.

Result: Still shows "medium" effort. No effect.

Expected Behavior

  1. --effort max CLI flag should persistently set effort to "max"
  2. CLAUDE_CODE_EFFORT_LEVEL=max env var should persistently set effort to "max"
  3. The /effort slider should reflect the configured effort level (show "max", not "xhigh")
  4. The banner should display "with max effort" when max effort is configured
  5. These settings should persist across sessions without needing /effort each time

Actual Behavior

  • All configuration methods are ignored
  • v2.1.113 defaults to "medium" effort regardless of configuration
  • /effort slider shows "xhigh" as the active level even when "max" is configured (display bug)
  • Behavior is inconsistent between launches with identical configuration (worked once on v2.1.112, then stopped)
  • Auto-update from v2.1.112 to v2.1.113 made things worse (went from "xhigh" display to "medium" default)

Additional Observations

Banner inconsistency with model display

When model is pinned to claude-opus-4-6[1m] in settings.json, the startup displays conflicting information:

Claude Code v2.1.112
Opus 4.6 (1M context) with max effort - Claude Max    <-- correct model
/Users/username
Welcome to Opus 4.7 xhigh!                            <-- wrong model, wrong effort

The info line correctly shows Opus 4.6, but the "Welcome to" line says Opus 4.7. This secondary banner also shows "xhigh" instead of "max". In v2.1.113, this "Welcome to" line disappeared entirely.

Opus 4.6 vs 4.7 effort scale mismatch

According to the docs, Opus 4.6 supports low, medium, high, max - NOT xhigh. The /effort slider displaying xhigh on an Opus 4.6 session suggests the UI is rendering the 4.7 effort scale regardless of the active model.

CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING

Also have export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 set. Unknown if this interacts with the effort level bug, but mentioning for completeness.

Workaround

The only workaround is manually using /effort at the start of every session and arrow-keying to "max". This does not persist between sessions.

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗