What's Wrong?
On a native install, the claude update command queries the stable release channel and reports "up to date" even though autoUpdatesChannel is set to "latest" and a newer latest release exists. The background auto-updater in the same install honors latest, so the two update paths disagree.
Steps to Reproduce
- Native install (
~/.local/bin/claude -> ~/.local/share/claude/versions/<v>), macOS arm64.
- Set
"autoUpdatesChannel": "latest" in ~/.claude/settings.json.
- Channel heads at time of report:
stable -> 2.1.170, latest -> 2.1.181
(from .../claude-code-releases/stable and .../latest).
- Run
claude update:
Current version: 2.1.170
Checking for updates to stable version...
Claude Code is up to date (2.1.170)
It checks stable and no-ops, despite the configured channel being latest.
- Meanwhile the background auto-updater (same install) honored
latest and staged
~/.local/share/claude/versions/2.1.181, but the active symlink stayed at 2.1.170.
Expected Behavior
With autoUpdatesChannel: "latest", claude update should check the latest channel and install 2.1.181 — matching the background auto-updater and the documented behavior:
Control which release channel Claude Code follows for auto-updates and claude update with the autoUpdatesChannel setting.
— https://code.claude.com/docs/en/setup
Actual Behavior
claude update always queries the stable channel (it prints Checking for updates to stable version...), ignoring autoUpdatesChannel: "latest".
Environment
- Install method: native installer (
~/.local/bin/claude, Mach-O arm64)
- OS: macOS 26.5.1 (build 25F80), arm64
- Claude Code:
2.1.170 (stable head); latest channel head 2.1.181
~/.claude/settings.json: autoUpdatesChannel: "latest", minimumVersion: "2.1.170"
- Claude Desktop is also installed (
com.anthropic.claudefordesktop.ShipIt present), but the failing path here is the claude update command's own channel selection — it explicitly prints "stable" — independent of the Desktop updater.
Related issues
What's Wrong?
On a native install, the
claude updatecommand queries the stable release channel and reports "up to date" even thoughautoUpdatesChannelis set to"latest"and a newerlatestrelease exists. The background auto-updater in the same install honorslatest, so the two update paths disagree.Steps to Reproduce
~/.local/bin/claude->~/.local/share/claude/versions/<v>), macOS arm64."autoUpdatesChannel": "latest"in~/.claude/settings.json.stable->2.1.170,latest->2.1.181(from
.../claude-code-releases/stableand.../latest).claude update:It checks stable and no-ops, despite the configured channel being
latest.latestand staged~/.local/share/claude/versions/2.1.181, but the active symlink stayed at2.1.170.Expected Behavior
With
autoUpdatesChannel: "latest",claude updateshould check the latest channel and install2.1.181— matching the background auto-updater and the documented behavior:— https://code.claude.com/docs/en/setup
Actual Behavior
claude updatealways queries thestablechannel (it printsChecking for updates to stable version...), ignoringautoUpdatesChannel: "latest".Environment
~/.local/bin/claude, Mach-O arm64)2.1.170(stable head); latest channel head2.1.181~/.claude/settings.json:autoUpdatesChannel: "latest",minimumVersion: "2.1.170"com.anthropic.claudefordesktop.ShipItpresent), but the failing path here is theclaude updatecommand's own channel selection — it explicitly prints "stable" — independent of the Desktop updater.Related issues
claude update#63038 — docs: npmclaude updaterelease-channel behavior (open)