Claude Code settings.json Effort Level Bug: Why max Gets Silently Downgraded
I tried setting effortLevel: "max" in my Claude Code settings.json file, but it kept getting silently downgraded to “medium” every time I interacted with the /model UI.
After hours of troubleshooting, I discovered this is a known bug (issue #30726) where the configuration value gets deleted from the settings file without any warning.
The Problem
I wanted to use maximum effort level for complex coding tasks. So I added this to my ~/.claude/settings.json:
{ "effortLevel": "max"}At first, it seemed to work. But whenever I ran /model to check or change the model during a session, the effort level would silently revert to “medium”.
The frustrating part? There’s no warning message. No error. The value just disappears from the config file.
What’s Happening
The bug mechanism is straightforward:
- Configuration: User sets
effortLevel: "max"insettings.json - Trigger: User interacts with
/modelUI during a session - Bug Action: Claude Code silently removes the
effortLevelkey fromsettings.json - Result: System defaults to “medium” without any warning
I checked my settings file after a session where I’d used /model:
{ // effortLevel was here before!}The key was completely gone. This explains why my complex tasks weren’t getting the deep reasoning I expected.
Environment Variable Also Affected
Thinking I could work around the settings file issue, I tried setting the environment variable:
export CLAUDE_CODE_EFFORT_LEVEL=maxclaudeNope. Same problem. The environment variable gets ignored once you interact with the /model UI.
As one user reported:
“this doesn’t work at the moment FYI. not even the CLAUDE_CODE_EFFORT_LEVEL env var works. passing the flag seems to be the only solution”
Another user confirmed:
“Max doesn’t work at all, it automatically gets deleted from the config settings file and hence goes back to medium”
The Working Solution
The only reliable workaround as of March 2026 is to use CLI flags directly:
claude --effort-level maxThis bypasses both the settings file and environment variable, ensuring your effort level stays at “max” for the entire session.
If you need to combine with other flags:
claude --effort-level max --model claude-opus-4-5Why This Matters
Effort level controls how much compute Claude uses for reasoning:
- low: Quick responses, minimal reasoning
- medium: Balanced (default)
- max: Maximum reasoning for complex tasks
For refactoring large codebases or debugging intricate systems, “max” can make the difference between a surface-level fix and a thorough solution.
Related Issues
This isn’t the only configuration quirk in Claude Code. The /model UI command seems to have a history of interfering with other settings. Always verify your configuration after using UI commands if something feels off.
Check your current settings:
cat ~/.claude/settings.jsonAnd verify the active effort level during a session:
/modelLook for the effort level indicator in the output.
Summary
| Method | Status |
|---|---|
settings.json effortLevel | Bug: gets deleted |
CLAUDE_CODE_EFFORT_LEVEL env var | Bug: gets ignored |
CLI flag --effort-level | Working solution |
Until Anthropic fixes bug #30726, always use the CLI flag for maximum effort level.
Final Words + More Resources
My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me
Here are also the most important links from this article along with some further resources that will help you in this scope:
Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!
Comments