Allow persisting thinking effort level across sessions

Status Fixed / completed
Maintainer reply None cached
Activity 5 comments · opened Mar 13, 2026 · closed Aug 17, 2026

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.

View original on GitHub ↗

3 Comments

yurukusa · 5 months ago

+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:

---
name: my-skill
effortLevel: high
---

So the infrastructure for effort-level configuration partially exists — it just needs to be lifted to the global settings level.

A settings.json key would cover the common case, and per-project CLAUDE.md metadata could override it for specific repos. Something like:

// ~/.claude/settings.json (global default)
{ "effortLevel": "high" }
# project/.claude/settings.local.json (project override)
{ "effortLevel": "medium" }

The --effort CLI flag would also be useful for scripted/headless use cases where you pipe prompts via claude -p.

leitai231 · 5 months ago

Hey, just want to add a data point here.

I already have "effortLevel": "max" in my ~/.claude/settings.json:

{
  "effortLevel": "max"
}

But it's completely ignored on startup — every new session still defaults to medium. I have to manually go into /effort and 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.

repulsio · 4 months ago

@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?

Showing cached comments. Read the full discussion on GitHub ↗