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ヶ月ほぼ毎日使っています。
基本情報/応用情報/情報処理安全確保支援士試験 合格/
データベーススペシャリスト。
触ってほしくない場所を止める設定を、
お使いの環境に合わせて作成しています。
止まらない範囲についても、正直にお伝えしたうえでお渡ししています。