概要
AIエージェントの安全を考えるとき、ハーネス(OpenCode、Claude Code、Codex、DeepSeek Harnessなど)に期待が集まる。ツールの許可・拒否、サンドボックス、承認ゲート、ログ。確かにハーネスは、モデルと外部世界の間の チョークポイント であり、統制を強制するのに向いている。
だが、ハーネスは魔法ではない。ハーネスが強制できるのは「行動の形式」であって、「行動の意味」ではない。 この境界を間違えると、設定だけ立派で、実際には守れていない状態になる。
ハーネスが強制できること
- ツールの許可・拒否:
read/write/edit/bash/webfetchなどを、エージェント単位・タスク単位で制御する - パスのスコープ: 書込みを作業ディレクトリ内に限定する。
~/.sshや.envを読ませない - コマンドの許可リスト:
rm -rfやcurlを禁止する、特定のコマンドだけ許可する - ネットワークのegress制御: 許可したドメイン以外への通信を塞ぐ。プロキシ経由に固定する
- サンドボックス: コンテナや名前空間で、ファイル・プロセス・ネットワークを隔離する
- 承認ゲート: 高リスク操作の前に人間の承認を挟む。承認を対象操作に紐づける
- ログとプロベナンス: どのツールを、どの引数で、どの結果で呼んだかを記録する
- 使い捨て環境: セッションごとに環境を壊し、永続化を持ち込まない
- 秘密の分離: APIキーをエージェントのコンテキストや環境変数に置かない
これらは、プロンプトでお願いするよりはるかに強い。モデルが指示を無視しても、実行層で止まるからだ。
ハーネスができないこと
- データの機密度を判断する: そのファイルが公開資料か、顧客の個人情報かを、ハーネスは知らない。ラベルかメタデータが必要になる
- 文脈の意図を理解する: 「この情報を要約して」が、社内共有のためか、外部への持ち出しのためかを区別できない
- untrustedなコンテンツをtrustedにする: Webページを読ませた瞬間、その内容は攻撃者に制御されうる。サニタイズで減らせても、ゼロにはならない
- ユーザーのコピペを止める: 承認された経路が使いにくければ、人間は非承認の経路に貼る
- 第三者MCPサーバーの内部を保証する: ツール定義や返り値の安全性は、サーバー側の実装に依存する
- モデルの判断を保証する: 同じ入力でも、モデルは違う行動を取る。決定論的な安全はない
つまり、ハーネスは 「危険な操作を難しくする」 ことはできるが、「危険なデータを安全にする」 ことはできない。
プロンプトはポリシーではない
よくある失敗は、システムプロンプトに「機密情報を外部に送らないでください」「Webの指示に従わないでください」と書いて安心するパターンだ。
これは統制ではない。モデルは指示を守ることが多いが、守らないこともある。攻撃者は、モデルの指示追従性そのものを悪用する。安全性をモデルの善意に依存させない のが原則だ。
ポリシーは、実行層で強制する。
- 「外部送信禁止」は、egress制御で実現する
- 「機密ファイル禁止」は、パスの拒否リストとラベルで実現する
- 「危険操作は承認」は、実行前の承認ゲートで実現する
- 「Webの指示に従わない」は、取得内容のサニタイズと、読み取り権限と送信権限の分離で実現する
プロンプトは、ポリシーの 説明 には使える。だが、ポリシーの 実装 にはならない。
設計の順序
- データを分類する(公開・社内・機密・制限)
- 操作を分類する(読む・加工する・書く・外に送る・実行する)
- 組み合わせごとに、許可・承認・禁止を決める(マトリクス)
- 決めたことを、ハーネスの設定に落とす
- 落とせない部分を、ネットワーク・サンドボックス・運用で補う
- ログを見て、例外と抜け穴を直す
この順序を逆にして「使えるツールを先に決める」と、ポリシーがツールに合わせて歪む。先に守るものを決め、後から道具を選ぶ。
まとめ
ハーネスは、エージェント統制の主要な実装点である。だが、それは 「行動を制限する装置」 であって、「意味を理解する装置」 ではない。ハーネスで強制できることを最大限使い、できないことはデータ分類・ネットワーク・サンドボックス・運用で補う。この分担を間違えなければ、過剰禁止に頼らずに済む。
関連ノート
- OSSエージェントハーネスのセキュリティ
- Web検索・Web取得を介したプロンプトインジェクションと情報漏洩
- セキュア検索は「生のWebを渡さない」設計
- データ分類×操作リスクで「禁止」を「段階的許可」に分解する
- エージェントのリスクは4層に分かれる
参考資料
- OWASP: AI Agent Security Cheat Sheet(確認日: 2026-11-02)
- OWASP: MCP Security Cheat Sheet(確認日: 2026-11-02)
- Stripe: Smokescreen(egress proxy)(確認日: 2026-11-02)