All posts
AI AgentsStep-by-step

How to Update Claude Code and Check Your Version

How to update Claude Code for each install method, check your version with claude --version, pick stable or latest, and read the official changelog.

October 4, 2026·5 min read·by Olexander Cheberko
Table of contentstap to expand

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 withUpdate commandUpdates itself?
Native installerclaude updateYes, in the background
npmnpm install -g @anthropic-ai/claude-code@latestYes, if the npm global directory is writable
Homebrewbrew upgrade claude-code or brew upgrade claude-code@latestNo, unless you opt in (check 6)
WinGetwinget upgrade Anthropic.ClaudeCodeNo, unless you opt in (check 6)
aptsudo apt update && sudo apt upgrade claude-codeNo
dnfsudo dnf upgrade claude-codeNo
apkapk update && apk upgrade claude-codeNo

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?

WhereTerminal
Do: Run claude --version (short form claude -v), or type /status inside a session (CLI reference).
You should see: A version number such as 2.1.211 (Claude Code). /status shows it on the Status tab next to model, account and connectivity (commands).
If not: If the shell says 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?

WhereTerminal
Do: List every claude on your PATH and the places one can come from (conflicting installations):
which -a claude
ls -la ~/.local/bin/claude
ls -la ~/.claude/local/
npm -g ls @anthropic-ai/claude-code 2>/dev/null
You should see: One claude. 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.
If not: If two installs show up, keep one, preferably the native install, and remove the rest, for example with npm uninstall -g @anthropic-ai/claude-code, or rm -rf ~/.claude/local for a legacy local npm install.
Careful: 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?

WhereTerminal
Do: Run the command for your method from the table. On a native install:
claude update
You should see: Successfully 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).
If not: On npm, use the @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).
Careful: Claude Code can announce an update before Homebrew, WinGet, apt, dnf or apk carry it. If the upgrade fails, wait and try again later (known issue).

Check 4: Is the new version the one that runs?

WhereTerminal
Do: Quit open sessions, open a new terminal and run claude --version again.
You should see: The new number. Updates install in the background and take effect the next time you start Claude Code (auto-updates).
If not: If the old number is still there, a second install may sit earlier on your PATH. Go back to check 2.
Careful: To move running background sessions to the updated binary, claude respawn --all restarts every running one with its conversation intact (CLI reference).

Check 5: Which release channel do you follow?

WhereClaude Code/config
Do: Pick Auto-update channel in /config, or set the key in ~/.claude/settings.json:
{
  "autoUpdatesChannel": "stable"
}
You should see: "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).
If not: If a newly launched model needs a newer version than stable serves, move to latest to run it now.
Careful: Homebrew ignores this key: the 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?

Where~/.claude/settings.json
Do: To stop background updates, set DISABLE_AUTOUPDATER in the env key, then run claude doctor:
{
  "env": {
    "DISABLE_AUTOUPDATER": "1"
  }
}
You should see: On a native or npm install, the Auto-updates line reads disabled (set by env: DISABLE_AUTOUPDATER) instead of enabled (disable auto-updates).
If not: claude update and claude install still work with it set. To block every update path, set DISABLE_UPDATES to 1 instead (environment variables).
Careful: On Homebrew or WinGet, 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?

WhereClaude Code/release-notes
Do: Type /release-notes in a session, or open the changelog in a browser.
You should see: A version picker whose notes appear in your transcript without entering the conversation Claude sees. The docs page lists each version with its date and is generated from CHANGELOG.md on GitHub.
If not: If a feature from the docs is missing, find its version note, such as /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

how-to-update-claude-codeclaude-codeclaude-code-changelogclaude-code-versionauto-updates

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.

Related posts