Claude Code「Auto-update failed: no write permission to npm prefix」の直し方【/doctor&migrate-installer】

Claude Code

Claude Code を起動したら、こんなエラーが出て驚いたことはありませんか。

✗ Auto-update failed · Try claude doctor or npm i -g @anthropic-ai/claude-code
✗ Auto-update failed: no write permission to npm prefix

私も実際にこれが出ました。 動作自体はするものの、自動アップデートが毎回失敗する状態です。

結論から言うと、原因は npm のインストール場所(prefix)に書き込み権限が無いこと。対処は /doctor で診断 → claude migrate-installer でユーザー領域に移すのが王道です。この記事では、原因と直し方を順に解説します。

環境メモ:本記事は2026年6月時点。コマンド名・挙動は変わる可能性があるため、最新は公式(/doctor の案内)を優先してください。


どんなエラー?(症状)

  • Claude Code 起動時などに「Auto-update failed(自動更新に失敗)」と表示される
  • メッセージに no write permission to npm prefix(npmのprefixに書き込み権限が無い)と出る
  • claude doctor を試すか npm i -g @anthropic-ai/claude-code を実行して」と案内される
  • Claude Code 自体は使えるが、バージョンが上がらない(更新が止まる)
Claude Codeのステータスラインに表示された Auto-update failed: no write permission to npm prefix のエラー
実際の画面。右下に「✗ Auto-update failed: no write permission to npm prefix · Run /doctor」と表示される

放置すると古いバージョンのまま=新機能やバグ修正が入らないので、直しておくのがおすすめです。


原因:npm の「prefix」に書き込めない

Claude Code を npm のグローバルインストールnpm i -g)で入れている場合、更新も同じ場所へ書き込みます。その置き場所(prefix)が、

  • /usr/usr/local など root 所有の場所になっている
  • 過去に sudo で入れた/システムの Node.js を使っている

といった理由で今のユーザーでは書き込めないと、自動更新が権限エラーで失敗します。

確認コマンド:npm -g config get prefix で現在の置き場所が分かります。ここが自分のホーム配下でなければ要注意。

私の環境では prefix が /usr/local(root 所有) で、ユーザーでは /usr/local/lib/node_modules に書き込めない状態でした。これがエラーの正体です。


直し方(推奨順)

① まず /doctor で診断する

Claude Code の中で /doctor を実行すると、インストール状態を診断してくれます。多くの場合、次の migrate-installer を案内してくれます。

② claude migrate-installer(公式の推奨。まず試す)

グローバル(npm)からユーザーローカルのインストールへ移行する公式コマンドです。

claude migrate-installer
  • Claude Code を ~/.claude/local/ に移し、シェルにエイリアスを設定します
  • 以後の更新はホーム配下に書き込むので、sudo 不要・権限エラーが起きない

補足:環境によっては claude migrate-installer がサブコマンドとして認識されないことがあります(私の環境では実行できませんでした)。その場合は、次の③が確実です。

③ npm の置き場所をホームに変える(私はこれで解決)

migrate-installer が使えない場合は、グローバルの置き場所(prefix)自体をホーム配下に変えるのが確実です。私の環境はこの方法で直りました。

# ① ユーザー専用のグローバル先を作って設定
mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global

# ② PATH を通す(~/.bashrc に追記。zsh なら ~/.zshrc)
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc

# ③ claude を入れ直す(=最新へ更新も兼ねる)
npm install -g @anthropic-ai/claude-code

これで claude は ~/.npm-global(自分が書き込める場所) に入り、以後は権限エラーが出なくなります。私の場合、ついでにバージョンも古い版から最新版に上がりました

反映のコツ:新しいターミナルを開いて Claude Code を起動し直すと切り替わります。今動いているセッションは古い場所のままなので、その場ではエラー表示が残ります。古い /usr/local の旧バージョンは残しても無害です(気になれば後で削除可)。

注意:sudo chown -R で root 所有のディレクトリを書き換える方法は、環境によっては解決しない/別の不具合の元になることがあります(公式issueでも指摘あり)。

直ったか確認

which claude        # ~/.npm-global/bin 配下を指していればOK
claude --version    # 新しいバージョンになっているか

まとめ

  • 「Auto-update failed / no write permission to npm prefix」は npm の置き場所に書き込めないのが原因
  • /doctorclaude migrate-installer でユーザー領域に移すのが最短・確実
  • 以後は sudo 不要で自動更新が通るようになる
  • Claude Code は更新が速いので、更新が止まる=新機能を逃す。早めに直すのが吉

実際に直してみると拍子抜けするほど簡単で、放置していた自動更新が通るようになりました。バージョンも最新に追いつき、気持ちよく使えています。エラー表示が毎回出るのは地味にストレスなので、早く直してよかったです。

あわせて読みたい:
Claude Code(Opus 4.8)が重い・フリーズする問題と対処法(モデル起因のトラブル)
Claude Code 1ヶ月のトークンコストを実測(料金・コストの話)
ステータスラインにコスト・コンテキスト使用率を表示する設定(導入後におすすめの設定)


コメント

タイトルとURLをコピーしました