コードに置かねばならないもの
ゲーティングのページは「しきい値はコードが持つ」という話でした。 このページはもう一段強く、そもそもモデルに聞くべきでない検査があるという話です。
公開されている中で最も強い境界の宣言
最も硬い一行は、ある agent ループの実装から来ています。
リスクスコアの高いツール呼び出しは人間の承認を強制し、 いかなる確率もそれを覆せない。
「いかなる確率も覆せない」は切り出して読む価値があります。 「信頼度が非常に高ければよい」ではなく、この規則は確率空間の中にないと 言っています。区別は重要です。
- 「0.95 以上で自動承認」はしきい値規則です。原理上、十分に高い確率があれば通ります。
- 「高リスクは人間の承認が必要」は構造的規則です。モデルが何を言っても成立します。
信頼性は同じ桁ではありません。システムの中でどちらの種類の検査かを明示し、 構造的規則をできるだけ多くしてください。
決定論的な規則を先に走らせ、灰域だけをモデルに渡す
同じパターンの別の言い方です。
決定論的な規則を先に走らせる。判定できるものはその場で block か通過させ、 モデルは任意のバックエンドにすぎない。定型的なコマンドはローカルで決まり、 モデルには一切送られない。
規則を先に置くことには見落とされがちな利点があります。攻撃面が縮みます。 モデルにのみ依存する判定器は、プロンプトインジェクションに対して予測不能に振る舞います。 規則を先に走らせる判定器では、注入が影響できるのは規則で決まらないわずかな部分だけです。
公開されたインジェクション試験は 300 回の試行を報告し、 門が何を止め、何がすり抜けたかを率直に書いています。 「インジェクション対策」の一言より、はるかに有用です。
秘密情報:まずローカルで止める
ある秘密検出器の設計は、順序を明快に示しています。
| 状況 | 扱い |
|---|---|
| 既知形式の秘密 | ローカルで遮断。モデルには送らない |
| 未知の高エントロピー文字列 | 先にマスクし、マスク後のテキストをモデルへ |
| モデルが 0.80 以上 | 遮断 |
| モデルが 0.30 以上 | 人に確認 |
| モデルが使えない | それでも人に確認 |
覚えるべき判断が二つあります。
- マスクが先。 秘密かどうかを判定するために、秘密かもしれないものを 外部サービスへ送ることはできません。判定そのものが漏洩します。
- モデルが落ちていても通さず人に聞く。 fail-closed の具体的な形です。 サービスが使えないことは、安全水準を静かに下げる理由にはなりません。
実測:秘密 6/6 を遮断、良性入力の誤遮断 0/6。
予算上限、署名つきレシート、監査
モデルの発言と無関係だが同じシステムに必要ないくつかの検査:
- あるランタイムは危険なコマンドの遮断と予算上限を決定論的なコードに置き、 すべての裁定を Ed25519 署名つきのレシート連鎖に記録します。
- 別のものはリスクスコアをコードが制御する 0〜100 の値に限定し、 裁定ごとに ES256 で署名します(540 回の呼び出し、しきい値 65〜75 で 99.76%、誤検知 0)。
署名の意味は、モデルへの対策ではなく、後から説明できるようにすることです。 自動裁定が事故を起こしたとき、「そのときモデルが何を言い、コードがどう扱ったか」が 独立に検証できる必要があります。ログを信じるしかない状態では困ります。
インジェクションは二か所で筛く
ある防御層の設計は、見落としやすい二か所を名指ししているので独立して挙げます。
ツール呼び出しが実行される前に一度筛り、 ツールの結果が agent に読まれる前にもう一度筛る。
二つ目が要点です。入力を筛るだけでは、攻撃はツールが返す内容に隠れられます。 取得したページ、読み込んだファイルの中身 —— これらは入力側の検査を通過した後に コンテキストへ入ります。
同種の規則が検索拡張の実装にもあります。 引用元に存在しない数値は、一切出力しない。
サンドボックスと権限
内容を筛ることに加えて、影響範囲を制限する層があります。 保護されたパスは常に人間の確認を通し、agent の実行は隔離された作業領域で 行います(Docker を使う実装があります)。子 agent の権限は親と分けます。
対応表
| 検査 | 種類 | 壊れたときどちらに倒れるか |
|---|---|---|
| 既知形式の秘密 | 決定論的規則 | 遮断 |
| 高リスク操作の承認 | 構造的規則 | 拒否(人間の承認が必要) |
| 読み取り専用コマンドの自動承認 | しきい値規則 | 通常の確認に戻す |
| ツール出力内のインジェクション | 決定論的フィルタ + モデル | 遮断 |
| 「agent は終わったか」 | 効率ゲート | 通す(fail-open) |
| 書式・スタイルの検査 | 効率ゲート | 通す |
中央の列が要点です。上にあるものほど、モデルに関与させるべきではありません。
一文で
確率で覆せる検査は、いつか必ず覆されます。 まずどの検査を覆わせないかを決め、それからしきい値の調整に移ってください。