🔰はじめての方へ

【Claude】zsh: permission denied: claude の対処法

AI
記事内に広告が含まれています。
スポンサーリンク

Claude Code をターミナルで起動しようとして claude と打ったら、zsh: permission denied: claude と出て動かなくなったことがありました。

この記事では、そのときに私が実際に確認して直した手順を、順番にまとめています。

あわせて、これで直らなかった場合に試せそうな方法も、調べた範囲の情報として最後に添えます(私が体験したのは chmod で直るところまでです)。

permission denied はどういう状態なのか

ターミナルで claude と打つと、こんなエラーが出ました。

zsh: permission denied: claude

permission denied は、「そのファイルはあるけれど、実行する権限が付いていない」という状態のようです。

コマンドが見つからない(command not found)とは別で、ファイル自体は存在しているのがこのエラーの特徴だと思います。

なので、いきなり入れ直すのではなく、まず「どこにあるか」「本当に権限がないのか」を順番に確認していきました。

私が実際にやった確認と対処

環境はMac(zsh、npmはHomebrew経由でインストール)です。

Homebrewのインストール方法については別記事をご参照ください。

【GitHub】初心者でもわかるWindowsからMacBookへ移行する手順
私はWindowsから始めてMacBookに変更したのですが、Windowsで使っていたGitHubは、移行してもそのままMacBookで使えるとばかり思っていました。しかし、MacでGitHubを使う場合、GitやSSHキーなどの設定が必…

①claude コマンドの場所を確認する

まず、claude がどこにあるかを確認しました。

which claude

私の場合、ここでは claude not found と出て、見つかりませんでした。

「permission denied なのに、which では見つからない」というのが、最初は不思議でした。

②npmのインストール先を確認する

which で見つからなかったので、npmでグローバルに入れたものがどこに置かれているかを確認しました。

npm config get prefix

私の環境では /opt/homebrew と表示されました。

ここが分かれば、claude 本体はこの中の bin フォルダにあるはず、と見当がつきます。

③ファイルが本当にあるか確認する

実際にファイルがあるかを、直接確認しました。

ls /opt/homebrew/bin/claude

結果、ファイルはちゃんと存在していました

ファイルはあるのに実行できない。つまり、やはり実行権限が付いていないだけだと分かりました。

④実行権限を付与する

そこで、このファイルに実行権限を付けました。

chmod +x /opt/homebrew/bin/claude

chmod +x は、そのファイルに「実行してよい」という権限を付けるコマンドです。

これで permission denied は解消されました。

ファイルの場所は環境で変わります

私の場合は /opt/homebrew でしたが、npmをどう入れたかで場所は変わるようです。

npm config get prefix で出た場所の中の bin/claude が対象になります。自分の環境の値に置き換えて使うのが安全だと思います。

私の場合はこのあと別のエラーが出ました

実は私の場合、chmod +x で permission denied が消えたあと、今度は別のエラー(native binary not installed)が続けて出てきました。

権限のエラーと、本体が入っていないエラーが、連続して出るパターンだったようです。

そのときの一部始終(どのエラーがどの順番で出て、それぞれどう直したか)は、別の記事に時系列でまとめています。

複数のエラーが立て続けに出て混乱している場合は、こちらもあわせて読むと流れがつかみやすいと思います。

【Claude Code】ターミナルで起動できない時の対処法
はじめにClaude Code をターミナルから使おうとしたところ、エラーが発生して起動できなくなっていました。(普段は「claude」と入力するだけで使用することができます)以前は問題なく使えていたのに、ある日突然動かなくなったケースです…

chmod +x で直らなかった場合(調べた範囲の情報)

ここからは、私が体験した範囲ではなく、調べる中で出てきた「これで直らなかった場合」の情報です。

私自身はこの先は経験していないので、調査情報として整理しておきます。

ファイルの所有者を確認する方法

chmod +x をしても直らない場合、そのファイルの持ち主(所有者)が自分になっていないことがあるようです。

所有者や権限の状態は、次のコマンドで確認できるようです。

ls -la /opt/homebrew/bin/claude

表示された行に、そのファイルの所有者の名前が出るので、そこが自分のユーザー名になっているかを見る、という流れのようです。

所有者が自分でない場合は、chown(所有者を変えるコマンド)で自分に変える方法が紹介されていました。

chown を使うときの注意(調べた範囲で)

調べていて何度も注意されていたのが、システム全体のフォルダ(/usr など)を、まとめて(再帰的に)chownしないことでした。

広い範囲の所有者を一気に変えてしまうと、Mac自体の動作に影響が出ることがあるようです。対象は claude のファイルなど、必要な場所だけに絞るのが安全そうだと感じました。

ここは私も未経験で、影響も大きい部分なので、不安な場合は無理に進めないほうがよさそうだと思います。

VSCodeやCursorのターミナルでだけ出る場合

もうひとつ見つけたのが、普通のターミナルでは動くのに、VSCodeやCursorの中のターミナルでだけ動かないというケースです。

これはエディタが読み込む設定ファイルが、普通のターミナルと違うことがあるためのようで、権限そのものというより設定の読み込みの問題に近いようでした。

この場合は権限とは切り分けて考えたほうがよさそうです。

確認に使ったコマンドまとめ

今後また出たときに自分で見返せるように、今回使ったコマンドを整理しておきます。

コマンド何を確認・実行するか
which claudeclaudeの場所を確認(見つからないこともある)
npm config get prefixnpmで入れたものの置き場所を確認
ls /opt/homebrew/bin/claudeファイルが実際に存在するかを確認
chmod +x ファイルパス実行権限を付与する
ls -la ファイルパス所有者や権限の状態を確認(chmodで直らない場合)

まとめ

zsh: permission denied: claude は、claude のファイル自体はあるのに、実行権限が付いていないときに出るエラーでした。

私の場合は、場所を確認して(which claudenpm config get prefixls)、ファイルがあることを確かめてから chmod +x で実行権限を付けることで解消できました。

調べた範囲では、これで直らない場合に所有者を確認する方法もあるようですが、システム全体の所有者を変えるのは影響が大きいようなので、対象を絞って慎重に進めるのがよさそうだと感じました。

私の場合はこのあと別のエラーにも続けて遭遇したので、複数のエラーが連鎖している場合は、時系列でまとめた別記事のほうも見返しながら対処していくつもりです。