← Claude Code Hub
✦ Tip #073 May 17, 2026

How to update Claude Code: one command, unless Homebrew or npm has left you weeks behind

With the native installer it's claude update, and even that is optional: it updates itself. Homebrew, WinGet, apt, dnf, apk and npm don't, and if you haven't seen a new feature in weeks, that's probably you.

Updating Claude Code: table by install method with auto-update and manual command

TL;DR Check your version with claude --version. If you installed via the native installer (curl … | bash), it auto-updates in the background. Force an update now with claude update. For Homebrew, WinGet, apt, dnf, apk or npm: use the package manager's own upgrade command — or set CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE=1 and let Claude run it for you (Homebrew/WinGet). Pick a release channel with autoUpdatesChannel: "latest" (default, new features immediately) or "stable" (~1 week behind, skips releases with major regressions).

To update Claude Code installed with the native installer, run claude update, though you rarely need to: it updates itself in the background. Homebrew, WinGet, apt, dnf, apk and npm installs don't, so you run your package manager's own command instead. Here they all are in one table.

If you haven't seen a new feature in months, you're probably in the second group: package-manager install that doesn't auto-update.

Do you have to update? Yes

New features ship every couple of weeks — skills, subagents, agent teams, /goal, GitHub Actions, the Agent SDK. The native binary keeps backwards compatibility with your CLAUDE.md and your settings across versions, so the cost of updating is basically zero. The cost of not updating is missing features that probably already have their own tips on this site.

Check your version

claude --version
# 2.1.281 (Claude Code)

Compare against the latest published version, or from inside Claude run /release-notes (interactive changelog picker).

How to update (by install method)

How you installed Auto-update Manual update command
Native installer (curl … | bash) ✅ Background claude update
Homebrew (brew install --cask claude-code) ❌ brew upgrade claude-code (or claude-code@latest, depending on the cask you installed)
WinGet (Windows) ❌ winget upgrade Anthropic.ClaudeCode
apt (Debian, Ubuntu) ❌ sudo apt update && sudo apt upgrade claude-code
dnf (Fedora, RHEL) ❌ sudo dnf upgrade claude-code
apk (Alpine) ❌ apk update && apk upgrade claude-code
npm (global) ❌ npm install -g @anthropic-ai/claude-code@latest

Important for npm: do NOT use npm update -g. It respects the semver range from the original install and may not move you to the newest release.

Install a specific version (or downgrade)

Sometimes you don't want the latest — you want a specific version, for CI or because a recent update broke something. The native installer accepts either an exact version or a channel name:

# macOS, Linux, WSL
curl -fsSL https://claude.ai/install.sh | bash -s 2.1.89

# Windows PowerShell
& ([scriptblock]::Create((irm https://claude.ai/install.ps1))) 2.1.89

Whatever channel you pick at install time (latest, stable, or an exact number) becomes the default for future auto-updates.

The package-manager trick

If you installed via Homebrew or WinGet but want Claude Code to auto-update anyway, drop this into your settings.json:

{
  "env": {
    "CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE": "1"
  }
}

From then on, when a new version is available Claude runs the upgrade in the background and shows a restart prompt on success. apt, dnf, and apk still require manual updates because their commands need elevated privileges.

Channel: latest vs stable

By default you're on "latest" — new features as soon as they ship. If a recent regression bit you and you'd rather be conservative:

{
  "autoUpdatesChannel": "stable"
}

"stable" runs ~1 week behind and skips releases with major regressions. Switch the channel via /config → Auto-update channel, or by editing settings.json directly. For teams: managed settings enforce a channel and minimumVersion org-wide.

Pin a minimum version

To make sure you don't accidentally downgrade past a specific version (for example when switching from "latest" to "stable"):

{
  "autoUpdatesChannel": "stable",
  "minimumVersion": "2.1.100"
}

Useful in CI or teams that want a common floor.

Disable auto-updates

If your network, internal policy, or paranoia doesn't allow Claude to update itself:

{
  "env": {
    "DISABLE_AUTOUPDATER": "1"
  }
}

DISABLE_AUTOUPDATER only stops the background check — claude update still works. To block everything (including manual updates), use DISABLE_UPDATES.

Reference: env vars and settings

Variable / setting For
claude --version Show installed version
claude update Force update now (any install method)
autoUpdatesChannel "latest" or "stable"
minimumVersion Version floor (refuses downgrades)
CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE=1 Auto-update through Homebrew/WinGet
DISABLE_AUTOUPDATER=1 Turn off the background check
DISABLE_UPDATES=1 Block every update path

Pairs well with

Official docs: Update Claude Code

Free guide

The 51 essentials, as a guide.

One page per tip. Five chapters. What I actually use daily in production. No theory, no fluff.

  • I. Getting started 10 tips
  • II. Awareness 3 tips
  • III. Mastery 22 tips
  • IV. Autonomy 10 tips
  • V. Comparison 6 tips
Are you a professional Web developer?

You'll receive the guide by email · You join the Gravitas newsletter · Unsubscribe anytime

of 51
#

Wmedia · 51 Tips
Free guide · 51 tips · 5 chapters

The 51 essentials, as a guide.

Are you a professional Web developer? · Unsubscribe anytime
Workshop for teams

Multiply your team's output without sacrificing quality: a 6 to 8 hour AI First workshop, online, on the Claude platform.

See the workshop

Want the 51 Claude Code essentials as a guide?