[Feature] Persist ultracode/max effort as a persistent default for new sessions (currently session-only, silently resets to xhigh)

Status Open
Maintainer reply ✓ Yes — bcherny
Activity 3 comments · opened Jun 27, 2026
💡 Likely answer: A maintainer (bcherny, collaborator) responded on this thread — see the highlighted reply below.

What I'm requesting

A supported, persistent way to make new sessions start at ultracode (or max) effort by default - one that survives app restarts and model switches.

Today effortLevel in settings.json only accepts up to xhigh. max and ultracode are session-only, so there is currently no way to make "always start at full capability" stick. Users who rely on Ultracode must re-apply it manually in every new session.

Current behavior (tested on the desktop app, Windows 11 ARM64, app 0.14.5)

  • settings.json with effortLevel: "xhigh" persists correctly across restarts. Good.
  • max / ultracode cannot be written to settings.json (documented as session-only).
  • The desktop app stores the UI effort state in claude_desktop_config.json -> preferences.epitaxyPrefs.ccd-effort-level.
  • I manually set ccd-effort-level to "ultracode", then force-killed the app (Stop-Process -Force, so no graceful shutdown ran) and relaunched it.
  • On restart, the value had been reset to "xhigh".
  • Because it was reset even though the app was force-killed, the app appears to normalize ccd-effort-level to the settings effortLevel (xhigh) at startup, discarding any ultracode/max value.

Net effect

Every app restart or model switch silently drops the session back to xhigh, and the previously selected Ultracode is lost. The user must re-run /effort ultracode in each new session - and because the reset is silent, they often do not notice they have lost the dynamic-Workflow capability.

Proposed

Provide a persisted default for the top effort tiers, e.g.:

  • accept "effortLevel": "max" in settings.json, and/or
  • a dedicated "ultracode": true setting,

honored on every new session, surviving restarts and model switches.

Why it matters

Manually re-applying the effort each session is easy to forget, and the silent reset means users lose capability without realizing it. A persistent default would make "start every session at full capability" reliable.

Related

Similar pain points, but those are general "effort resets" bug reports - this request is specifically about persisting the top tiers (max/ultracode) as a default:

  • #11531
  • #12873
  • #11522

View original on GitHub ↗

3 Comments

mnordberg · 1 month ago

Confirming this is still relevant on Claude Code v2.1.197 (VS Code extension, macOS / darwin arm64) — so it's not Windows-specific.

Repro: with "effortLevel": "max" in ~/.claude/settings.json (no project/local override), a brand-new session starts at high, not max.

Root cause (from the shipped bundle): the extension's own claude-code-settings.schema.json enumerates effortLevel as low | medium | high | xhigh only, while the webview effort map is low:1, medium:2, high:3, xhigh:4, max:5 with level 5 labeled "Max". So max is a real, selectable tier that simply can't be persisted — writing "max" to settings is discarded and reset to high at startup (watched the file get rewritten max → high). Note it resets to high, not xhigh.

Request: let effortLevel: "max" (or an equivalent persistent key) survive restarts so new sessions can default to Max. Same underlying gap as #65651.

wshallwshall · 1 month ago

+1, same experience on Windows 11. effortLevel: xhigh persists reliably for me, but ultracode never survives into a new session — and because the drop back to xhigh is silent, it's easy not to notice the dynamic-workflow capability is gone until several turns in. A persisted top tier — accepting "effortLevel": "ultracode" or a dedicated ultracode: true in settings.json — would fix it.

bcherny collaborator · 14 days ago

Thanks for the detailed writeup. Part of this is possible today: max can be made persistent by setting the CLAUDE_CODE_EFFORT_LEVEL environment variable to max (for example in the env block of your settings.json), which takes precedence over the effortLevel setting. Docs: https://code.claude.com/docs/en/model-config#adjust-effort-level

Ultracode is currently session-only on purpose (/effort ultracode or claude --effort ultracode on the CLI), so a persistent default for it — and the desktop app resetting it on restart — is still an open request. Leaving this open for that part.

🤖 Generated with Claude Code