Claude Code のバージョンアップ方法 — npm 版で権限エラーが出たときの対処

Claude Code のバージョンアップ方法 — npm 版で権限エラーが出たときの対処 生成 AI

Claude Fable 5.1を快適に使うには、Claude Code自体も最新版にしておくことをおすすめします。Claude Codeのバージョンが古いままだと、ピッカーにFable 5.1が表示されない、またはコマンドで直接指定しないと選べないことがあります(Anthropic公式のリリースノートでも、初期バージョンでこの不具合が報告され、後日修正されています)。うまく切り替えられない場合は、下記の手順でClaude Code自体を最新版に更新してから試してみてください。

Claude Code を使っていると、起動時に新しいバージョンの案内が出ることがあります。ところが claude update を実行しても、環境によっては権限エラーで止まってしまう。この記事では、Claude Code の更新のしくみと、npm でインストールした環境で更新できなくなったときの解決方法をまとめます。

WSL2(Ubuntu)で実際に遭遇したケースをもとにしていますが、macOS や Linux でも考え方は同じです。

前提:インストール方法によって更新方法が違う

まず押さえておきたいのが、Claude Code は複数のインストール方法があり、更新の挙動もそれぞれ違うという点です。

インストール方法自動更新手動更新コマンド
ネイティブインストーラ(推奨)ありclaude update
Homebrewなしbrew upgrade claude-code
WinGetなしwinget upgrade Anthropic.ClaudeCode
apt / dnf / apkなしsudo apt upgrade claude-code など
npm グローバル条件付きnpm install -g @anthropic-ai/claude-code@latest

自分がどの方法で入れたのか分からない場合は、次のコマンドで確認できます。

which claude
  • ~/.local/bin/claude → ネイティブインストーラ
  • /usr/bin/claude/usr/lib/node_modules/... → npm グローバル

より詳しく調べるなら claude doctor が便利です。インストール種別、認証状態、設定ファイルの不備までまとめて診断してくれます。

基本:ネイティブ版は放っておいても更新される

ネイティブインストーラで入れた場合、Claude Code は起動時と実行中に定期的に更新をチェックし、バックグラウンドでダウンロードとインストールを済ませます。適用されるのは次回起動時です。つまり、通常は何もしなくてよいということになります。

すぐに反映させたいときだけ、次を実行します。

claude update

更新された場合は Successfully updated from ... to version ...、すでに最新なら Claude Code is up to date (...) と表示されます。

つまずきどころ:npm グローバル版の権限エラー

問題が起きやすいのが npm でグローバルインストールしているケースです。実際に出たエラーがこちらです。

$ claude update
Current version: 2.1.197
Checking for updates to latest version...
Warning: Can't auto-update: npm global folder isn't writable
Fix: Run claude install to switch to the native installer (no sudo)
...
Error: Insufficient permissions to install update

npm install -g で直接やっても同じところで止まります。

npm error code EACCES
npm error syscall rename
npm error path /usr/lib/node_modules/@anthropic-ai/claude-code
npm error Error: EACCES: permission denied, ...

原因は単純で、/usr/lib/node_modules に一般ユーザーの書き込み権限がないからです。Node.js を OS のパッケージマネージャで入れた環境では、よくこの状態になります。

ここで sudo npm install -g を使いたくなりますが、公式ドキュメントは明確にこれを避けるよう書いています。root 所有のファイルが npm ディレクトリに混ざり、以降のグローバルインストールが軒並み権限エラーになるためです。目先のエラーは消えても、問題は増えます。

解決策:ネイティブインストーラへ移行する

エラーメッセージ自身が案内している通り、いちばん素直な解決は ネイティブ版への移行 です。

claude install

これだけです。成功するとこう表示されます。

✔ Claude Code successfully installed!
  Version: 2.1.263
  Location: ~/.local/bin/claude
  Next: Run claude --help to get started

インストール先が ~/.local/bin なので sudo は不要、権限の問題がそもそも発生しません。PATH の設定もインストーラがやってくれるので、基本的に追加作業はいりません。

~/.claude/settings.json などの設定やプロジェクトごとの .claude/ はそのまま引き継がれます。

なお、まだ Claude Code が入っていない環境では、次のコマンドでネイティブ版を導入できます。

# macOS / Linux / WSL
curl -fsSL https://claude.ai/install.sh | bash

移行後の確認と後片付け

シェルを開き直してから確認します。

which claude        # → /home/ユーザー名/.local/bin/claude
claude --version    # → 2.1.263 (Claude Code) など

which claude が古いパスのままなら、PATH の優先順位で npm 版が勝っています。その場合はシェルのキャッシュをクリアしてみてください。

hash -r             # zsh なら rehash

古い npm 版は PATH の優先順で使われなくなりますが、残しておくと claude update が「複数のインストールが見つかりました」と警告を出すことがあります。気になる場合は削除しておきましょう。

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

/usr/lib に入っている場合はここだけ sudo が必要です。インストールと違い、アンインストールで sudo を使うのは問題ありません。)

補足:Node.js のバージョン警告について

npm でインストールしようとすると、こんな警告が出ることがあります。

npm warn EBADENGINE Unsupported engine {
npm warn EBADENGINE   package: '@anthropic-ai/claude-code@2.1.263',
npm warn EBADENGINE   required: { node: '>=22.0.0' },
npm warn EBADENGINE   current: { node: 'v20.20.2', npm: '10.8.2' }
npm warn EBADENGINE }

v2.1.198 以降、npm パッケージは Node.js 22 以上を要求します。ただしこれは警告であってエラーではありません。古い Node.js でもインストールは完走しますし、claude も問題なく動きます。npm パッケージが配布しているのは実体がネイティブバイナリで、実行時に Node.js を使わないためです。npm はあくまで配布経路にすぎない、ということですね。

したがって、この警告は更新失敗の原因ではありません。上のケースで止まっていたのは、あくまで権限(EACCES)が理由です。切り分けの際に混同しないよう注意してください。

補足:リリースチャンネルの設定

更新の頻度は settings.jsonautoUpdatesChannel で選べます。

{
  "autoUpdatesChannel": "stable"
}
  • latest(既定):リリースされ次第すぐ受け取る
  • stable:おおよそ1週間遅れ。大きな不具合のあるリリースはスキップされる

安定性を優先したいなら stable、新機能をすぐ試したいなら latest です。/config → Auto-update channel からも変更できます。

自動更新を止めたい場合は、envDISABLE_AUTOUPDATER を設定します。

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

これはバックグラウンドのチェックのみを止めるもので、claude updateclaude install は引き続き使えます。

まとめ

  • 更新方法はインストール方法によって違う。まず which claudeclaude doctor で現状を把握する
  • ネイティブ版なら自動更新される。急ぐときだけ claude update
  • npm グローバル版で権限エラーが出たら、sudo ではなく claude install でネイティブ版へ移行する
  • sudo npm install -g は将来の問題を増やすので避ける
  • Node.js の EBADENGINE 警告は更新失敗の原因ではない

エラーメッセージに Fix: として解決策が書かれていることも多いので、まずはそこを読むのが近道です。


参考

Views: 6