How to Update Claude Code in 2026 (Latest Version, Changelog & Uninstall)
If you installed Claude Code with the native installer, it updates itself in the background, and Claude Code's built-in update command applies a new version right away. Homebrew, WinGet, apt, dnf and apk installs don't auto-update by default, so you upgrade them with your package manager. npm installs upgrade by reinstalling the package at its @latest tag. Every command is below, grouped by install method.
This guide also covers release channels (latest or stable), pinning or rolling back a version, turning updates off, reading the changelog, fixing failed updates, and uninstalling. It was checked against Anthropic's Claude Code docs and changelog on October 17, 2026.
Step 1: Check your current version
claude --versionThe output looks like 2.1.302 (Claude Code). Inside a running session, this command shows your version, model, account and connectivity:
/statusTo read what changed in each release without leaving Claude Code, open the interactive version picker:
/release-notesNot sure how you installed it?
The update command depends on the install method, so check that first. The native installer puts a launcher at ~/.local/bin/claude on macOS and Linux (a symlink into ~/.local/share/claude/versions/) or claude.exe in %USERPROFILE%\.local\bin on Windows. On macOS or Linux, this lists every claude on your PATH, which also reveals duplicate installs:
which -a claudeOn Windows PowerShell:
where.exe claudeTo see whether Homebrew installed it, and which cask:
brew list --cask | grep claude-codeFor a full read-only report, including install health and the result of the last update attempt, run:
claude doctorStep 2: Update with the command for your install method
Native installer (macOS, Linux, WSL, Windows)
claude updateWhen an update installs, it reports Successfully updated from the old version to the new one. If you're current, it reports that Claude Code is up to date. Installs managed by Homebrew, WinGet or apk print Claude is up to date! instead, because the package manager owns those.
Homebrew
For the stable cask:
brew upgrade claude-codeFor the latest cask:
brew upgrade claude-code@latestHomebrew keeps old versions on disk after upgrades. Run the cleanup command now and then to free space:
brew cleanupWinGet
winget upgrade Anthropic.ClaudeCodeapt (Debian, Ubuntu)
sudo apt update && sudo apt upgrade claude-codednf (Fedora, RHEL)
sudo dnf upgrade claude-codeapk (Alpine)
apk update && apk upgrade claude-codenpm
npm install -g @anthropic-ai/claude-code@latestFor npm installs, avoid npm's own global update command. It respects the version range from your original install and may not move you to the newest release. Use the @latest command above instead, and never install with sudo.
After any update, open a new session (or restart Claude Code) and check the version again. Updates take effect the next time Claude Code starts.
How auto-updates work
Claude Code checks for updates at startup and periodically while it runs. Updates download and install in the background, then take effect the next time you start Claude Code. The doctor report from Step 1 shows the result of the most recent update attempt.
- Native installs auto-update by default.
- npm installs auto-update when the npm global directory is writable. If it isn't, Claude Code shows a one-time notice at startup, and the doctor report lists the fixes.
- Homebrew, WinGet, apt, dnf and apk installs don't auto-update by default. apt, dnf and apk always need a manual upgrade, because those commands need elevated privileges.
- Custom launchers: if you replace ~/.local/bin/claude with your own script or symlink, updates still install new versions under the versions/ directory but leave your launcher alone, and Claude Code keeps every installed version on disk. Remove your launcher and run the update command to hand control back to Claude Code.
On native installs, Claude Code deletes old versions on its own: besides the version in use, it keeps the two newest versions and removes the rest.
Let Claude Code run Homebrew or WinGet upgrades for you
Set the CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE environment variable to 1, for example in the env block of settings.json. Claude Code then runs the package manager's upgrade in the background when a new version is available and shows a restart prompt when it succeeds. The upgrade only touches the Claude Code package.
{
"env": {
"CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE": "1"
}
}On WinGet, the upgrade can fail while Claude Code is running because Windows locks the executable; Claude Code then shows the manual command. Anthropic also lists a known issue: Claude Code may announce an update before your package manager has it, so if an upgrade fails, wait and try again later.
Choose a release channel: latest or stable
| Channel | What you get | Good for |
|---|---|---|
| latest (default) | Every release as soon as it ships | Getting new features and new model support immediately |
| stable | A version that is typically about a week old, skipping releases with major regressions | Teams and anyone who prefers fewer surprises |
The autoUpdatesChannel setting controls which builds native and npm installs receive, both for background updates and for the manual update command. Change it under Auto-update channel in the settings screen, which you open with this command inside Claude Code:
/configOr set it in settings.json:
{
"autoUpdatesChannel": "stable"
}A newly launched model can require a Claude Code version newer than stable offers. If you want that model right away, switch to latest. Organizations can enforce one channel for everyone through managed settings.
Channels for Homebrew and Linux packages
Homebrew picks the channel by cask name instead of the setting: claude-code tracks stable and claude-code@latest tracks latest. The apt, dnf and apk repositories pick the channel by repository URL. For apt, switching to latest changes both the URL path and the suite name:
echo "deb [signed-by=/etc/apt/keyrings/claude-code.asc] https://downloads.claude.ai/claude-code/apt/latest latest main" \
| sudo tee /etc/apt/sources.list.d/claude-code.listFor dnf, set baseurl in /etc/yum.repos.d/claude-code.repo to the latest repository:
baseurl=https://downloads.claude.ai/claude-code/rpm/latestFor apk, remove the stable line and add the latest repository:
sed -i '\|downloads.claude.ai/claude-code/apk/stable|d' /etc/apk/repositories
echo "https://downloads.claude.ai/claude-code/apk/latest" >> /etc/apk/repositoriesKeep a minimum version when switching to stable
Moving from latest to stable could otherwise take you back to an older build. When you switch in the settings screen, Claude Code asks whether to stay on your current version or allow the downgrade; staying sets minimumVersion for you. You can also set the floor yourself, and updates will refuse anything below it:
{
"autoUpdatesChannel": "stable",
"minimumVersion": "2.1.100"
}Install a specific version or roll back
The native installer accepts a version number or a channel name. If a new release breaks something for you, reinstalling an earlier version is the official way back. For example, to install version 2.1.89 on macOS, Linux or WSL:
curl -fsSL https://claude.ai/install.sh | bash -s 2.1.89In Windows PowerShell:
& ([scriptblock]::Create((irm https://claude.ai/install.ps1))) 2.1.89In Windows CMD:
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd 2.1.89 && del install.cmdIf Claude Code is already installed, its own install subcommand does the same and also accepts stable or latest:
claude install 2.1.89The version command then prints the exact version you asked for. Unless you also turn auto-updates off (next section), the next background update will move you forward again.
Turn off automatic updates
To stop background updates, add DISABLE_AUTOUPDATER set to "1" in the env block of settings.json. Manual updates and the install subcommand still work.
{
"env": {
"DISABLE_AUTOUPDATER": "1"
}
}On a native or npm install, check that it took effect in the doctor report from Step 1: the Auto-updates line should read disabled (set by env: DISABLE_AUTOUPDATER) instead of enabled. To block every update path, including manual updates, set DISABLE_UPDATES instead. Anthropic suggests that for organizations that distribute Claude Code through their own channels and need everyone on the version they provide.
{
"env": {
"DISABLE_UPDATES": "1"
}
}Running an old version means missing security fixes and support for new models. If you pin a version, set a reminder to review the changelog and move forward on your own schedule.
Where to find the Claude Code changelog
- Inside Claude Code, the release-notes command shown in Step 1 opens a version picker; the notes appear in your transcript without being sent to Claude.
- The docs changelog at code.claude.com/docs/en/changelog is generated from CHANGELOG.md in the anthropics/claude-code GitHub repository.
- When we checked on October 17, 2026, the newest entry was version 2.1.302, dated October 16, 2026. Releases ship often, sometimes more than once a day, so check the changelog for the current number.
The changelog is also where Anthropic records fixes to the updater itself, which is useful when an update misbehaves. For example, the troubleshooting docs note that a hang in the update and doctor commands was fixed in v2.1.214, and that a Windows update bug that could lose the backup of claude.exe was fixed in v2.1.281.
Troubleshooting updates
"The connection dropped while downloading the update"
Claude Code retries a dropped, stalled or corrupted download up to three attempts in total. A download that stays connected but doesn't finish within 10 minutes fails with Download timed out: exceeded the total deadline and isn't retried. Run the update again, ideally on a faster network. If your network needs a proxy, set HTTPS_PROXY first; if a corporate proxy keeps cutting the transfer, ask your network team to allow downloads.claude.ai.
The update command hangs after "Checking for updates"
Before v2.1.214, a directory sitting at a shell config path such as ~/.zshrc or ~/.bashrc made both the update and doctor commands hang. Find it with:
ls -ld ~/.zshrc ~/.bashrc ~/.bash_profile ~/.bash_login ~/.profile ~/.config/fish/config.fishA line starting with d marks the culprit. Move it aside, or update by rerunning the install script instead, since the update command itself hangs on affected versions:
curl -fsSL https://claude.ai/install.sh | bash'claude' is not recognized right after an update on Windows
Windows updates rename the old claude.exe to a backup named claude.exe.old. followed by a timestamp, then move the new version in. If that failed, restore the newest backup in PowerShell:
Get-ChildItem "$env:USERPROFILE\.local\bin\claude.exe.old.*" | Sort-Object Name | Select-Object -Last 1 | Rename-Item -NewName claude.exeIf there's no backup, reinstall:
irm https://claude.ai/install.ps1 | iexnpm error code ENOTEMPTY during an update
npm couldn't move the old package directory aside. On macOS or Linux, delete it and any leftover temporary copies, then reinstall:
rm -rf "$(npm root -g)/@anthropic-ai/claude-code"
rm -rf "$(npm root -g)/@anthropic-ai/.claude-code-"*
npm install -g @anthropic-ai/claude-codeHomebrew: "Cask 'claude-code@latest' is not installed"
You're upgrading the other cask. Check which one you have with the brew list command in Step 1 and upgrade that one. If Homebrew offers an older version than the changelog shows, remember the claude-code cask tracks stable, which is about a week behind; refresh Homebrew's index or switch to the latest cask.
The version didn't change after updating
- The new version takes effect at the next start, so quit Claude Code and launch it again.
- You may have two installs (for example npm and native) and the old one comes first on your PATH. Use the PATH check from Step 1, keep one install and remove the rest.
- A custom launcher at ~/.local/bin/claude decides which version runs; updates don't replace it.
- Your settings may set the stable channel, a minimumVersion, or DISABLE_AUTOUPDATER or DISABLE_UPDATES, or your organization may enforce a version through managed settings. The doctor report shows which applies.
How to uninstall Claude Code
Use the removal steps that match how you installed it. If claude still runs afterwards, you probably have a second installation or a leftover shell alias.
Native install: macOS, Linux, WSL
rm -f ~/.local/bin/claude
rm -rf ~/.local/share/claudeNative install: Windows PowerShell
Remove-Item -Path "$env:USERPROFILE\.local\bin\claude.exe" -Force
Remove-Item -Path "$env:USERPROFILE\.local\share\claude" -Recurse -ForceHomebrew
brew uninstall --cask claude-codeOr, for the latest cask:
brew uninstall --cask claude-code@latestWinGet
winget uninstall Anthropic.ClaudeCodeapt
sudo apt remove claude-code
sudo rm /etc/apt/sources.list.d/claude-code.list /etc/apt/keyrings/claude-code.ascdnf
sudo dnf remove claude-code
sudo rm /etc/yum.repos.d/claude-code.repoapk
apk del claude-code
sed -i '\|downloads.claude.ai/claude-code/apk|d' /etc/apk/repositories
rm /etc/apk/keys/claude-code.rsa.pubnpm
npm uninstall -g @anthropic-ai/claude-codeRemove settings and history (optional)
This deletes all your settings, allowed tools, MCP server configurations and session history. The VS Code extension, JetBrains plugin and Desktop app also write to ~/.claude, so uninstall them first or the folder comes back.
rm -rf ~/.claude
rm ~/.claude.jsonTo also remove a project's own Claude Code settings, run this from inside the project folder:
rm -rf .claude
rm -f .mcp.jsonUninstalling the app doesn't cancel a subscription. Manage your plan in your claude.ai account settings. See Claude Code pricing and Claude pricing for plan options, or reinstall any time with our Claude Code install guide.
Keeping Claude Code current: what else to check
- Plan and billing: new features sometimes need a newer plan or model access. Check Claude Code pricing if a feature in the changelog doesn't appear for you.
- API key users: if you run Claude Code with an API key, updates don't change billing. Our Anthropic API key guide covers credits and spend limits.
- Workflows that changed: big releases can change commands and modes. Our Claude Code plan mode guide is kept in line with the current version.
- Free access: open-source maintainers can check Claude for Open Source and students the Claude student offers.
Frequently asked questions
›How do I update Claude Code to the latest version?
For a native install, run Claude Code's built-in update command. Homebrew, WinGet, apt, dnf and apk installs upgrade through the package manager, and npm installs by reinstalling the package at its @latest tag. Step 2 of this guide lists the exact command for each method.
›Does Claude Code update automatically?
Native installs (and npm installs with a writable global directory) update in the background, and the new version takes effect the next time you start Claude Code. Homebrew, WinGet, apt, dnf and apk installs don't auto-update by default; Homebrew and WinGet users can opt in with CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE.
›How do I check which version of Claude Code I have?
Run the version command from Step 1 in your terminal, or open the status screen inside a Claude Code session. Both show a number such as 2.1.302.
›Where is the Claude Code changelog?
Use the release-notes command inside Claude Code, or read code.claude.com/docs/en/changelog. It's generated from CHANGELOG.md in the anthropics/claude-code GitHub repository. On October 17, 2026 the newest entry was 2.1.302 from October 16, 2026.
›What is the difference between the latest and stable channels?
latest, the default, gets every release as soon as it ships. stable serves a version that is typically about a week old and skips releases with major regressions. A brand-new model can need a version newer than stable has.
›Why doesn't Homebrew find the new version yet?
Anthropic notes that Claude Code can announce an update before it reaches package managers, and the claude-code cask follows the stable channel, which is about a week behind. Wait and retry, refresh Homebrew's index, or switch to the claude-code@latest cask.
›How do I roll back to an older Claude Code version?
Run the native installer with a version number (for example 2.1.89), as shown in this guide for macOS, Linux, WSL and Windows. Then turn off background updates with DISABLE_AUTOUPDATER if you want to stay on that version.
›How do I stop Claude Code from updating?
Set DISABLE_AUTOUPDATER to "1" in the env block of settings.json to stop background updates while keeping manual updates. Set DISABLE_UPDATES instead to block all update paths.
›How do I completely uninstall Claude Code?
Remove the program with the steps for your install method (for a native install on macOS or Linux, delete ~/.local/bin/claude and ~/.local/share/claude). Then delete ~/.claude and ~/.claude.json if you also want to remove settings and history. Uninstalling doesn't cancel your subscription.
Sources
Checked against these pages on Oct 17, 2026. Providers change offers often: always confirm on the official page before you rely on it.
- Official: Claude Code advanced setup (updates and uninstall)(code.claude.com)
- Official: Claude Code changelog(code.claude.com)
- Official: Claude Code CHANGELOG.md on GitHub(github.com)
- Official: Claude Code commands reference(code.claude.com)
- Official: Troubleshoot installation and login(code.claude.com)
- Official: Claude Code environment variables(code.claude.com)
- Official: Claude Code CLI reference(code.claude.com)