Claude Codeの権限設定が効かない?止まらない3つのケース

Claude Codeの権限設定が効かない?止まらない3つのケース

記事
IT・テクノロジー
Claude Codeに「このフォルダは触らないで」と設定したのに、
読まれてしまった。

私も一度やりました。
設定は正しく書けていて、実際に効いてもいました。
それでも読まれました。

原因は3つに分かれます。
今日は、その3つと見分け方を書きます。

原因を先に書きます。

 1.設定ファイルの置き場所が違う
   → そもそも読み込まれていない

 2.パスの書き方が違う
   → 読み込まれてはいるが、別の場所を指している

 3.仕様として、止まらない範囲だった
   → 設定は正しい。防げない領域がある

私のケースは3番でした。


■ ケース1|そもそも読み込まれていない

いちばん多いのがこれです。まず確認します。

Claude Codeの中で、次を実行してください。

 /permissions

書いたルールが一覧に出てくるかを見ます。
出てこなければ、設定ファイルが読み込まれていません。

設定ファイルの置き場所は複数あり、強さの順番が決まっています。
上にあるものが勝ちます。

 強い  会社が配布する管理設定(管理者が配置)
  ↓  作業フォルダの .claude/settings.local.json(自分だけの上書き)
  ↓  作業フォルダの .claude/settings.json(この作業フォルダ用)
 弱い  ホームフォルダの .claude/settings.json(パソコン全体用)

読み込まれていないときの原因は、だいたいこの3つです。

 ・.claude フォルダの綴りが違う(先頭のピリオドを忘れている)
 ・JSONが壊れている(末尾のカンマがいちばん多い原因です)
 ・置いた場所が、起動したフォルダと違う

Windowsのエクスプローラーでは、
先頭がピリオドのフォルダ名を作れないことがあります。

その場合は、末尾にもピリオドを付けて

 .claude.

と入力して確定してください。
末尾だけ自動で消えて .claude になります。


■ ケース2|パスの書き方が違う

読み込まれているのにブロックされない場合、
書いたパスが別の場所を指していることがほとんどです。

間違えやすいところが2つあります。

まず、スラッシュ1つは絶対パスではありません。

 //パス  パソコンの根っこからの絶対パス
 ~/パス  ホームフォルダから
 /パス   設定ファイルが置かれた場所から(絶対パスではない)
 パス   今いるフォルダから

公式ドキュメントでも、スラッシュ1つで始まるパターンは
絶対パスではなく、設定ファイルの場所を基点にする、と説明されています。
絶対パスにはスラッシュ2つを使います。

これを知らずに /Users/... と書くと、
まったく別の場所を指したまま「効かない」ことになります。

さらに紛らわしいのが、
同じ /パス でも、書いた場所によって指す先が変わることです。

 作業フォルダの設定に書いた場合
  → 作業フォルダの中を指す

 ホームフォルダの設定に書いた場合
  → .claude フォルダの中を指す(プロジェクトの中ではない)

パソコン全体に効かせたいときは、
スラッシュ1つではなく、// か ~/ で書きます。

もう1つ、Windows固有の落とし穴があります。
パスは内部で変換されてから照合されます。

 C:\Users\yamada → /c/Users/yamada

なので、こう書きます。

 × //C:/Users/yamada/私用/**
 ◯ //c/Users/yamada/私用/**
   (ドライブレターは小文字、コロンは書かない)

 ◯ //**/.env
   (すべてのドライブから探す場合)

ここを C: のまま書くと、一致しません。

ついでに、評価の順番も間違えやすいところです。

ルールは 禁止 → 確認 → 許可 の順に見て、
最初に当たったもので決まります。

「より具体的なルールが勝つ」わけではありません。

つまり、広い禁止ルールがあると、
細かい許可ルールを書いても通りません。

禁止に「例外つき」は書けない、と覚えておくと分かりやすいです。


■ ケース3|仕様として、止まらない範囲だった

ここが本題です。私のケースはこれでした。

設定は正しく書けていて、一覧にもちゃんと出ていて、
直接ファイルを読ませようとすればきちんと止まりました。

それでも、範囲外のフォルダの中身が読まれました。

原因は、
AIが「フォルダの一覧を出すコマンド」を実行したからでした。

公式ドキュメントによれば、読み取り・編集の禁止ルールは、
Claude Codeの標準のファイル操作と、
Claude Codeが認識するコマンド(cat、head、tail、sed など)には
適用されるとされています。

ただし、ファイルを間接的に読み書きする任意のサブプロセス
(PythonやNodeのスクリプトが自分でファイルを開く場合など)には
適用されない、とも明記されています。

整理すると、こうなります。

 止まる  AIが直接ファイルを読む・書く・編集する
 止まる  cat / head / tail / sed など、認識されたコマンド
 止まらない AIが書いたスクリプトが、その中で自分でファイルを開く

そして、OSレベルで完全に遮断する「サンドボックス」機能は、
公式には macOS / Linux / WSL2 対応で、
Windowsのネイティブ環境では使えません。

つまりWindowsで作業している場合、
設定だけで完全に遮断することは、現時点ではできません。


■ では、どうしているか

私は設定を「保険」として使い、本体は運用で守るようにしました。
順番はこうです。

 1.扱ってよいファイルだけを、作業フォルダに入れる
   そこに無いものは、そもそも読まれません。これがいちばん強いです

 2.パスワード・接続情報・お客様の情報は、作業フォルダに置かない
   置かなければ、漏れようがありません

 3.そのうえで、設定で止められるものは止める
   うっかりを1段減らせます

 4.スクリプトを書かせたときは、何を読み書きするかを一度目で通す
   3で止まらないのがここなので、ここだけは目で見ます

「設定を入れたから安心」ではなく、
「設定を入れたうえで、そもそも置かない」。

遠回りに見えますが、私はこれで事故が止まりました。


■ 確認の手順(まとめ)

止まらないときは、この順に見てください。

 1./permissions を実行して、ルールが一覧に出るかを見る
   出なければケース1

 2.出ているなら、パスの書き方を見る
   スラッシュ1つと2つの違い、Windowsのドライブ表記

 3.それでも読まれるなら、何経由で読まれたかを見る
   AIが直接か、コマンド経由か、スクリプト経由か

 4.スクリプト経由なら、それは仕様です
   設定では止まりません


────────────────────

私は業務システムの開発を5年、Claude Codeを12ヶ月ほぼ毎日使っています。
基本情報/応用情報/情報処理安全確保支援士試験 合格/
データベーススペシャリスト。

触ってほしくない場所を止める設定を、
お使いの環境に合わせて作成しています。
止まらない範囲についても、正直にお伝えしたうえでお渡ししています。



サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す