How I Made Claude Code Default to Effort Max

Posted by Michael S. on April 13, 2026

I ran:

claude --resume 23980fd5-defb-42f2-a418-0a8a46d016f1

and watched it continue as if the effective invocation was closer to:

claude --effort max resume ...

That was the nudge I needed. If I keep reaching for effort max anyway, it should be my default.


Why This Matters

Anthropic changed how effort levels work in Claude Code. Running claude with no flags now behaves like what used to be --effort medium. Even --effort high feels roughly equivalent to the old medium. Only --effort max gives you the full reasoning depth that Claude Code was known for.

If you've noticed Claude Code feeling dumber or lazier recently, this is probably why. The default effort was quietly lowered, and unless you explicitly ask for max, you're not getting it.


The Alias I Actually Use

If you want Claude Code to always run with maximum effort by default, add this alias:

alias claude='claude --effort max'

Where to put it:

  • macOS (zsh): ~/.zshrc
  • Linux (bash): ~/.bashrc
  • My setup: ~/.zsh_aliases, sourced locally from ~/.zshrc

After adding it, reload your shell:

source ~/.zshrc
# or
source ~/.bashrc

If you keep aliases in a separate file, source that file instead. My local pattern is:

# ~/.zshrc
if [ -f ~/.zsh_aliases ]; then
  source ~/.zsh_aliases
fi

The Risky Alias

On sandbox machines (special AI boxes where I can tolerate more risk), I use:

alias claude='claude --effort max --dangerously-skip-permissions'

This can be useful in tightly controlled environments, but treat it like removing a safety guard from power equipment. A bad command, a malicious prompt, or a compromised dependency could do real damage.

On real machines with sensitive data, use an explicit allow flag instead of full skip. On my main laptop, I use:

alias claude='claude --effort max --allow-dangerously-skip-permissions'

This keeps my default at effort max while requiring a more deliberate permissions posture than blanket skip mode.

Practical warning: this mode could wipe files or hand an attacker control over your system. Only use it on machines you can afford to lose, and only when you fully understand the blast radius.


Why I Moved Off Gemini CLI for Main Work

I've been using Claude Code heavily for the last couple of months, with Codex in the mix sometimes. I also started using gemini-cli, but I never really got productive with it.

As I've written about before, the main reason is speed. Google bakes so much telemetry into gemini-cli that the whole app feels bloated. On my machine it was noticeably slower than Claude Code for equivalent tasks, and the overhead made it hard to stay in flow.

On top of that, session durability was bad. I had a three-week chat living in /tmp. First, newer chats disappeared. Then I closed and reopened gemini-cli to try to salvage them, and it came back without any of the chats at all.

That wiped assistant-side context from my continuation flow. I still had my prompts, but most of the model's replies and generated code were gone.

There was data in ~/.gemini, but in my case it appeared to contain mostly my side, which was not enough to reconstruct the full working session. After that, I stopped treating gemini-cli chat state as reliable for long-running engineering work.


Current Workflow: Claude Code + Small Harnesses

I mostly replaced Cursor in my day-to-day flow with Claude Code. On my VMs, I usually have my agent spawn an OpenClaw or Hermes-style sub-agent.

My experience so far is simple: smaller harness, more automation; more automation, more leverage. The setup feels more predictable when I keep the execution surface narrow and avoid unnecessary layers.


What I Recommend

  1. Default to --effort max with a shell alias if quality matters more than speed.
  2. Use --dangerously-skip-permissions for sandbox AI machines only.
  3. On real machines with sensitive data, prefer --allow-dangerously-skip-permissions plus --effort max.
  4. Do not keep critical long-term chat state in /tmp.
  5. Store important prompts, diffs, and generated code in versioned files early, not only in chat history.

None of this is magic, but this setup has been stable enough for me to keep shipping.


Enjoyed this post?

Get notified when I publish something new. No spam, unsubscribe anytime.