[BUG] `claude update` reports downgrade and shows three conflicting version numbers
Resolved 💬 5 comments Opened Mar 26, 2026 by jroy-poka Closed Apr 25, 2026
Bug Description
claude update exhibits incorrect version resolution behavior:
- Reports current version as 2.1.81
- Claims a "new version available" of 2.1.77 — which is older than the current version
- Proceeds to "successfully" downgrade from 2.1.81 to 2.1.77
- After the update,
claude --versionreports 2.1.84 — a third, different version
Three conflicting version numbers in a single update cycle. The updater's "stable" channel version check appears out of sync with what npm actually resolves.
Screenshot
claude-update-version-mismatch
<img width="397" height="187" alt="Image" src="https://github.com/user-attachments/assets/58c237aa-10f0-4a5c-8068-3e12d45edfff" />
Steps to Reproduce
- Have Claude Code installed globally via npm (
npm install -g @anthropic-ai/claude-code) - Run
claude update - Observe the version mismatch in the output
- Run
claude --versionto see a third, different version
Environment
- OS: macOS (Darwin 24.1.0)
- Shell: zsh
- Node: v24.13.0 (via nvm)
- Install method:
npm install -g @anthropic-ai/claude-code - Install path:
~/.nvm/versions/node/v24.13.0/lib/node_modules/@anthropic-ai/claude-code - Claude Code version (actual): 2.1.84
Analysis
The root cause appears to be a mismatch between the "stable" release channel that claude update checks and npm's latest tag:
- The updater's stable channel metadata thinks 2.1.77 is the latest stable release
- npm's
latesttag points to 2.1.84 - The updater reports current as 2.1.81 (possibly reading from a cached or stale source)
- The "global installation update method" likely runs
npm install -g @anthropic-ai/claude-code@2.1.77, but npm resolves to a different version
The actual binary is unaffected (2.1.84 is correct), but the UX is confusing and the updater is attempting an unintended downgrade.
Related
- #33926 — Similar downgrade behavior, but in that case the user was actually stuck on the older version
Expected Behavior
claude updateshould never offer to "update" to an older version- The version reported as "current" should match
claude --version - After update, the reported version should match the actually installed version
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗