# How to Update Claude Code (and Unstick It)

> claude update applies the newest Claude Code now, claude doctor says why one stalled, and package-manager installs need upgrading by hand. Copy-paste.

- Canonical: https://guides-ai.pages.dev/guides/update-claude-code/
- Plate 01.05 · Topic: Install & set up (https://guides-ai.pages.dev/topics/setup/)
- Published: 21 Aug 2026 · Updated: 06 Sept 2026 · 3 min read
- Source site: guides-ai — https://guides-ai.pages.dev/

Native installs update themselves in the background and take effect next launch, so most of the time you do nothing. **When you need it now, run `claude update`.** Everything else on this page is for the installs that never auto-update, and for the ones that quietly stopped.

## 1. Check your version

```bash
claude --version
```

Prints something like `2.1.211 (Claude Code)`. If this says `command not found`, the update isn't your problem — see [fixing command not found](/guides/fix-claude-command-not-found/).

## 2. Update now

```bash
claude update
```

Applies a pending update immediately instead of waiting for the next background check. On success it reports `Successfully updated from <old version> to version <new version>`; if you were already current it says `Claude Code is up to date`.

## 3. Package managers do not auto-update

This is the part that catches people. Homebrew, WinGet, apt, dnf and apk installs do **not** update through Claude Code — `claude update` just reports that it is up to date:

```bash
brew upgrade claude-code          # or claude-code@latest
winget upgrade Anthropic.ClaudeCode
npm install -g @anthropic-ai/claude-code@latest
```

Pick the line matching how you installed. The npm one has changed: use `@latest` explicitly, because `npm update -g` obeys the semver range from your original install and can leave you behind.

## 4. When an update stalls

```bash
claude doctor
```

Prints read-only install and settings diagnostics without starting a session — including the result of the most recent update attempt. The usual causes are a non-writable npm global directory (never fix that with `sudo`) and a custom launcher script at `~/.local/bin/claude` that the installer now leaves alone. Remove that launcher and re-run `claude update` to hand control back.

## 5. Choose how fast updates arrive

```json
{ "autoUpdatesChannel": "stable" }
```

Add this to your [settings.json](/guides/claude-code-settings-json/) to track the stable channel — roughly a week behind, skipping releases with major regressions — instead of the default `latest`. To stop background updating entirely, set `DISABLE_AUTOUPDATER` to `"1"` under `env`; `claude update` still works.

A [slash command](/glossary/#slash-command) or flag you read about but don't have is almost always a version gap, not a bug. Fresh install instead? See [install Claude Code on Windows](/guides/install-claude-code-windows/) and the [official setup docs](https://code.claude.com/docs/en/setup).
