M.

npm 版の Claude Code は更新が遅いと思って移行したら、原因は自分の設定だった

Claude Code を使い始めたころ、インストールといえば npm install -g @anthropic-ai/claude-code でした。昔から使っている人なら、いまも npm 版のままかもしれません。私もそうでした。

npm 版を使っていて、更新が届くのが遅い と感じることがありました。はっきり覚えているのは、Opus 5.5 が出たときに、手元の Claude Code ですぐには使えなかったことです。「npm 版だから遅いのだろう」と考えて、2026年10月にネイティブ版へ移行しました。

ところが、この記事を書くために公式ドキュメントを読み直すと、npm 版だから遅い、という話はどこにもありませんでした。原因は自分の設定でした。順に書きます。

公式ドキュメントでの npm 版とネイティブ版の違い

公式のセットアップのページ(2026年10月時点)から、関係するところをまとめます。

項目ネイティブ版npm 版
位置づけ推奨(Native Install (Recommended))「ほかの入れ方」の一つ
中身単体の実行ファイルネイティブ版と同じ実行ファイル。npm がプラットフォーム別のパッケージから取ってきて配置する。起動した claude は Node.js を使わない
Node.js不要インストールに Node.js 22 以上が必要
自動更新バックグラウンドで自動更新自動更新あり。npm の global の場所に書き込めないときだけ、起動時に一度通知が出る
手動での更新claude updatenpm install -g @anthropic-ai/claude-code@latest(npm update -g は最新まで上がらないことがある)

npm 版も、中身は同じ実行ファイルで、自動更新もあります。少なくともドキュメント上は、npm 版だから新しい版が届くのが遅い、ということはありません。

届く時期を分けているのは、入れ方ではなく リリースチャネル です。

  • latest(既定):新しい版が出たらすぐ届く
  • stable:だいたい1週間前の版で、大きな不具合のあった版は飛ばす

ドキュメントには、「新しく出たモデルが、stable の版より新しい Claude Code を必要とすることがある。すぐ使いたいなら latest にする」とも書かれています。新しいモデルがすぐ使えないなら、まずはここを疑うところでした。

claude doctor で調べたら、自動更新が止まっていた

私の設定は latest でした。では、なぜ遅かったのか。claude doctor を実行すると、答えが出ました。

Running: native (2.1.296)
Auto-updates: disabled (set by env: CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC)
Auto-update channel: latest

自動更新が無効になっていました。しかも、ネイティブ版に移行したあとの今もです。

原因は CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC という環境変数でした。以前、テレメトリ(利用状況の送信)やエラー報告を止めたくて、DISABLE_TELEMETRY などと一緒に ~/.claude.json の env に入れていたものです。

環境変数の公式ドキュメント を見ると、この変数は「必須ではない通信」をまとめて止めるもので、次のものが含まれます。

  • 自動更新
  • テレメトリ、エラー報告、/feedback コマンド
  • リリースノート、PR のステータス表示の確認、fast mode の利用可否の確認など
  • 機能フラグの取得(Remote Control など、機能フラグが必要な機能が使えなくなる)

テレメトリを止めるつもりで、自動更新まで止めていた わけです。これなら、npm 版でもネイティブ版でも更新は届きません。npm 版を使っていた当時にもこの変数が入っていたかは記録が残っていないので断定はできませんが、遅かった原因はおそらくこれです。

ドキュメントには、もう一つ注意が書かれていました。この変数は 0 や false を入れても無効にはならず、止めたままになります。元に戻すには、変数そのものを消す必要があります。

自動更新だけを戻す

テレメトリとエラー報告は止めたまま、自動更新だけを戻すことにしました。DISABLE_TELEMETRY と DISABLE_ERROR_REPORTING はそれぞれ単独でも効くので、CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC だけを消します。

"env": {
  "DISABLE_TELEMETRY": "1",
  "DISABLE_BUG_COMMAND": "1",
  "DISABLE_ERROR_REPORTING": "1"
}

環境変数は起動時に読み込まれるので、Claude Code を起動し直してから、もう一度 claude doctor で Auto-updates の行を確認します。

ただし、この変数を消すと、リリースノートの取得なども戻ります。何を止めたいのかで選ぶところです。なお、機能フラグの取得は DISABLE_TELEMETRY でも止まります(公式ドキュメント)。DISABLE_TELEMETRY を残した私の設定では、機能フラグが必要な機能は使えないままです。逆に「自動更新だけを止めたい」なら、DISABLE_AUTOUPDATER という専用の変数があります。

それでも移行してよかったこと:古い npm 版が残っていた

移行のきっかけは勘違いでしたが、やってよかったこともあります。

ネイティブ版を入れたあと、念のため Claude Code に「npm 版をちゃんとアンインストールできているか」を調べてもらいました。結果は 半分だけ消えている でした。

  • いまの npm(scoop で入れた Node.js)の global には、Claude Code は入っていない
  • PATH 上の claude も、ネイティブ版の ~/.local/bin/claude だけ
  • ところが、以前の npm の置き場所 %APPDATA%\npm に、claude・claude.cmd・claude.ps1 と本体のフォルダが残っていた

途中で Node.js の入れ方を変えていたのが原因だと思います。最初は npm の global が %APPDATA%\npm でしたが、Node.js を scoop で入れ直したときに、global の置き場所が scoop 側に変わっていました。

npm uninstall -g は、いまの npm が見ている場所 しか探しません。古い場所に入っている Claude Code には届かず、残ったままになります。もし古い場所が PATH に残っていたら、更新されない古い claude が起動されるところでした。

公式ドキュメントにも、「アンインストールしたのに claude が動くなら、別のインストールが残っている可能性がある」と書かれています。自分がどれを使っているかは、次のコマンドで確かめられます。

which -a claude     # Git Bash。PATH 上の claude を見つかった順にすべて表示
claude doctor       # 実行中のインストール方法・パス・自動更新の状態を表示

claude doctor の Running: の行に、native か npm かが出ます。

まとめ

  • 公式ドキュメントでは、npm 版も中身はネイティブ版と同じ実行ファイルで、自動更新もある。npm 版だから更新が遅い、という記述はない
  • 新しい版が届く時期を決めるのは リリースチャネル(latest / stable)
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC は、テレメトリと一緒に 自動更新も止める。0 を入れても止まったままなので、戻すには変数を消す
  • 更新が遅いと感じたら、入れ方を変える前に claude doctor の Auto-updates の行を見る
  • npm 版から移行するときは、古い npm の置き場所に残っている Claude Code にも注意する

「npm 版だから遅い」は、確かめずに思い込んでいただけでした。設定を一つ入れたことを忘れて、その影響を別のもののせいにしていたわけです。何かがおかしいと感じたら、まず claude doctor を打ってみてください。

この記事をシェア

「Windows」の記事(5件)

  1. PC のスリープを Claude Code に任せる(長いジョブの間は止めて、終わったら眠らせる)
  2. ▶ npm 版の Claude Code は更新が遅いと思って移行したら、原因は自分の設定だった
  3. 個人開発の Windows アプリを Microsoft Store に出すまで(MSIX パッケージ・wapproj のハマりどころ・審査メモ)
  4. Windows で Claude Code を使うときのハマりどころ(Git Bash・ヒアドキュメント・CRLF・子プロセス)
  5. Claude Code の statusLine が表示されない原因は PowerShell の起動遅延

関連する記事

Claude Code の auto mode に止められた操作を1か月分集計した(64件の内訳と、許可リストの落とし穴)

Claude Code の auto mode が拒否した操作を、会話ログから1か月分集計しました。2.2万回のツール呼び出しのうち止められたのは64件。半分近くは本番デプロイで、読むだけの grep が止められた例もありました。公式ドキュメントと照らし合わせて分かった、許可リスト(permissions.allow)が効く・効かない条件もまとめます。

Claude Code に GCP の課金を棚卸しさせたら、月1万円が半分になった(失敗込みの記録)

個人開発で使っている GCP の全プロジェクトを、Claude Code と一緒に横断して見直しました。gcloud での調査、ストレージの掃除、通信料の削減、そして CUD の二重契約という失敗まで。AI に任せられたこと・人間がやる必要があったことを整理します。

Claude Code の会話は30日で消え、compact で要約される。何をどこに残すか

Claude Code の会話ログは既定で30日で削除され、長い会話は compact で要約されます。1か月分のログを数えると、3割のセッションで compact が起きていました。compact のあとに何が残り、何が落ちるのかを公式ドキュメントで確かめ、CLAUDE.md・auto memory・リポジトリのドキュメントの使い分けをまとめます。

claude -p を評価器にして、AI の生成結果を930件自動採点した

コード進行アプリのキーワードボタンが本当に効いているのかを確かめるため、Claude Code の `claude -p` で930件を生成し、プログラムで採点しました。API キーを使わない生成のしかた、本番に近づけるためのオプション、Windows での落とし穴、AI に採点させない集計の考え方をまとめます。

テーマから探す