Blog
3 min read

How to Update Claude Code (and Choose Between the Latest and Stable Channels)

Native installs of Claude Code update themselves; Homebrew, WinGet, apt and npm installs don't. How to check your version, update with each method, pick the latest or stable release channel, and turn auto-updates off when you need a fixed version.

Claude Code ships new versions often — sometimes several a week. Staying current gets you new features and security fixes. How you update depends on how you installed it.

Check your version first

claude --version

Inside a session, /status also shows it.

Native installer: it updates itself

If you installed with the recommended native installer (the curl ... | bash or PowerShell one-liner), Claude Code updates automatically in the background. You don't need to do anything.

To force an update right now:

claude update

It reports either Successfully updated from X to version Y or Claude Code is up to date.

Homebrew

Homebrew installs don't auto-update. Run:

brew upgrade claude-code
# or, if you installed the latest cask:
brew upgrade claude-code@latest

Homebrew keeps old versions around, so run brew cleanup now and then to free disk space.

WinGet (Windows)

winget upgrade Anthropic.ClaudeCode

If it fails, close any running Claude Code sessions first — Windows locks the file while it's in use.

apt, dnf, apk (Linux packages)

Update like any other package:

sudo apt update && sudo apt upgrade claude-code   # Debian/Ubuntu
sudo dnf upgrade claude-code                       # Fedora/RHEL

npm

npm install -g @anthropic-ai/claude-code@latest

Use install ...@latest, not npm update -g — the latter respects the version range from your original install and may not move you to the newest release. The npm package needs Node.js 22 or newer.

Let Homebrew or WinGet update automatically

If you prefer a package manager but want automatic updates, set this environment variable:

// ~/.claude/settings.json
{
  "env": { "CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE": "1" }
}

Claude Code then runs the upgrade in the background and asks you to restart when it's done.

Latest vs stable: pick a release channel

There are two channels:

  • latest (default) — every release as soon as it ships.
  • stable — a version that's typically about a week old, skipping releases that had major problems.

If you'd rather not be the first to hit a new bug, use stable:

{
  "autoUpdatesChannel": "stable"
}

You can also switch in /config. Homebrew picks the channel by cask name instead: claude-code is stable, claude-code@latest is latest.

Turning auto-updates off

Sometimes you want a fixed version — say, on a shared machine or in CI:

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

That stops the background updates; claude update still works when you choose to run it. To block all updates, including manual ones, use DISABLE_UPDATES instead.

When an update seems not to work

  • claude --version shows the old number. You probably have two installs, and the old one comes first on your PATH. Run which -a claude and remove the extra one. (How to uninstall Claude Code)
  • "Permission denied" on an npm install. Your npm global folder isn't writable. Don't fix it with sudo — switch to the native installer. (npm EACCES errors)
  • Anything else odd. Run claude doctor; it checks for duplicate installs, PATH problems and whether auto-updates are enabled.

The summary

  • Native install: updates itself; claude update to force it.
  • Homebrew/WinGet/apt/npm: update manually with your package manager.
  • Use the stable channel if you'd rather wait a week for new releases.
  • Old version still showing? Look for a second install with which -a claude.

EasySpawn keeps Claude Code installed and current on your server, so the version question never comes up — you open a terminal and it's ready. See how it works or join the waitlist.

Related: How to Install Claude Code · How to Uninstall Claude Code · Claude Code Settings Explained · Claude Code Not Working?

Keep reading