本文へスキップ

Claude Codeのアップデートが反映されない:自動更新の仕組み・claude update・二重インストール

Claude Codeのバージョンが古いまま、claude updateしても変わらない、警告が出続ける原因(自動更新の反映タイミング、DISABLE_AUTOUPDATER、ネイティブとnpm/WinGetの混在、PATH順序)と対処を、公式ページと2.1.261の実出力で整理(2026-09-14確認)。

SHAYOUWORLD 更新 約7分

「Claude Code を更新したのに claude --version が古いまま」「新機能の説明どおりに動かない」というとき、原因は3つのどれかです。(1) 更新は済んでいるが次回起動待ち、(2) 更新が環境変数や配布経路の都合で無効化されている、(3) 更新したのとは別のバイナリがシェルから呼ばれている。 どれに当たるかは claude doctor の数行でほぼ判定できます。

この記事は公式 setup ページの「Update Claude Code」節と troubleshoot-install ページを根拠に、手元の Claude Code 2.1.261(Windows ネイティブ)で確認した出力を貼りながら、切り分け手順をまとめます。Windows 固有のシェルやパスの話はWindows ネイティブ環境のトラブルに分けています。

  1. ネイティブ版は起動時と定期的に確認し、次回起動で反映。 動いているセッションには入りません。
  2. claude doctor の Last update attempt と Path を見る。 更新の成否と、どのバイナリが動いているかがここに出ます。
  3. DISABLE_AUTOUPDATER は背景更新だけを止める。 claude update は動きます。全部止めるのは DISABLE_UPDATES。
  4. 複数経路の混在が最多の原因。 which -a claude / where.exe claude で洗い出し、ネイティブ1本に寄せます。

自動更新はこう動く

公式 setup ページの記述を時系列に並べるとこうなります。

  1. 起動時
    更新を確認
    ネイティブ版は起動時と、実行中も定期的に新バージョンを確認する
  2. 背景
    ダウンロードとインストール
    バックグラウンドで進む。macOS/Linux は ~/.local/share/claude/versions/ に版ごとに置かれる
  3. 次回起動
    新バージョンが有効に
    実行中のセッションには反映されない。閉じて claude を起動し直す
  4. 任意
    claude doctor で確認
    Last update attempt 行に直近の試行結果と版・日付が出る
code.claude.com/docs/en/setup「Auto-updates」より(2026-09-14 取得)

手元の claude doctor ではこう出ました。

Running: native (2.1.261)
Path: C:\Users\<user>\.local\bin\claude.exe
Config install method: native
Auto-updates: disabled (set by env: DISABLE_AUTOUPDATER)
Auto-update channel: latest
Last update attempt: success → 2.1.261 (2026-09-04)

読み方はそのままです。Running が今動いている版、Path がその実体、Auto-updates が自動更新の状態と無効化の理由、Last update attempt が直近の試行結果です。この環境では Claude Desktop 経由で起動しているため DISABLE_AUTOUPDATER が環境変数として渡っており、背景更新が止まっていることが一目で分かります。Windows でも ~/.local/share/claude/versions に 2.1.240 2.1.251 2.1.261 の3版が残っているのを確認しました。

claude update の応答は3種類あります。更新が入ると Successfully updated from <old version> to version <new version>、最新なら Claude Code is up to date (<version>)、Homebrew / WinGet / apk 管理の場合は Claude is up to date! です。最後のものが出るなら、更新はパッケージマネージャ側でやる必要があります。

$ claude update --help
Usage: claude update|upgrade [options]
Check for updates and install if available
$ claude install --help
Usage: claude install [options] [target]
Install Claude Code native build. Use [target] to specify version (stable, latest, or specific version)
Options:
--force Force installation even if already installed

原因1:反映待ち・チャンネル・最低バージョン

次回起動を待っていない。 一番多いのがこれです。Last update attempt: success → X なのに Running が古ければ、閉じて起動し直すだけです。

stable チャンネルにいる。 autoUpdatesChannel が "stable" だと「通常1週間ほど古い、大きなリグレッションを含む版を飛ばした版」に追従します。最新機能をすぐ試したいなら "latest"(既定)です。/config の「Auto-update channel」か settings.json で切り替えます。

{
"autoUpdatesChannel": "stable"
}

latest から stable に切り替えると、/config は「今の版に留まるか、ダウングレードを許すか」を尋ね、留まる場合は minimumVersion にその版を書き込みます。minimumVersion は下限なので、これが設定されていると stable の古い版には下がりません。逆に latest に戻すとクリアされます。

組織の requiredMinimumVersion / requiredMaximumVersion。 managed settings でこれが効いていると、範囲外では起動自体を拒否します。Error reference の Claude Code ... is older than the minimum version required by your organization's policy がこれです。

原因2:更新が無効化されている

DISABLE_AUTOUPDATER を "1" にすると背景更新が止まります。settings.json の env に書く形が公式の例です。

{
"env": {
"DISABLE_AUTOUPDATER": "1"
}
}

確認は claude doctor の Auto-updates 行が disabled (set by env: DISABLE_AUTOUPDATER) になっていることです(上の実出力がまさにこの状態)。この変数は背景での確認だけを止め、claude update と claude install は動きます。 手動更新まで含めて全経路を塞ぐのは DISABLE_UPDATES で、社内で独自配布している場合向けです。

「自分で設定した覚えがないのに disabled」なら、この記事の環境のように親プロセス(Desktop アプリや IDE 拡張、CI)が環境変数を渡している可能性を疑ってください。claude doctor は set by env: と理由を書いてくれます。

原因3:別のバイナリが呼ばれている(最多)

更新したのに変わらない、という相談で実際に一番多いのがこれです。公式 troubleshoot ページの「Check for conflicting installations」をそのまま実行します。

Terminal window
# macOS / Linux / Git Bash
which -a claude
ls -la ~/.local/bin/claude # ネイティブ版。versions/ へのシンボリックリンクなら正常
ls -la ~/.claude/local/ # 旧式のローカル npm インストール
npm -g ls @anthropic-ai/claude-code 2>/dev/null
Terminal window
# Windows PowerShell
where.exe claude
Test-Path "$env:USERPROFILE\.local\bin\claude.exe"
npm -g ls @anthropic-ai/claude-code

手元の実行結果です。

$ which -a claude
/c/Users/<user>/.local/bin/claude
$ npm ls -g @anthropic-ai/claude-code
C:\Users\<user>\AppData\Roaming\npm
`-- @anthropic-ai/[email protected]

claude コマンドとして見つかるのはネイティブの1件だけですが、npm のグローバル領域には別パッケージの依存として 1.0.108 という 1 年以上前の版が残っていました。今回は依存としてネストしているだけで bin にリンクされていないので無害ですが、npm install -g @anthropic-ai/claude-code を一度でも打った環境なら、PATH の順序次第でこちらが先に起動します。claude --version が古い版を返し、claude update は「ネイティブ側」を更新しているのに反映されない、という構図です。

ネイティブ版(推奨)
npm グローバル版
実体の場所
~/.local/bin/claude → ~/.local/share/claude/versions/<ver>(Windows は %USERPROFILE%\.local\bin\claude.exe)
npm のグローバル bin(npm config get prefix 配下)
更新
自動更新 + claude update
npm install -g @anthropic-ai/claude-code@latest。npm update -g は不可
前提
なし
Node.js 22 以上(v2.1.198+)。古いと EBADENGINE 警告
典型的な失敗
PATH に ~/.local/bin が無い
npm ENOTEMPTY、.ps1 シムが実行ポリシーで止まる、権限エラー
共存時
PATH で先なら勝つ
PATH で先なら古い版が起動し続ける
code.claude.com/docs/en/setup と /docs/en/troubleshoot-install より(2026-09-14)

公式はネイティブ1本に寄せることを推奨しています。残す側を決めたら、それ以外を消します。

Terminal window
npm uninstall -g @anthropic-ai/claude-code
rm -rf ~/.claude/local # 旧ローカル版
brew uninstall --cask claude-code # Homebrew
Terminal window
Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\local"
winget uninstall Anthropic.ClaudeCode

npm 版のまま最新にしたい場合、npm install -g @anthropic-ai/claude-code@latest です。公式は npm update -g について「元のインストール時の semver 範囲を尊重するので最新に上がらないことがある」と注意しています。上書きインストールで npm error code ENOTEMPTY が出たら、エラーの npm error path 行が示すディレクトリと、隣の .claude-code-* 一時ディレクトリを消してから再実行します。

Terminal window
Remove-Item -Recurse -Force "$(npm root -g)/@anthropic-ai/claude-code", "$(npm root -g)/@anthropic-ai/.claude-code-*"
npm install -g @anthropic-ai/claude-code

nvm で Node の版を切り替えている人は要注意です。グローバルパッケージは Node の版ごとに別ディレクトリなので、nvm use を変えた瞬間に「別の claude」が見えるようになります。手元も nvm4w で Node 24.8.0 / 20.19.0 / 20.16.0 を切り替えられる構成で、npm のグローバル prefix は C:\Users\<user>\AppData\Roaming\npm でした。

そのほかの詰まり方

PowerShell インストーラーは成功したのに古いまま。 troubleshoot ページの症状表に「PowerShell installer completes but claude is not found or shows an old version」があり、対処は %USERPROFILE%\.local\bin を User PATH に追加して新しいターミナルを開くことです。既存のターミナルは PATH を読み直しません。

claude update が Checking for updates の後で固まる。 v2.1.214 より前の既知の問題で、~/.zshrc や ~/.bashrc などシェル設定ファイルのパスにディレクトリが置かれていると発生しました。claude doctor も無出力で固まります。ls -ld ~/.zshrc ~/.bashrc ~/.bash_profile ~/.bash_login ~/.profile ~/.config/fish/config.fish で d 始まりの行を探し、退避するか、claude update が使えないのでインストールスクリプトを再実行して v2.1.214 以降に上げます。

ダウンロードが途中で切れる。 Error reference の The connection dropped while downloading the update と Download timed out: exceeded the total deadline はネットワーク起因で、再試行が対処です。企業プロキシ配下では HTTPS_PROXY を設定してから claude update を実行します。

新しいモデルが選べない。 Claude Code ... does not support this model; version ... or newer is required は Claude Code の版が古いことを意味します。更新して起動し直せば解決します。逆に言うと、モデル関連のエラーは更新トラブルの発見口になります。

独自ランチャーを置いている。 ~/.local/bin/claude を自作スクリプトやシンボリックリンクに差し替えている場合、v2.1.207 以降は自動更新も claude update もそれを残し、新版は versions/ に置くだけになります。どの版を動かすかはランチャー次第で、判別できないので全版がディスクに残り続けます。claude doctor が「インストーラーが作ったものではないランチャー」を報告します。Claude Code に管理を戻すには ~/.local/bin/claude を消して claude update です。

特定の版を入れる・強制再インストール

「最新で壊れたので一つ前に戻したい」「壊れたので入れ直したい」場合、インストーラーに版か チャンネルを渡します。claude install <target> --force でもできます。

Terminal window
# Windows PowerShell(stable / latest / 版番号のいずれか)
& ([scriptblock]::Create((irm https://claude.ai/install.ps1))) stable
& ([scriptblock]::Create((irm https://claude.ai/install.ps1))) 2.1.89
Terminal window
# macOS / Linux / WSL
curl -fsSL https://claude.ai/install.sh | bash -s stable
curl -fsSL https://claude.ai/install.sh | bash -s 2.1.89

インストール時に選んだチャンネルが、その後の自動更新の既定チャンネルになります。版番号を渡した場合は claude --version がその番号を返すことを確認してください。

切り分けチェックリスト

上から順に見れば、どのケースかは数分で決まります。

1. claude --version # 今動いている版
2. claude doctor # Running / Path / Auto-updates / Last update attempt
3. which -a claude または where.exe claude # 経路が2つ以上ないか
4. npm -g ls @anthropic-ai/claude-code # npm 版の残骸
5. claude update # 応答が Successfully / up to date / Claude is up to date! のどれか
6. 起動し直す # 反映は次回起動

3 で複数出たらネイティブ以外を消す、5 で Claude is up to date! ならパッケージマネージャ側で更新する、Auto-updates: disabled なら誰がその環境変数を渡しているか探す。この3分岐で大半が片づきます。

まとめ

  • ネイティブ版は起動時と定期的に確認し、次回起動で反映される。実行中のセッションには入らない
  • claude doctor の Running / Path / Auto-updates / Last update attempt で状態がすべて読める
  • DISABLE_AUTOUPDATER は背景更新だけ止め、claude update は動く。全部止めるのは DISABLE_UPDATES
  • 最多の原因は別経路のバイナリ。which -a / where.exe で洗い出し、ネイティブ1本に寄せる
  • npm 版は @latest 指定で更新(npm update -g は不可)、ENOTEMPTY は残骸ディレクトリを消す

更新後に権限や hooks の挙動が変わったと感じたら、settings.json 逆引きリファレンスのバージョン依存キーを確認してください。

関連して読む

この記事の情報・検証メモ
Tags
公開日
情報確認
参考リンク
3件
更新性
定期更新
更新管理

仕様・料金・提供範囲が変わりやすいテーマは、公開日・更新日・情報確認日を分けて管理します。 導入前には必ず記事末尾の一次情報と公式ドキュメントで最新状況を確認してください。

検証メモ
Claude Code 2.1.261 (native, win32-x64) claude doctor / claude update --help / claude install --help / npm -g ls 実行日 2026-09-14
図解を保存・共有

記事の要点を1枚にまとめました。画像は新しいタブで開いて保存できます。

Claude Codeのアップデートが反映されない:自動更新の仕組み・claude update・二重インストール 「更新されない」の正体は、反映待ち・更新無効化・別経路のバイナリが先に呼ばれている、のどれか。claude doctor が全部答える 仕組み:ネイティブ版は起動時と定期的に確認し、次回起動で反映。DISABLE_AUTOUPDATER は背景更新だけ止める。claude update は動く。Homebrew / WinGet / apt は自動更新しない。 確認:claude doctor の Last update attempt と Path を見る。which -a claude / where.exe claude で経路を全部出す。npm -g ls @anthropic-ai/claude-code で残骸を探す。 対処:claude update、ダメなら claude install --force。npm 版は npm install -g @anthropic-ai/claude-code@latest(npm update -g は不可)。複数経路はネイティブ1本に寄せる。
Claude Codeのアップデートが反映されない:自動更新の仕組み・claude update・二重インストール 記事の要約 2026.09.14 運用Tips・トラブルシュート
画像を開く・保存 記事リンクを共有 約7分 / claude-code / troubleshooting
Primary sources

一次情報・参考リンク

About the author
SHAYOUWORLD

日本の公共データAPIを使うMCPサーバーを作って公開し、ローカルLLMを自分のGPUで測った記録を、一次情報・検証ログ・失敗例とあわせて整理します。