To update Claude Code, run claude update if you used the native installer, which also updates itself in the background; Homebrew, WinGet, npm and the Linux package managers each have their own upgrade command, listed below (setup docs). To check your version, run claude --version, and to see what changed, open the official changelog or type /release-notes in a session. Every command here was checked against the Claude Code docs on October 3, 2026.
Update command by install method
| Installed with | Update command | Updates itself? |
|---|---|---|
| Native installer | claude update | Yes, in the background |
| npm | npm install -g @anthropic-ai/claude-code@latest | Yes, if the npm global directory is writable |
| Homebrew | brew upgrade claude-code or brew upgrade claude-code@latest | No, unless you opt in (check 6) |
| WinGet | winget upgrade Anthropic.ClaudeCode | No, unless you opt in (check 6) |
| apt | sudo apt update && sudo apt upgrade claude-code | No |
| dnf | sudo dnf upgrade claude-code | No |
| apk | apk update && apk upgrade claude-code | No |
Commands are quoted from the setup page and its Linux package manager section. apt, dnf and apk stay manual because those commands need elevated privileges.
Update, step by step
Check 1: Which version are you on?
2.1.211 (Claude Code). /status shows it on the Status tab next to model, account and connectivity (commands).claude isn't found, the install directory isn't on your PATH; the install troubleshooting page has the fix.Check 2: How did you install it?
which -a claude
ls -la ~/.local/bin/claude
ls -la ~/.claude/local/
npm -g ls @anthropic-ai/claude-code 2>/dev/nullclaude. A native install shows ~/.local/bin/claude as a symlink into ~/.local/share/claude/versions/; on Windows, where.exe claude lists %USERPROFILE%\.local\bin\claude.exe.npm uninstall -g @anthropic-ai/claude-code, or rm -rf ~/.claude/local for a legacy local npm install.No such file or directory from ls is not an error; it means nothing is installed at that location.Check 3: Did the update command run?
claude updateSuccessfully updated from <old version> to version <new version>, or Claude Code is up to date (<version>) when nothing is newer. On a Homebrew, WinGet or apk install, claude update reports Claude is up to date! instead (update manually).@latest install from the table, not npm update -g, which respects the semver range of the original install and may leave you behind (install with npm).Check 4: Is the new version the one that runs?
claude --version again.claude respawn --all restarts every running one with its conversation intact (CLI reference).Check 5: Which release channel do you follow?
/config, or set the key in ~/.claude/settings.json:{
"autoUpdatesChannel": "stable"
}"latest", the default, gets each release as soon as it ships. "stable" runs a version that is typically about one week old and skips releases with major regressions (release channel).claude-code cask tracks stable and claude-code@latest tracks latest (settings reference). apt, dnf and apk choose the channel by repository.Check 6: Are auto-updates set the way you want?
DISABLE_AUTOUPDATER in the env key, then run claude doctor:{
"env": {
"DISABLE_AUTOUPDATER": "1"
}
}Auto-updates line reads disabled (set by env: DISABLE_AUTOUPDATER) instead of enabled (disable auto-updates).claude update and claude install still work with it set. To block every update path, set DISABLE_UPDATES to 1 instead (environment variables).CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE set to 1 turns updates on; on WinGet the upgrade can fail while Claude Code runs, because Windows locks the executable (auto-updates).Check 7: What changed in the new version?
/doctor prompt-audit requiring v2.1.283 or later (commands), and compare it with check 1.Why the version matters for these manuals
This manual carries the date it was checked because an independent fact-checker agent rereads the official docs for every article on this blog and fixes or cuts any claim they do not support. The docs tie behavior to versions, so a step that behaves differently for you may be a version gap, and checks 1 and 7 tell you which. How the writer and the fact-checker split that work is in Claude Code subagents: split the work, verify the result.
Tags
Frequently asked questions
Why is Claude Code not updating automatically?
Native and npm installs update themselves in the background; Homebrew, WinGet, apt, dnf and apk do not by default. An npm install also stops updating when the npm global directory is not writable, with a one-time notice at startup. On a native install, check that DISABLE_AUTOUPDATER is not set, and remember that an update takes effect the next time you start Claude Code. claude doctor shows the result of the most recent update attempt.
How do I roll back Claude Code to an older version?
On a native install, run claude install with a version number, such as claude install 2.1.118, or pass the version to the install script. claude --version then prints the exact version you asked for. Native installs auto-update to keep you on the latest version, so set DISABLE_AUTOUPDATER if you need to stay on the older one.
What is the difference between Claude Code stable and latest?
latest, the default, gets every release as soon as it ships. stable serves a version that is typically about one week old and skips releases with major regressions. Switching from latest to stable in /config asks whether to allow the downgrade or stay on your current version; staying sets minimumVersion so updates never go below it.
Where can I find the Claude Code changelog?
In the official docs at code.claude.com/docs/en/changelog, which is generated from CHANGELOG.md in the anthropics/claude-code repository on GitHub and lists each version with its date. Inside a session, /release-notes opens the changelog in a version picker.