[BUG] claude update checks the "stable" channel despite autoUpdatesChannel: "latest" (native install)

Open 💬 0 comments Opened Jun 18, 2026 by arvindkhadri

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

  1. Native install (~/.local/bin/claude -> ~/.local/share/claude/versions/<v>), macOS arm64.
  2. Set "autoUpdatesChannel": "latest" in ~/.claude/settings.json.
  3. Channel heads at time of report: stable -> 2.1.170, latest -> 2.1.181

(from .../claude-code-releases/stable and .../latest).

  1. 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.

  1. 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

  • #46280, #23749 — auto-updater / Desktop ShipIt downgrading to stable (both closed not-planned/duplicate)
  • #63038 — docs: npm claude update release-channel behavior (open)

View original on GitHub ↗