CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/Claude Code
Claude Code/2026-04-29中級

Claude Code の自動アップデートが効かない時の診断手順 — claude --version が古いまま動かない問題を切り分ける

Claude Code をアップデートしたはずなのに claude --version が古いまま、新機能が出てこない、という症状の根本原因を切り分けるための実践的な診断手順をまとめました。PATH 衝突、ローカルキャッシュ、nvm の切替、社内プロキシなどケース別に解説します。

Claude Code197トラブルシューティング37auto-updatenpm2CLI2

npm install -g @anthropic-ai/claude-code を走らせたのに、claude --version を打つと先週と同じ番号が返ってくる」— この症状で 30 分以上溶かした方も多いのではないでしょうか。私自身、新機能のリリースノートを見て試そうとしたのに、ローカルが旧バージョンのままで動かず、何度も入れ直した経験があります。

Claude Code の自動アップデートが効かないように見える時、原因はだいたい 3 つに集約されます。PATH の衝突、別バイナリのキャッシュ、そしてシェル環境のバージョン切替です。ここでは闇雲に再インストールを繰り返す前に、原因を 5 分で切り分けるための診断フローと、ケース別の確実な対処法をまとめました。

まず最初に確認すべき 3 行

時間がない方は、ターミナルでこの 3 つだけ走らせてみてください。多くの場合、ここで原因の見当がつきます。

# 実際に呼ばれているバイナリのパス
which claude
 
# npm がグローバルパッケージを置いている場所
npm root -g
 
# Claude Code 自身の自己診断
claude doctor

which claude で返ってきたパスと、npm root -g の親ディレクトリ(bin/ を含む側)が一致していなければ、npm install -g で更新したバイナリと、シェルが実際に呼んでいるバイナリが別物だということです。これが「アップデートしたのに反映されない」の最も多いパターンです。

なぜ起きるのか — よくある 3 つの構図

1. Homebrew 経由と npm 経由が共存している(macOS で頻発)

Homebrew で brew install claude-code(あるいは類似のフォーミュラ)を入れた後に npm でも入れ直した、あるいはその逆をやった場合、/opt/homebrew/bin/claude~/.npm-global/bin/claude の両方が PATH に存在することになります。echo $PATH で前に来ている方が優先されますので、npm 側を更新しても Homebrew 側が呼ばれ続けるわけです。

2. nvm を使っていて、別の Node バージョン配下にインストールされている

nvm(Node Version Manager)を使っている方は要注意です。Node を切り替えるたびに、グローバルパッケージの保存場所も ~/.nvm/versions/node/v20.x.x/bin/ のように切り替わります。nvm use 20 の状態で npm install -g し、その後 nvm use 22 に変えたまま claude を呼ぶと、v22 配下にはインストールされていない(あるいは古い)バイナリが使われます。

3. ~/.claude/local に古い自己更新キャッシュが残っている

Claude Code はバージョンによって、~/.claude/local/ 配下に自身の最新版をキャッシュし、そこから起動するスタイルを採ることがあります。このキャッシュが壊れていたり、ネットワーク問題で書き換えに失敗したまま残ると、CLI ラッパーは新しい npm パッケージを見ても、ローカルキャッシュの方を優先してしまいます。

段階的な診断フロー

ここからは、上の 3 行で原因が絞れなかった場合の追加診断です。順番に実行していけば、ほぼすべてのケースで問題箇所が特定できます。

ステップ 1: バイナリの実体を全部洗い出す

# PATH 上にある claude 実行ファイルを全部列挙
type -a claude
 
# 例: 出力
# claude is /opt/homebrew/bin/claude
# claude is /Users/you/.npm-global/bin/claude

type -a claude は、which と違って PATH 上のすべての候補を列挙してくれます。2 つ以上出てきたら、それが「アップデートが効いていないように見える」直接の原因である可能性が高いです。

ステップ 2: 実際に起動しているバイナリのバージョンを個別に確認

/opt/homebrew/bin/claude --version
/Users/you/.npm-global/bin/claude --version

それぞれを絶対パスで呼んで、どちらが新しいかを比べます。ここで「新しい方は確かに更新できている、古い方は放置されている」という構図がはっきり見えます。

ステップ 3: シェル設定ファイルで PATH の順序を確認

grep -nE "PATH" ~/.zshrc ~/.bashrc ~/.bash_profile ~/.profile 2>/dev/null

意図したディレクトリが先に来ているか、設定ファイルを横断的にチェックします。~/.zshrc で追加した後に ~/.zprofile で別の PATH を上書きしている、というのも実によくある事故です。

ステップ 4: claude doctor で公式の自己診断

claude doctor

claude doctor は CLI が依存している Node のバージョン、設定ファイルの整合性、認証トークンの有効性などを一括で確認してくれます。少し前のバージョンから「Auto-update path conflict」のような警告が出るようになり、どのパスが衝突しているのかを直接教えてくれることもあります。

ケース別の対処法

Case A: Homebrew と npm の二重インストール

私はこの 1 年で何度かやらかしました。結論としては、インストール経路を 1 つに絞るのが一番楽です。npm 側を残すのが Anthropic 公式のおすすめなので、Homebrew 側を抜く例を書きます。

# Homebrew 側を削除(インストール経路を統一)
brew uninstall claude-code 2>/dev/null
 
# 念のため残骸を削除
sudo rm -f /opt/homebrew/bin/claude /usr/local/bin/claude
 
# npm で最新版を入れ直す
npm install -g @anthropic-ai/claude-code@latest
 
# 確認
which claude
claude --version

判断のポイント: Homebrew 経由を残したい方もいると思います。ただ、Claude Code は Anthropic 側のリリースサイクルが速く、Homebrew のフォーミュラ更新がワンテンポ遅れることがあります。最新機能をすぐ試したい開発者は、npm に寄せる方が体験は安定します。

Case B: nvm を使っているケース

nvm 環境では、グローバルパッケージは Node のバージョンごとに分離されています。特定のバージョンに固定して運用するのが現実的です。

# 普段使う Node のバージョンに固定
nvm alias default 22
nvm use 22
 
# その上で再インストール
npm install -g @anthropic-ai/claude-code@latest
 
# 確認: バイナリのパスに v22.x.x が入っていれば OK
which claude

複数バージョンを併用したい場合は、起動シェルで nvm use を必ず通す運用にしておくと、「ターミナルを開き直したら旧バージョンに戻った」という事故を防げます。

Case C: ~/.claude/local キャッシュの破損

自己更新キャッシュが壊れていると思われる時は、思い切ってキャッシュを消すと早いです。設定ファイル(~/.claude/settings.json や認証情報)はキャッシュとは別のディレクトリにあるので、local/ 配下だけ消せば認証はやり直しになりません。

# 自己更新キャッシュだけクリア(settings.json は触らない)
rm -rf ~/.claude/local
 
# 起動して再ダウンロードさせる
claude --version

ただし、起動時に「local キャッシュをダウンロード中…」のメッセージが長時間止まる場合は、次の Case D(プロキシ問題)の可能性が高いです。

Case D: 企業プロキシ・SSL 自己署名証明書による更新失敗

社内ネットワーク配下で動かしている場合、自動更新が黙って失敗していることがあります。npm の取得自体は通るのに、CLI が直接アクセスする更新エンドポイントがプロキシでブロックされる、というパターンです。

# まず npm 側のプロキシ設定を確認
npm config get proxy
npm config get https-proxy
 
# CA 証明書のパスを通す(社内 CA が必要な場合)
export NODE_EXTRA_CA_CERTS=/path/to/corp-ca-bundle.pem
 
# 自動更新だけ一旦止めて、手動更新運用に切り替える
# settings.json: "autoUpdates": false

autoUpdates: false にしておくと、勝手に更新を試みなくなりますので、npm install -g @anthropic-ai/claude-code@latest を意図的に走らせた時だけバージョンが上がる、という分かりやすい運用になります。詳しい設定キーは、Claude Code の settings.json 完全ガイド を併せて参照ください。

Case E: それでも直らない時の最後の手段

ここまで試しても古いバージョンが返ってくる場合、構成が複雑になりすぎている可能性があります。次のように、関連ファイルを一度全部きれいにしてから入れ直すと、ほぼ確実にリセットできます。

# すべての残骸を削除(認証情報も消えるので注意)
npm uninstall -g @anthropic-ai/claude-code
sudo rm -f $(which -a claude)
rm -rf ~/.claude/local
 
# 認証だけは保存しておきたい場合は事前にバックアップ
cp ~/.claude/auth.json ~/claude-auth.backup.json 2>/dev/null
 
# クリーンインストール
npm install -g @anthropic-ai/claude-code@latest
claude --version

~/.claude/auth.json をバックアップしておけば、再認証が必要になっても 30 秒で元の状態に戻せます。ここまでやって直らない場合は、Node のバージョン自体が古すぎる(Node 18 未満)可能性もあるので、node --version も合わせて確認してみてください。

自動アップデートを意図的に止めたい場合

CI/CD 環境や本番運用しているスクリプト内では、勝手にバージョンが上がられると困ることがあります。その場合は明示的に無効化しておきましょう。

~/.claude/settings.json(あるいはプロジェクト直下の .claude/settings.json)に次を追加します。

{
  "autoUpdates": false
}

これでセッション起動時の更新チェックが走らなくなります。バージョンを上げたい時は、npm install -g @anthropic-ai/claude-code@<version> で明示的に指定する運用にすると、再現性が一段上がります。CI でロックダウンしたい場合は、@anthropic-ai/claude-code@2.1.4 のようにマイナー固定するのが私の好みです。

なお、長期にわたって CI を運用する場合は、Claude Code 出力フォーマット JSON × CI/CD 連携 で紹介されているバージョン pin の考え方も参考になります。

似た症状で別原因のケースに注意

「アップデートが効かない」と思っていたら、実は別の問題だった、という落とし穴もあります。代表的なものを 2 つだけ挙げておきます。

  • 新機能が --allowedTools などのフラグでブロックされている: 新しいツールが追加されたのに、settings.jsonallowedTools ホワイトリストに加わっていないと、機能自体が無効になっています。CLI のバージョンは新しいのに動作が古いままに見える典型例です。
  • ターミナル側のシェルキャッシュが効いている: zsh/bash は実行ファイルのパスを内部にキャッシュします。hash -r(bash)や rehash(zsh)を打つと、PATH の再評価が走って解決することがあります。

これらは Claude Code Hooks が発火しない時のトラブルシューティング と同じく、「設定が新しいのに挙動が古い」系の問題として一緒に頭に入れておくと、次にハマる時間が短くなります。

全体を振り返って — まず手元で 1 つだけやるなら

長くなりましたが、もし今すぐ何か 1 つだけやるとしたら、type -a claude を打って結果が 2 行以上ないか確認してください。これだけで、本記事の原因のうち最も多い「Homebrew × npm 二重インストール問題」と「nvm のバージョン切替問題」のどちらに該当するかが、ほぼ即座に切り分けられます。

複雑な再インストールに進む前に、まずは「実際に呼ばれている claude がどれか」を 30 秒で確かめる癖をつけておくと、次に同じ症状が出た時のリカバリ時間が劇的に短くなります。

シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

Claude Code2026-03-21
Claude Code が起動しない?セットアップのつまずきポイント FAQ
Claude Code CLI のセットアップで初心者がぶつかりやすい問題を解決。npm権限エラー、API キー認識、PATH 設定、プロキシ環境、CLAUDE.md 読み込み、サブエージェント起動、git hook競合などを網羅したFAQ。
Claude Code2026-07-01
Claude Code をアップデートしたら hook が発火しなくなった — ハイフン入り matcher の厳密一致化(v2.1.195)
Claude Code v2.1.195 でハイフンを含む hook matcher が部分一致から厳密一致に変わり、既存の PreToolUse フックが静かに発火しなくなりました。原因の切り分けと、壊れない matcher の書き方をまとめます。
Claude Code2026-05-31
Claude Code のコンテキスト上限エラーが出たときの原因と対処
長時間の Claude Code セッションでコンテキスト上限に達したとき、/compact と --continue の使い分けや、セッション分割の設計パターンを実体験から解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →