Claude CodeでPermission Deniedの対処法をお探しですね。

広告

Claude Codeで「Permission Denied」が出たときの解決ガイド

Claude Codeを使い始めようとしたら、いきなり「Permission Denied(アクセス拒否)」って表示されて困ったことはありませんか?特にファイルを作ったり読み込んだりするMCP(Model Context Protocol)サーバーを設定するときや、コマンドラインからファイルを作ろうとしたときに、このエラーはよく出てきます。

実はこのエラー、単純な設定ミスだけじゃなくて、MacやWindowsそれぞれのセキュリティ設定とか、Node.jsの環境設定とかが複雑に絡み合って起きるんです。

Macのプライバシー設定やWindowsのフォルダ権限など、原因がいろいろあるので、適当にコマンドを打っても解決しないことが多いんですよね。

この記事では、Claude CodeやMCPサーバーを使うときに出る「Permission Denied」の原因を見分けて、MacとWindowsそれぞれで具体的にどう直せばいいか、順番に説明していきます。

エラーが出る「2つのタイミング」を見分けよう

まず大事なのは、エラーが「いつ」出ているかをちゃんと確認することです。

同じ「Permission Denied」でも、インストールのときなのか、実際に使っているときなのかで、対処法が全然違うんです。

インストールのときのエラー(EACCES)

これは `npm install -g @anthropic-ai/claude-code` みたいなコマンドを打った直後に出るやつです。

原因のほとんどは、Node.jsをインストールした場所に書き込む権限がないこと。

特にパソコンに最初から入ってるNode.jsを使ってたり、管理者権限なしでインストールしようとしたときによく起きます。

このパターンなら、フォルダの設定をいじるんじゃなくて、Node.jsのバージョン管理ツール(nvmとか)を入れるのが正解です。

実行中・ファイル操作のときのエラー(MCP/Runtime)

Claude Codeがちゃんと起動した後に、ファイルを作ろうとしたり、既存のファイルを読もうとしたりしたときに出るエラーです。

今回メインで説明するのはこっちのパターン。

これはパソコン側が「Claudeっていうアプリ(またはターミナル)」に対して、デスクトップとかドキュメントフォルダにアクセスする許可を出してないか、ファイル自体が読み取り専用になってることが原因です。

環境変数とパスの問題

もう一つ見落としがちなのが、環境変数がちゃんと引き継がれてない問題。

特にMacで `nvm` を使ってる場合、Claude Desktopアプリやターミナルから起動したプログラムが、正しいNode.jsのパス(PATH)を受け取れなくて、「コマンドを実行する権限がない」って勘違いされてエラーになることがあります。

これは厳密には「権限がない」っていうより「実行ファイルが見つからない」に近い状態なんですけど、エラーメッセージ上はアクセス拒否みたいに見えちゃうんです。

Mac(macOS)でエラーが出たときの対処法

macOSは最近セキュリティ機能がすごく強化されてて、アプリがユーザーのファイルにアクセスするときには、ちゃんと許可をもらわないといけなくなってます。

「フルディスクアクセス」と「ファイルとフォルダ」の権限をチェック

macOSでは、ターミナルやClaude Desktopアプリが勝手にデスクトップやダウンロードフォルダをいじれないようになってます。

まずは「システム設定」からプライバシー設定を確認しましょう。

「システム設定」>「プライバシーとセキュリティ」を開いて、「ファイルとフォルダ」っていう項目を見てください。

ここに、使ってるターミナルアプリ(iTerm2とかTerminal)やClaude Desktopアプリが表示されてる場合、スイッチがオンになってるか確認します。

もしリストになかったり、それでも直らない場合は、「フルディスクアクセス」の項目を確認して、ターミナルアプリに権限を与えてみると、パソコン側のブロックが解除できるかもしれません。

nvmを使ってるときのパス問題とスクリプトの作り方

`nvm`(Node Version Manager)を使ってNode.jsを管理してる場合、Claude Desktopの設定ファイル(`claude_desktop_config.json`)で直接 `npx` コマンドを指定するとエラーになることがあります。

これは、Claudeアプリが起動するシェル環境が `.bashrc` とか `.zshrc` を読み込まなくて、`nvm` で設定したNode.jsのパスを認識できないからです。

この問題を解決するには、絶対パスを指定した専用のスクリプトを作る方法が効果的です。

まずターミナルで `which node` を実行して、今使ってるNode.jsのパスを確認します。

その後、`/usr/local/bin/` みたいなパスが通ってる場所に、専用のスクリプト(例:`npx-for-claude`)を作ります。

スクリプトの中では、`export PATH=”…”` の形式で、さっき確認したNode.jsのbinディレクトリへのパスをはっきり書いて、その後に `exec npx “$@”` を実行するように記述します。

最後に `chmod +x` で実行権限をつけて、Claudeの設定ファイル側でこのスクリプトを指定するように書き換えれば、ちゃんとした権限と環境でMCPサーバーを起動できるようになります。

フォルダの持ち主を確認する

たまにあるケースなんですけど、操作しようとしてるフォルダの持ち主が `root` になってて書き込めないことがあります。

特に `sudo` を使ってフォルダを作った場合とかに起こります。

ターミナルで `ls -l` コマンドを使って対象フォルダの持ち主を確認して、もし自分のユーザー名じゃなかったら `chown` コマンドを使って持ち主を自分に戻す必要があります。

Windowsでエラーが出たときの対処法

Windowsの場合、MacやLinuxとは違うファイルシステム(NTFS)の権限管理とか、ウイルス対策ソフトの干渉が主な原因になります。

フォルダのプロパティと「読み取り専用」属性

Windowsで一番よくあるのが、フォルダやファイルに「読み取り専用」がついてるケースです。

エクスプローラーで対象のフォルダを右クリックして、「プロパティ」を開いてください。

「全般」タブにある「読み取り専用」のチェックボックスにチェックが入ってたり、黒い四角(一部適用)になってる場合は、これを外して「適用」を押します。

ただし、Windowsのシステムフォルダの中(Program Filesとか)で作業してる場合は、普通のユーザー権限では書き込みができません。

基本的にはユーザーフォルダ(`C:\Users\ユーザー名\`)の中に作業用フォルダを作って、そこでClaude Codeを実行するのがおすすめです。

セキュリティタブでアクセス許可を設定する

「読み取り専用」を外しても直らない場合、「セキュリティ」タブの設定を確認します。

プロパティの「セキュリティ」タブを開いて、今ログインしてるユーザーアカウントがリストにあるか、そして「フルコントロール」または「変更」の権限が「許可」されてるかを確認してください。

会社から借りてるパソコンの場合、グループポリシーで特定のフォルダへの書き込みやスクリプト実行が制限されてることがあります。

この場合は、管理者権限でコマンドプロンプトやPowerShellを立ち上げる(右クリックして「管理者として実行」)ことで一時的に回避できることがありますけど、セキュリティリスクがあるので、ちゃんとした対策としては適切な作業フォルダに移動するのが賢明です。

WSL2(Windows Subsystem for Linux)を使うときの注意点

Windows上でLinux環境が使えるWSL2を使ってる場合、ファイルシステムの境界線に注意が必要です。

WSL2側(Linux側)からWindows側のファイル(`/mnt/c/Users/…`)を操作しようとすると、権限周りのトラブルが起きやすいし、動作も遅くなります。

WSL2でClaude Codeを使う場合は、Windows側のフォルダをマウントして使うんじゃなくて、WSL2内のファイルシステム(`/home/username/…`)の中で完結させるようにしましょう。

逆に、Windows側のコマンドプロンプトからWSL2内のファイルを操作する場合も同じリスクがあります。

OSの境界をまたがないことが、Permission Deniedを避けるコツです。

設定ファイルとセキュリティリスクへの対処

パソコンの設定以外にも、Claude CodeやMCPサーバー自体の設定ファイル(JSON)の書き間違いとか、意図しないセキュリティ制限がエラーを引き起こしてる可能性があります。

claude_desktop_config.jsonのパス記述

MCPサーバーを設定する `claude_desktop_config.json` ファイルで、許可するフォルダのパス記述が間違ってるとアクセス拒否が発生します。

特にWindowsの場合、パスの区切り文字であるバックスラッシュ(`\`)をエスケープ(`\\`)して書く必要がある場合とか、逆にスラッシュ(`/`)でも動く場合とか、JSONの書き方に合わせた記述が必要です。

あと、設定ファイルの中で `args` の下に指定するフォルダパスは、実際に存在してて、かつClaude Codeに操作を許可したい範囲に限定すべきです。

例えばホームフォルダ全体を指定するんじゃなくて、`Desktop` とか特定のプロジェクトフォルダだけを指定することで、予期せぬシステムファイルの書き換えリスクを減らしつつ、権限管理をシンプルに保つことができます。

むやみにsudoを使わない

解決を急ぐあまり、すべてのコマンドに `sudo` をつけて実行したくなるかもしれませんけど、これはおすすめしません。

`sudo` で作られたファイルやフォルダは持ち主が `root` になって、その後普通のユーザー権限でアクセスしようとしたときに再びPermission Deniedが出るっていう悪循環に陥ります。

npmのインストール時にエラーが出る場合も、`sudo npm install` とするんじゃなくて、さっき説明した `nvm` を入れるか、npmのグローバルインストール先をユーザーフォルダの中(`~/.npm-global` とか)に変更する設定を行うのが、長期的には一番トラブルの少ない方法です。

セキュリティソフトの除外設定

Windows Defenderとか他のセキュリティソフトが、Claude Codeによるファイル生成を「怪しい動き」としてブロックしてる可能性があります。

もしパソコンの権限設定を見直してもエラーが消えない場合は、一時的にセキュリティソフトを無効にして動作確認するか、作業フォルダを除外リストに追加することを検討してみてください。

まとめ

Claude Codeの「Permission Denied」は、一つの原因だけじゃなくて、パソコンの仕様、Node.jsの環境、そしてアプリの設定が複雑に絡み合ってます。

エラーメッセージが出たときは焦らず、まずは「インストール時」か「実行時」かを見極めて、この記事で紹介したパソコンごとの設定を一つずつ確認してみてください。

ちゃんとした権限設定を行うことは、単にエラーを直すだけじゃなくて、安全なAI開発環境を作るための第一歩になりますよ。

広告