development·

「zsh: permission denied: claude」の意味と対処法|Claude Code が起動しない原因

Claude Code を起動すると「zsh: permission denied: claude」と出るときの意味と直し方。実行権限がない、npm 版の更新失敗で仮のファイルが残った、claude という名前のフォルダがあるなどの原因の見分け方と、chmod +x・再インストールの手順を実機検証つきで解説します。

「zsh: permission denied: claude」の意味と対処法|Claude Code が起動しない原因
zsh: permission denied: claude

このメッセージは、Claude Code ではなくシェル(zsh)が出しているエラーです。PATH 上に claude という名前のファイルは見つかったものの、実行する権限がないため起動できなかった、という意味です。多くは claude の実体ファイルに実行権限(x)が付いていないことが原因で、chmod +x で権限を付け直すか、Claude Code を入れ直すと直ります。

公式ドキュメントのTroubleshoot installation and loginには、このメッセージ専用の項目はありません。そこでこの記事では、公式ドキュメントに書かれたインストール先や確認コマンドをもとに、2026年9月25日時点(Claude Code v2.1.282、macOS 15.6.1 の zsh 5.9 と bash 5.3)で同じ状態を再現して確かめた結果をまとめています。実機で確認した内容とドキュメント記載の内容は書き分けています。

この記事を読むとわかること

  • permission denied と command not found の違い
  • which claude が「not found」を返すのに permission denied になる理由
  • 原因ごとの見分け方(実行権限、npm 版の更新失敗、フォルダ名の衝突)
  • ネイティブインストーラー版・npm 版それぞれの直し方
  • EACCES: permission denied や macOS の Gatekeeper との違い

エラーの意味:ファイルはあるが実行できない

シェルは、入力されたコマンド名を PATH に並んだフォルダの順に探します。claude が見つからなければ command not found、見つかったのに実行できなければ permission denied です。どちらも終了コードで区別でき、再現環境では permission denied が 126、command not found が 127 でした。

表示はシェルごとに少し違います。再現環境で確認した表示は次のとおりです。

実行方法表示
zsh で claude と入力(macOS の標準)zsh: permission denied: claude
zsh のスクリプト内や zsh -czsh:1: permission denied: claude
bash(Linux や WSL の標準)bash: /path/to/claude: Permission denied
sh でパスを指定して実行sh: ./claude: Permission denied

bash は見つけたファイルのフルパスを表示するので、どのファイルが原因かがすぐにわかります。zsh は名前しか表示しないため、次の手順で実体を探します。

まず原因のファイルを見つける

公式ドキュメントは、実行ファイルの確認に ls -la "$(command -v claude)" を案内しています。ただし、実行権限のないファイルしかない場合、この確認方法はシェルによって結果が変わります。zsh では command -v claude・which -a claude・type -a claude はどれも「見つからない」を返し、実行できないファイルは検索結果に含まれません。bash でも which -a・type -a は同様に「見つからない」を返しますが、command -v claude だけは実行権限の有無を確認せず、パスをそのまま表示します(終了コードも 0)。そのため bash では、公式ドキュメントのコマンドがパスを返しても、実行できるとは限りません。

代わりに、PATH のフォルダを順に見て claude という名前のものを一覧にします。zsh・bash のどちらでも使えます。

echo "$PATH" | tr ':' '\n' | while read -r d; do [ -e "$d/claude" ] && ls -ldL "$d/claude"; done

ネイティブインストーラーで入れた場合の場所は ~/.local/bin/claude です(公式ドキュメント「Verify your PATH」)。直接確認するなら次のコマンドを使います。

ls -la ~/.local/bin/claude
ls -lL ~/.local/bin/claude

公式ドキュメントによると、ネイティブインストールの ~/.local/bin/claude は ~/.local/share/claude/versions/ の中を指すシンボリックリンクです。リンクそのものは ls -l で lrwxr-xr-x と表示されるので、実行できるように見えます。 実体の権限を見るには -L を付けてください。再現環境では、実体の権限が -rw-r--r-- のときに ls -l はリンクの lrwxr-xr-x を、ls -lL は実体の -rw-r--r-- を表示しました。

インストールが複数あるときの注意

再現環境では、実行できない claude の後ろのフォルダに実行できる claude があると、zsh も bash も後ろのほうを黙って起動しました。つまり permission denied が出るのは、PATH 上のどの claude も実行できなかったときです。逆に、別の方法で入れ直すと、壊れた古いファイルが残ったまま別の claude が動き始めることがあります。

公式ドキュメントは、claude の置き場所として次の3つを挙げ、見つかった場合は1つだけ残すよう案内しています。

  • ~/.local/bin/claude:ネイティブインストーラー
  • ~/.claude/local/:古いバージョンの Claude Code が作ったローカルの npm インストール
  • npm -g ls @anthropic-ai/claude-code に表示されるもの:npm のグローバルインストール

直したあとに上の一覧コマンドをもう一度実行し、残っている claude が1つだけになっているかを確認すると、次に同じ問題が起きたときに迷いません。

原因と見分け方

原因見分け方対処
実体ファイルに実行権限がないls -lL の結果が -rw-r--r-- のように x を含まないchmod +x、またはインストールし直す
npm 版の更新が途中で失敗し、仮のファイルが残ったnpm でグローバルインストールしている。実体が 500 バイト程度のテキストファイルnpm のパッケージを削除して入れ直すか、ネイティブインストーラーに切り替える
PATH 上に claude という名前のフォルダがある一覧の行頭が d(drwxr-xr-x など)フォルダ名を変えるか、PATH からそのフォルダを外す

実行権限がない

ファイルのコピー方法やアーカイブの展開方法、クラウド同期ツールによっては、実行権限が外れた状態になる場合があります(ツールや設定によって挙動は異なり、常に外れるとは限りません)。再現環境では、権限が -rw-r--r-- の claude を zsh・bash・sh のどれで実行しても permission denied になり、chmod +x のあとは正常に起動しました。

npm 版の更新失敗で仮のファイルが残った

npm install -g @anthropic-ai/claude-code で入れた場合、公式ドキュメントによると、claude コマンドはまず仮のスクリプト(プレースホルダー)として置かれ、インストール後の処理で本物の実行ファイルに置き換わります。

npm の公開パッケージ(v2.1.282)を確認したところ、この仮のファイル bin/claude.exe は 500 バイトのテキストで、パッケージ内の権限は -rw-r--r-- でした。再現環境では、このファイルを権限 -rw-r--r-- のまま実行すると zsh: permission denied: claude になり、実行権限を付けると次のメッセージに変わりました。

Error: claude native binary not installed.

GitHub には、npm 版の自動アップデートが失敗したあとに新しいターミナルで zsh: permission denied: claude が出るようになった、という報告が複数あります(anthropics/claude-code #57178。v2.1.123〜v2.1.173 の間で複数回報告され、未解決のまま非アクティブとしてクローズ)。これはユーザー報告で、Anthropic が原因を公式に説明したものではありません。同じスレッドの複数のコメントで、bin/claude.exe が 500 バイトのテキスト(権限 -rw-r--r--、実行権限なし)になっていたという、上で確認した仮のファイルと一致する報告が繰り返されています。一方で同じスレッドには、ファイルサイズが約219MBある Windows 向け実行ファイル(PE形式)がそのまま置かれ、macOS 上では実行できなかったという別パターンの報告もあり、原因はひとつに限らないようです。どの報告でも、すでに開いていたセッションは動き続け、新しいターミナルで起動したときに失敗したとされています。

claude という名前のフォルダがある

PATH に含まれるフォルダの中に claude という名前のフォルダがあると、zsh は zsh: permission denied: claude を表示しました。bash は同じ状態で bash: claude: command not found でした。一覧の結果で行頭が d になっていれば、この原因です。

対処法

実行権限がない場合:権限を付け直す(ネイティブインストーラー版)

実体に実行権限を付けます。chmod はシンボリックリンクをたどるため、リンクの場所を指定すれば実体の権限が変わります(再現環境で確認)。

chmod +x ~/.local/bin/claude
ls -lL ~/.local/bin/claude
claude --version

ls -lL の結果に x が付き、claude --version がバージョン番号(例:2.1.282 (Claude Code))を表示すれば完了です。

権限を付けても直らない場合や、ファイルが壊れている可能性がある場合は、公式のネイティブインストーラーで入れ直します。

curl -fsSL https://claude.ai/install.sh | bash

npm 版の更新失敗で仮のファイルが残った場合:パッケージを削除して入れ直す

まず、原因が仮のファイル(プレースホルダー)かどうかを確認します。

ls -l "$(npm root -g)/@anthropic-ai/claude-code/bin/claude.exe"
file "$(npm root -g)/@anthropic-ai/claude-code/bin/claude.exe"

ls -l の結果が数百バイト程度で、file の結果が ASCII text などテキストファイルを示していれば、実行ファイルではなく仮のファイルが残っている状態です。この場合、chmod +x をしても Error: claude native binary not installed. に変わるだけで起動はしません。パッケージを削除して入れ直します。削除の手順は公式ドキュメントの npm ENOTEMPTY の項目にあるものと同じです。

rm -rf "$(npm root -g)/@anthropic-ai/claude-code"
rm -rf "$(npm root -g)/@anthropic-ai/.claude-code-"*
npm install -g @anthropic-ai/claude-code

2行目で zsh が no matches found を表示した場合は、消すものがなかっただけなので問題ありません。

nvm(Node Version Manager)で Node.js を管理している場合、npm のグローバルパッケージは Node のバージョンごとに別々に入っています。nvm current で今使っているバージョンを確認し、nvm use <バージョン> で対象のバージョンに切り替えてから上のコマンドを実行してください。別のバージョンで削除・再インストールしても、今使っているバージョン側の claude は直りません。

公式ドキュメントがネイティブインストーラーへの切り替えを勧めているのは、これからインストールする方法を選ぶときの案内です。すでに壊れた npm 版を直す手順としては、上の削除・再インストールが対応する項目になります。そのうえで恒久的に npm 版をやめたい場合は、先に npm uninstall -g @anthropic-ai/claude-code で npm 版を外し、上のネイティブインストーラーのコマンドを実行してください。インストール方法が複数残っていると、どれが起動するかわかりにくくなるので、公式ドキュメントは1つだけ残すよう案内しています。

claude という名前のフォルダがある場合:リネームするか PATH から外す

一覧コマンドの結果、行頭が d(drwxr-xr-x など)になっているものが原因です。そのフォルダの名前を claude 以外に変えるか、そのフォルダを PATH から取り除いてください。フォルダ自体を削除してよいかは、中身が何のためのものかを確認してから判断してください。

直ったか確認する

claude --version
claude doctor

新しいターミナルを開いて claude が起動することも確認してください。インストール方法ごとの詳しい手順はClaude Code インストール・セットアップガイドにまとめています。

実機での再現結果

2026年9月25日に、macOS 15.6.1(Apple Silicon)の作業用フォルダで、claude という名前の小さなシェルスクリプトを置いて確認しました。実際にインストールされている Claude Code には触れていません。

状態zshbash
claude の権限が -rw-r--r--permission denied(126)Permission denied(126)
同じ状態で which -a・type -a見つからない見つからない
同じ状態で command -v見つからない見つかる(パスを表示。実行権限は見ていない)
実行できないファイルの後ろに実行できる claude がある後ろの claude が起動後ろの claude が起動
PATH 上に claude という名前のフォルダpermission denied(126)command not found(127)
実行できるファイルだが、親フォルダに入る権限がないPATH 経由は command not found、フルパス指定は permission denied未確認
chmod +x 後起動起動

npm の仮のファイル(v2.1.282 のパッケージから取り出したもの)でも、権限なしで permission denied、権限ありで Error: claude native binary not installed. になることを確認しました。

似ているが別のエラー

  • zsh: command not found: claude:ファイル自体が見つからない状態です。多くは ~/.local/bin が PATH に入っていないことが原因です。トラブルシューティング完全ガイドの command not foundを参照してください
  • EACCES: permission denied(インストール中):claude の起動ではなく、インストール先のフォルダに書き込めないときのエラーです。公式ドキュメントは ~/.local/bin と ~/.claude に書き込めるかを確認し、npm 版で権限エラーが出る場合はネイティブインストーラーに切り替えるよう案内しています。詳しくはEACCES の対処法を参照してください
  • EACCES: permission denied, posix_spawn:Agent View などからバックグラウンドセッションを開くときのエラーです。公式ドキュメント(Error reference)によると、npm 版の更新でファイルが置き換わっている最中に起きやすく、数秒待ってからやり直すよう案内されています
  • macOS の Gatekeeper(隔離属性):インターネットから取得したファイルに付く com.apple.quarantine 属性が原因ではないかと考える人もいます。再現環境で確認したのは、署名済みの Claude Code v2.1.282 の実行ファイルと、単純なシェルスクリプトに同じ属性を付けたケースのみで、どちらもターミナルから問題なく実行できました。署名のない実行ファイルなど、確認していない組み合わせでは Gatekeeper が別の挙動を示す可能性があり、この結果を未検証のケースまで一般化することはできません
  • Claude Code の中で出る権限の確認:Claude Code がコマンドやファイル編集の前に許可を求める仕組みは、シェルの permission denied とは別物です。auto モード完全ガイドで解説しています

ログインまで進んでから止まる場合は、OAuth error: Invalid code の対処法やNot logged in の対処法を参照してください。

よくある質問

まとめ

  • 「permission denied: claude」は、シェルが claude という名前のファイルを見つけたが、実行権限がなかったという意味。Claude Code 自体のエラーではない
  • 原因のファイルを ls -l / file で確認し、chmod +x で実行権限を付けるか、インストールし直す
  • npm 版で自動アップデートが失敗すると、実行権限のない仮のファイルが残ることがある。nvm 管理下では対象の Node バージョンにも注意する
  • 実行権限がないファイルは sudo でも実行できない。原因を直さずに root 権限で回避しようとしない

koromo からの提案

AIツールの導入判断は、突き詰めると「投資対効果が合うか」「リスクを管理できるか」「事業にどう効くか」の3点に帰着します。koromo では、この判断に必要な材料を整理するところからご支援しています。

以下のような状況にある方は、まず現状の整理だけでも前に進むきっかけになります。

  • AIで開発や業務を効率化したいが、自社に合う方法がわからない
  • 社内にエンジニアがいない / 少人数で、AI導入の進め方に見当がつかない
  • 外注先の開発会社にAI活用を提案したいが、何を求めればいいか整理できていない
  • 「AIを使えばコスト削減できるはず」と感じているが、具体的な試算ができていない

ツールを使った上で相談したい方はお問い合わせフォームから「Claude Code の導入・トラブル対応の相談」とご記載ください。初回の壁打ち(30分)は無料で対応しています。

無料で相談する

関連記事