Skip to content

How to Disable Adaptive Reasoning in Claude Code for Better Performance?

Claude Code settings dashboard

Claude Code feels slow. I’m not talking about network latency or API response times. I mean the thinking process itself feels sluggish, especially when using Opus and Sonnet models. Tasks that should flow smoothly feel bogged down. I tried adjusting various settings, but nothing seemed to help.

After some research and community discussions, I discovered the culprit: adaptive reasoning. Here’s what I learned and how I fixed it.

What Didn’t Work

First, I tried the obvious approach. I set MAX_THINKING_TOKENS=0 hoping it would reduce thinking time. But this had no effect on Opus models. I later learned that when adaptive reasoning is enabled, it controls the thinking depth by default, overriding manual token limits.

I also restarted Claude Code multiple times, thinking maybe the settings weren’t taking effect. Still slow.

The Solution: Disable Adaptive Reasoning

Adaptive reasoning is a feature that dynamically adjusts how many thinking tokens Claude uses based on task complexity. While this sounds good in theory, in practice it can make models feel sluggish or unpredictable.

The fix is simple: set the environment variable CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 before launching Claude Code. This switches from adaptive reasoning to a fixed thinking token budget.

After applying this setting, both Sonnet and Opus models felt much more responsive. The behavior became more predictable, and I had better control over performance.

Three Ways to Implement

You have three options to disable adaptive reasoning, depending on whether you want a temporary or permanent fix.

Method 1: Temporary (Command Line)

If you want to test this without making permanent changes, run:

Launch Claude Code with adaptive reasoning disabled
CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 claude

This works for the current session only. Once you close Claude Code, the setting is gone.

Method 2: Permanent (Shell Profile)

For a permanent solution, add the environment variable to your shell profile. For Zsh users:

Add to ~/.zshrc
export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1

For Bash users:

Add to ~/.bashrc
export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1

After adding this line, restart your terminal or run source ~/.zshrc (or source ~/.bashrc).

Method 3: Permanent (Settings File)

You can also add this to your Claude Code settings file for a cleaner approach:

settings.json
{
"env": {
"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1"
}
}

This method keeps the configuration within Claude Code’s ecosystem and works across different terminal sessions.

Common Mistakes to Avoid

I made several mistakes while troubleshooting this issue. Here are the pitfalls to watch out for:

  1. Setting MAX_THINKING_TOKENS=0 on Opus models - This gets ignored when adaptive reasoning is enabled. The feature overrides manual token limits, so you need to disable adaptive reasoning first.

  2. Not restarting Claude Code - Environment variables only take effect when Claude Code starts. If you set the variable but don’t restart, you won’t see any changes.

  3. Confusing adaptive reasoning with extended thinking - These are different features. Adaptive reasoning dynamically adjusts thinking tokens, while extended thinking allows for longer reasoning chains. Don’t mix them up.

  4. Setting the variable without the value - You must set it to 1, not just define the variable. CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 is correct. Just having the variable name won’t work.

Why This Matters

Many users reported they were completely unaware this setting existed. After discovering it, they experienced significantly improved responsiveness with both Sonnet and Opus models. The feature isn’t prominently documented, so it’s easy to miss.

If you’ve been experiencing sluggish performance with Claude Code, especially when using the more powerful models, give this a try. It’s a simple change that can make a noticeable difference in your workflow.

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