GrabAICredits (GrabAICredits)Submit a deal

How to Update Claude Code in 2026 (Latest Version, Changelog & Uninstall)

Verified ·10 min read

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 --version

The output looks like 2.1.302 (Claude Code). Inside a running session, this command shows your version, model, account and connectivity:

/status

To read what changed in each release without leaving Claude Code, open the interactive version picker:

/release-notes

Not 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 claude

On Windows PowerShell:

where.exe claude

To see whether Homebrew installed it, and which cask:

brew list --cask | grep claude-code

For a full read-only report, including install health and the result of the last update attempt, run:

claude doctor

Step 2: Update with the command for your install method

Native installer (macOS, Linux, WSL, Windows)

claude update

When 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-code

For the latest cask:

brew upgrade claude-code@latest

Homebrew keeps old versions on disk after upgrades. Run the cleanup command now and then to free space:

brew cleanup

WinGet

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

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

For 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

ChannelWhat you getGood for
latest (default)Every release as soon as it shipsGetting new features and new model support immediately
stableA version that is typically about a week old, skipping releases with major regressionsTeams 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:

/config

Or 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.list

For dnf, set baseurl in /etc/yum.repos.d/claude-code.repo to the latest repository:

baseurl=https://downloads.claude.ai/claude-code/rpm/latest

For 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/repositories

Keep 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.89

In Windows PowerShell:

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

In Windows CMD:

curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd 2.1.89 && del install.cmd

If Claude Code is already installed, its own install subcommand does the same and also accepts stable or latest:

claude install 2.1.89

The 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.fish

A 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.exe

If there's no backup, reinstall:

irm https://claude.ai/install.ps1 | iex

npm 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-code

Homebrew: "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/claude

Native install: Windows PowerShell

Remove-Item -Path "$env:USERPROFILE\.local\bin\claude.exe" -Force
Remove-Item -Path "$env:USERPROFILE\.local\share\claude" -Recurse -Force

Homebrew

brew uninstall --cask claude-code

Or, for the latest cask:

brew uninstall --cask claude-code@latest

WinGet

winget uninstall Anthropic.ClaudeCode

apt

sudo apt remove claude-code
sudo rm /etc/apt/sources.list.d/claude-code.list /etc/apt/keyrings/claude-code.asc

dnf

sudo dnf remove claude-code
sudo rm /etc/yum.repos.d/claude-code.repo

apk

apk del claude-code
sed -i '\|downloads.claude.ai/claude-code/apk|d' /etc/apk/repositories
rm /etc/apk/keys/claude-code.rsa.pub

npm

npm uninstall -g @anthropic-ai/claude-code

Remove 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.json

To also remove a project's own Claude Code settings, run this from inside the project folder:

rm -rf .claude
rm -f .mcp.json

Uninstalling 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

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.

  1. Official: Claude Code advanced setup (updates and uninstall)(code.claude.com)
  2. Official: Claude Code changelog(code.claude.com)
  3. Official: Claude Code CHANGELOG.md on GitHub(github.com)
  4. Official: Claude Code commands reference(code.claude.com)
  5. Official: Troubleshoot installation and login(code.claude.com)
  6. Official: Claude Code environment variables(code.claude.com)
  7. Official: Claude Code CLI reference(code.claude.com)