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 自体は使えるが、バージョンが上がらない(更新が止まる)

放置すると古いバージョンのまま=新機能やバグ修正が入らないので、直しておくのがおすすめです。
原因: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 の置き場所に書き込めないのが原因
/doctor→claude migrate-installerでユーザー領域に移すのが最短・確実- 以後は sudo 不要で自動更新が通るようになる
- Claude Code は更新が速いので、更新が止まる=新機能を逃す。早めに直すのが吉
実際に直してみると拍子抜けするほど簡単で、放置していた自動更新が通るようになりました。バージョンも最新に追いつき、気持ちよく使えています。エラー表示が毎回出るのは地味にストレスなので、早く直してよかったです。
あわせて読みたい:
・Claude Code(Opus 4.8)が重い・フリーズする問題と対処法(モデル起因のトラブル)
・Claude Code 1ヶ月のトークンコストを実測(料金・コストの話)
・ステータスラインにコスト・コンテキスト使用率を表示する設定(導入後におすすめの設定)


コメント