「設定ファイル」と「指示書」は別物と心得よ
最初の設計対象である「できること」、つまりパーミッションの設定にあたり、佐々木氏が強調したのが「設定ファイルと指示書は別物」という原則だ。Claude Codeを例にとると、settings.jsonは許可・禁止のパターンを指定する設定ファイルであり、書かれた内容は基本的に守られる。
一方でCLAUDE.mdのような指示書は、方針や文脈を文章で渡すガイドラインに過ぎず強制力を持たない。プロンプトインジェクションによって上書きされる可能性もある。したがって、本当に守らせたいルールは指示書ではなく設定ファイルに書くべきだというのが佐々木氏の主張だ。
もっとも、settings.jsonによる制御は基本的に事前の禁止であり、実行時にしか判断できない状況には対応できない。そこで使うのがhooksだ。hooksはAIがツールを呼び出す直前に中身を見て、許可・拒否・記録といった動作を実行時に決められる仕組みである。佐々木氏は、まずは設定ファイルをきちんと書くことから始め、運用の中で「これは事前には防げない」と気づいた場面でhooksを追加していくという順序を勧めた。
サンドボックスとコンテナ、境界は「重ねて」使う
続いて解説したのが2つ目の設計対象、「届く範囲」を決める実行境界だ。settings.jsonのような許可リストは「触るな」と事前に禁止する守り方であるのに対し、境界による防御は「そもそも届かない」状態を作る守り方だと佐々木氏は解説する。許可リスト方式は、書き漏れた経路や誤った設定があればそのまま通ってしまう弱点を持つ。一方、境界による防御はあらかじめ持ち込むファイルを限定するため、書き漏れがあっても境界の外へは届かない。
AIを隔離する境界にはsandboxとcontainerという2つの層があり、佐々木氏は「どちらを使うべきか」という二者択一ではなく、複数の層を重ねて防御すべきだと説く。sandboxはAIが触れる範囲を制限するが、制限を外せばホストのリソースに届いてしまう。実際、Claude Codeのオートモードを使っていると、サンドボックスで拒否された際に一時的に制限を外して別の方法を試そうとする挙動が見られるという。
一方、containerはAIそのものを隔離環境に置く方式で、containerの制限が破られない限りAIはそこから抜け出せない。sandboxの制限が外れても、containerという境界が残る。この二重構えこそが佐々木氏の勧める設計だ。
どこまで厳重な境界を用意するかは、扱うデータの機密度で決めればよいと佐々木氏は言う。公開データはどこに置いてもよいが、内部データや機密情報はより厳重な扱いが必要だ。特にクレデンシャルのような認証情報は絶対にAIの触れない場所に置くべきであり、業務上の機密情報はcontainerの中でAIと同居させる余地があるというのが佐々木氏の分類だ。
重要なのは、その都度判断するのではなく、分類が決まれば置き場所が自動的に決まる仕組みをあらかじめ設計しておくことだと佐々木氏は強調した。
