Allow persisting thinking effort level across sessions
Problem
The thinking effort level (Low / Medium / Max) resets to Medium every time Claude Code starts. Users who consistently prefer Max effort have to open /model and adjust it at the beginning of every session.
Proposed Solution
Add an effortLevel key to settings.json (or settings.local.json) that persists the default effort level across sessions:
{
"effortLevel": "high"
}
Accepted values: low, medium, high (matching the internal representation).
Alternatively, a CLI flag like --effort high would also work, especially for users who want per-project defaults via shell aliases.
Motivation
For users working on complex codebases (e.g., hardware design, compiler work), Max effort is almost always the right choice. Having to re-select it every session is unnecessary friction, especially since model selection already persists.
Showing cached comments. Read the full discussion on GitHub ↗
3 Comments
+1 on this. I run long autonomous sessions and always want max effort.
Worth noting that skill-level effort is already supported via SKILL.md frontmatter:
So the infrastructure for effort-level configuration partially exists — it just needs to be lifted to the global settings level.
A
settings.jsonkey would cover the common case, and per-project CLAUDE.md metadata could override it for specific repos. Something like:The
--effortCLI flag would also be useful for scripted/headless use cases where you pipe prompts viaclaude -p.Hey, just want to add a data point here.
I already have
"effortLevel": "max"in my~/.claude/settings.json:But it's completely ignored on startup — every new session still defaults to medium. I have to manually go into
/effortand switch it back every single time.So the key already exists in the settings schema, it's just not being read by the CLI at launch. Would be great to see this actually wired up — it's a small fix that would save a lot of daily friction for power users.
Running Claude Code 2.1.81 on macOS.
@bcherny Can you make it accept
"effortLevel": "max"as an option? Why is "high" the highest we can set if "Max" is an option via the UI?