There's been a lot of discussion recently around how Claude Code updates affect behavior, predictability, and token usage.
When Claude Code updates, it's not just the model that changes - the CLI harness, system prompts, tool-calling behavior, and context management all evolve too. Newer is often better. But not always for every workflow.
In my own setup, I noticed that some skills, agents, and project workflows I'd built behaved differently after recent updates. Not necessarily worse, but differently enough that predictability started to matter.
For AI-assisted development, that matters.
The problem
Sometimes you want the latest model. Sometimes you want the setup your workflow was built around.
There's no built-in way to run an older Claude Code version side-by-side with the latest one. If you pin the model with --model, you still get the latest harness — and harness changes can affect behavior just as much as model changes.
The solution: claude46
I made a small open-source helper that gives you a separate claude46 command:
- Claude Code pinned to 2.1.110 (the pre-Opus-4.7 harness)
- Opus 4.6 1M as the default model
- Auto-updates fully blocked for that launcher only
- Your normal
claudeinstall is left untouched and free to update
One-liner install
macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/sparklingneuronics/claude-code-helpers/v0.2.0/install-claude46.sh | bash
Windows (PowerShell):
irm https://raw.githubusercontent.com/sparklingneuronics/claude-code-helpers/v0.2.0/install-claude46.ps1 | iex
Then just run claude46 instead of claude.
Is it better?
Not universally. I still use newer versions. But for workflows tuned around previous behavior — especially skills and agents built on top of Claude Code — having a stable pinned setup is useful.
The same idea as pinning a compiler or framework version: you want to choose when to upgrade, not have it happen under you.
How it works
The bash installer downloads Claude Code 2.1.110 to ~/.local/share/claude46/ and writes a wrapper script that sets DISABLE_AUTOUPDATER=1, DISABLE_UPDATES=1, and ANTHROPIC_MODEL=claude-opus-4-6[1m] before exec-ing the pinned binary.
The Windows installer does the same via npm install --prefix into %LOCALAPPDATA%\claude46\, writing a .cmd wrapper with the same env vars.
Both are tested end-to-end via CI on real runners.
Links
- Repo: github.com/sparklingneuronics/claude-code-helpers
- MIT licensed, no telemetry, no API proxy

Top comments (0)