この記事の要点
- 入力から結果までを一つの実行IDで結び、時系列と責任主体を追跡できるようにする
- 内部推論の全文ではなく、判断結果、適用ルール、承認、ツール操作を記録する
- 機密情報を最小化しながら、改ざん検知と再現性を確保する
ログの量と説明可能性は同じではない
AIエージェントはモデル、検索、外部API、ブラウザ、通知など複数の仕組みを横断します。それぞれのログが残っていても、時刻や識別子が別々では、一件の結果がどの入力と判断から生まれたのかを説明できません。
監査に必要なのは、すべてのデータを保存することではなく、特定の実行を端から端まで検証できることです。そのために、関連する記録を実行単位の証拠パッケージとして束ねます。
共通の実行IDで出来事をつなぐ
ワークフロー開始時に一意の実行IDを発行し、モデル呼び出し、承認依頼、ツール実行、外部システムの応答まで引き継ぎます。再試行や子タスクには別のIDを付け、親実行との関係を記録すると、重複や分岐を追跡できます。
- 開始・終了時刻と、各ステップの順序
- 実行を開始した利用者、サービス、スケジュール
- 使用したワークフロー、モデル、設定、ルールのバージョン
- 親実行、子タスク、再試行、承認依頼の関連ID
- 正常完了、部分成功、失敗、SAFE_HOLDの最終状態
判断過程ではなく、検証可能な根拠を残す
モデルの内部推論を全文保存しても、監査担当者が業務判断を再現できるとは限らず、不要な個人情報や機密情報を増やす可能性があります。代わりに、参照した入力、適用したルール、判定結果、信頼度や検証結果、選択したアクションを構造化して記録します。
ツール操作では、実行主体、対象、主要な引数、応答状態、外部側の処理IDを保存します。本文やファイルの全量が不要な場合は、保管場所への参照とハッシュを残し、後から同一性を確認できるようにします。
一件の証拠パッケージに必要な内容
レビュー担当者が複数の管理画面を行き来しなくても、何が起きたかを時系列で確認できる形を目指します。人間の承認や手動修正も外部イベントとして扱わず、同じパッケージへ含めます。
- 受け付けた依頼、入力元、入力データの参照またはハッシュ
- 適用したポリシーと、許可・拒否・要承認の判定
- 人間の承認者、対象内容、日時、差し戻しコメント
- 各ツールの操作内容、対象、結果、外部システムの処理ID
- 生成物と変更前後の差分、実施した自動検証
- エラー、再試行、停止理由、未確認の副作用、再開条件
機密性と改ざん耐性を両立する
証跡に認証情報、個人情報、メール本文などを無条件で複製すると、ログ自体が新しいリスクになります。項目ごとに保存目的と閲覧者を決め、不要な値はマスキングし、原本への参照だけで足りる情報は重複保存しません。
記録はエージェント自身が上書きできない保管先へ送り、連番、ハッシュ、時刻情報などで欠落や変更を検出できるようにします。閲覧、出力、保持期限後の削除も記録対象に含めます。
- 秘密情報と認証情報を収集前に除外またはマスキングした
- 証跡の書き込み権限と閲覧権限を分離した
- 保存後の変更と欠落を検知できる仕組みがある
- 業務上必要な保持期間と削除方法を定めた
証跡は定期的に取り出して検証する
保存されているだけのログは、必要な場面で検索できないことがあります。正常完了、承認拒否、部分成功、タイムアウトなどの代表例を選び、証拠パッケージだけで実行内容と最終状態を説明できるか定期的に確認します。
不足が見つかった場合は、項目を増やす前に、どの判断を検証できなかったかを特定します。監査担当者、運用担当者、開発担当者が同じ実行IDを使って会話できる状態が、証跡を実務に役立つものへ変えます。