コンテンツにスキップ

エージェントの操作の統制

附属書E E.5は、検証の順序の4番目に実行トレースの確認を置いています。

この確認を目視で行う設計は成立しません。1回のタスクで数十から数百の操作が実行される環境では、痕跡を遡って探す作業は時間の制約のもとで確認済みの印を付ける操作へ縮退します。これは第5章 5.6が防止すべきとする形骸化そのものです。

本ページは、E.6 の5事象を目視の対象から外し、遮断と機械判定へ振り分ける設計を規定します。

E.6 の事象 本ページでの扱い 担い手
仕様の範囲外のファイルを変更した 事前に遮断する 実行時の書き込み範囲の制限
認証情報・秘密情報へ接触した 事前に遮断する 読み取り範囲の制限、秘匿情報の隔離
想定していない外部への通信を行った 事前に遮断する ネットワークの既定拒否
失敗したテストを、テスト側の変更で通過させた 差分から機械判定する CI の検査
検証を無効化する設定変更を含めた 差分から機械判定する CI の検査

人が確認するのは、遮断が働いた事例と機械判定が指摘した事例だけです。何も指摘がない場合に痕跡を読む作業を求めません。

3つの事象は、いずれも起きてから見つけるより、起こさないほうが確実です。許可した範囲の外を拒否する構成にします。

対象 既定 許可する範囲の決め方
書き込み 拒否 実装計画のタスクが対象とするパス
読み取り リポジトリ内は許可 秘匿情報を含む経路を除外する
ネットワーク 拒否 依存関係の取得先など、必要な宛先のみ許可する
コマンド実行 許可リスト 実行を許すコマンドを列挙する
  • 拒否された操作は記録へ残す。拒否の発生そのものが、タスクの範囲設定が実態と合っていない兆候である
  • 許可範囲の変更を、エージェントに実行させない。範囲の変更は人間の操作による
  • 秘匿情報は実行環境から参照できない位置へ置く。読み取りの制限だけに頼らない

遮断を指示ではなく設定で行う

Section titled “遮断を指示ではなく設定で行う”

許可範囲を指示ファイルにのみ書いてはなりません。指示ファイルの遵守は保証されません(第3章 3.11.3)。同じ区別をスタック型 PR の運用でも用いています。

層 置くもの
誘導層(指示ファイル) 範囲外へ出ようとした場合に人へ確認を求める旨
強制層(実行環境の設定) 書き込み範囲、ネットワーク、コマンドの許可リスト

強制層に置けない項目は、遮断できたものとして扱いません。

遮断の実装は、利用するエージェントの実行基盤が提供する機構によります。本標準は特定の製品・拡張機能を指定しません。指定すると、提供条件が変わったときに規定が破綻します。

規定するのは要求仕様です。

# 要求
1 書き込み・ネットワーク・コマンド実行のそれぞれについて、許可範囲を設定できる
2 設定を版管理下に置き、案件ごとに指定できる
3 拒否された操作を、後から参照できる形で記録できる
4 設定の変更が、エージェント自身の操作では行えない

要求4を満たさない基盤では、遮断は成立しません。範囲を広げる操作が実行の一部として行えるためです。

残る2事象は、実行の痕跡ではなく差分の性質から判定できます。痕跡を読む必要はありません。

検査 検出の条件 扱い
検証の弱体化 テストの削除、アサーションの削除、skip 相当の付与 ラベルを付け、独立レビューの必須確認事項とする
基準値の引き下げ カバレッジ閾値、静的解析の重大度設定の変更 G-5 を通過させない。分離した変更として技術判断者の承認を要する
検査の除外設定 除外リスト・無視設定への追加 同上
テストのみの変更で失敗が解消した 実装の差分が空で、直前の実行が失敗していた ラベルを付け、必須確認事項とする

基準値と除外設定の変更を通過させない根拠は E.6 にあります。これらの変更は、以後のすべての通過を無効化します。機能の変更と同じ経路で通してはなりません。

検証の弱体化をラベルにとどめる理由は、正当な削除(仕様変更に伴うテストの削除)と区別できないためです。区別できない検査を合否条件に置くと、正当な変更まで止まり、検査の除外が常態化します。

以上により、開発者が確認するのは次の3つだけになります。

# 見るもの 範囲
1 遮断が働いた記録 件数は有界。0件であれば見るものがない
2 機械判定が付けたラベル 同上
3 実装計画の対象パスと、実際に変更されたパスの差 機械的な突合の出力

E.5 は「確認の範囲が有界であること」を要件としています。範囲の定まらない確認は、時間の制約のもとで省略されるためです。本ページの3項目は、いずれも数え上げられます。

操作の要約を AI に作らせません

Section titled “操作の要約を AI に作らせません”

エージェントの操作の要約を、エージェント自身または別の AI に生成させてはなりません。

  • 要約は評価を含む。「想定内の操作でした」という記述は、確認の結論を先に与える
  • 監査の対象が監査の記録を書く構造になる
  • 第5章 5.8.5 の禁止事項5およびレビューパッケージの原則(生成を機械的な導出に限り、要約と評価を含めない)と同じ理由による

機械的な導出は許容します。実行したコマンドの分類、変更したパスの一覧、通信先の一覧は、いずれも集計であり評価を含みません。

障害の原因調査、および工程の適合性に関する外部への説明では、成果物がどの条件のもとで生成されたかの特定を求められます。この特定に要する項目を、変更単位ごとに記録します。

項目 記録する内容 導出元
モデルの識別子と版 実行に用いた生成モデル エージェントの実行記録
指示資産の版 参照した恒久層コンテキストと指示ファイルのコミット リポジトリの参照点
実行の識別子 当該の実行を後から引き当てる鍵 エージェントの実行記録

いずれも観測できる事実であり、判断を含みません。PR ワークフローの「AI 関与範囲」欄と同じく、自動で埋めます。人へ転記させた場合、記録の欠落を目視で検査する構成になります。

エージェントへ渡した指示の全文は、記録の対象に含めません。理由は3つです。

  • 分量が変更単位ごとに増え続ける。保管する量に対して、参照される場面が釣り合わない
  • 指示には作業中の試行錯誤が混ざる。秘匿情報の混入を検査する対象が新たに増える
  • 全文があっても生成は再現しない。次項による

参照すべき指示は指示資産の側にあり、その版はリポジトリのコミットで特定できます。

再現できることを記録の目的に置きません

Section titled “再現できることを記録の目的に置きません”

上表の項目が揃っても、同じ出力は得られません。生成は非決定的であり、提供者側の更新によって、同じ版の指定が同じ挙動を返さなくなる場合もあります。

したがって記録が支えるのは、生成の再実行ではなく次の2点です。

  • 当該の成果物が、どの条件のもとで作られたかの特定
  • 同じ条件で作られた他の成果物の一覧。ある条件の問題が判明した場合、影響範囲の絞り込みに用いる

「生成時の条件を記録しているため再現できる」と外部へ説明してはなりません。説明できるのは条件の特定までです。成果物が正しいことの根拠は、生成の条件ではなく検証の記録によります(ADR-0012)。

  • 遮断が働くのは設定した範囲についてのみであり、想定していない経路は遮断できない。記録を残す要求(要求3)の目的は、この限界を埋めることではなく、後から経路を特定できるようにすること
  • 遮断が0件であっても、想定外の操作がなかったことにはならない。「拒否が0件だから安全である」と記録してはならない
  • 差分からの機械判定は、正当な変更と区別できない範囲ではラベルにとどまる。ラベルの確認を省く運用では、この層は働かない