訂正:.claudeignore は存在しません
前回パーミッション設定ができたので、今回は .claudeignore ファイルを設定しようと思っていたのですが、公式で調べたところこのファイルは存在しないことが分かりました。SNSなどで何度か目にしていたので存在すると思い込んでいましたが、実際に確認したところ無かったため、訂正いたします。申し訳ありませんでした。
代わりに .gitignore を利用する
その代わりとなる方法として、.gitignore に書かれているファイルを遵守させるやり方があります。CLAUDE_CODE_GLOB_NO_IGNORE を false にすると、.gitignore に書かれているファイルを Claude Codeが無視してくれるようになります。
設定は settings.json の env プロパティの中に追記します。.gitignore はもともとGitHubのリモートリポジトリにファイルを含めないための指定ですが、たとえば .env ファイルにAPIキーを保存している場合、そのファイルはClaude Codeに読んでほしくないものです。すでにパーミッション設定をしていれば読み込まれませんが、念のため .gitignore に .env を指定しておけば、Claude Codeがそれらを無視するようになります。
注意:Glob ツールにしか効かない
実際に試してみると、.env を読もうとした際、パーミッション設定により権限でブロックされました。ただし、調べたところ CLAUDE_CODE_GLOB_NO_IGNORE を false にする設定は Glob ツールにしか効かず、Read・Bash・LS などには影響しません。
Glob はファイルを探索するときのツールで、その際は .gitignore の内容が考慮されますが、Read や Bash は通常どおり動いてしまいます。つまり「.env を読んで」と指示すれば読まれてしまうため、やはりパーミッション設計が最も効果的だと言えます。
確実に防ぎたいときは Hooks を使う
確実に防ぎたいときは、Hooks の PreToolUse を設定する方法があります。Hooks はこの講座を通して初めて紹介するClaude Codeの機能で、指定したツールが呼び出される条件で発火する、条件付きトリガーの機能です。
PreToolUse を指定すると、指定したツールが呼び出される前に発火します。たとえば、読み込まれては困る環境変数や重要なファイルを検知する guard.js のようなプログラムを用意し、正規表現にマッチした場合はブロックする、という処理を走らせれば、.env ファイルの中身は絶対に読まれなくなります。
ここまでする必要は必ずしもありませんが、Hooks にはこうした機能があります。逆に PostToolUse を使えば、ツールの実行後にテストを実施したり、コードのフォーマットを行ったりもできます。
Hooks は条件にマッチすれば必ず発火する点が特徴です。CLAUDE.md ファイルなどは必ず実行してくれるとは限らず、無視されることもありますが、Hooks は条件に合致すれば確実に発火します。アプリが大きくなって「実行後に必ずテストを走らせたい」といった場面が出てきたら導入を検討するとよいでしょう。私自身は現時点では積極的には使っていません。
改めて、.claudeignore ファイルは存在しませんのでご注意ください。パーミッション設定などの説明が終わったので、続いてはサンドボックス環境について解説していきます。