Skip to content

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:

  1. Configuration: User sets effortLevel: "max" in settings.json
  2. Trigger: User interacts with /model UI during a session
  3. Bug Action: Claude Code silently removes the effortLevel key from settings.json
  4. 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:

Terminal window
export CLAUDE_CODE_EFFORT_LEVEL=max
claude

Nope. 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:

Terminal window
claude --effort-level max

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

Terminal window
claude --effort-level max --model claude-opus-4-5

Why 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.

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:

Terminal window
cat ~/.claude/settings.json

And verify the active effort level during a session:

/model

Look for the effort level indicator in the output.

Summary

MethodStatus
settings.json effortLevelBug: gets deleted
CLAUDE_CODE_EFFORT_LEVEL env varBug: gets ignored
CLI flag --effort-levelWorking 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