Gateway

監査履歴

監査履歴

Gateway は、共有 OpenClaw 状態データベースに、サイズが制限されたメタデータのみの監査台帳を保持します。この台帳により、「どのエージェントがいつ実行され、どのように終了したか」、「実行中にどのツールアクションが実行されたか」、またメッセージ監査が有効な場合は、「受理された受信メッセージがディスパッチに到達したか」および「送信メッセージが終端配信状態に到達したか」といった運用上の疑問を確認できます。

台帳には、識別情報、順序、来歴、アクション、ステータス、および正規化された結果コードが保存されます。プロンプト、メッセージ本文、ツール引数、ツール結果、添付ファイル、ファイル名、URL、コマンド出力、生のエラーテキストは一切保存されません。

レコード種別

監査が有効な場合(デフォルト)、実行イベントとツールイベントが記録されます。メッセージのライフサイクルイベントはオプトインであり、デフォルトでは無効です。

種別 アクション デフォルト
エージェント実行 agent.run.started, agent.run.finished オン
ツールアクション tool.action.started, tool.action.finished オン
メッセージ message.inbound.processed, message.outbound.finished オフ

すべてのレコードには、安定したイベント ID、単調増加する台帳シーケンス、ライフサイクルのタイムスタンプ、アクター、アクション、ステータス、schemaVersion: 1、および redaction: "metadata_only" が含まれます。フィールドの完全なリファレンスとクエリフィルターについては、監査レコードを参照してください。

メッセージのライフサイクルイベント

記録対象を選択するには、audit.messagesを設定し、Gateway を再起動します。

  • off(デフォルト):メッセージレコードなし。
  • direct:ダイレクト会話内のメッセージのみ。
  • all:ダイレクト、グループ、およびチャンネルのメッセージ。

メッセージレコードは、次の 2 つの信頼できる境界で生成されます。

  • 受信行は、受理されたメッセージがコアディスパッチに到達したときに書き込まれます。重複および終端処理の結果も含まれます。
  • 送信行は、共有の永続配信が「送信済み」、「抑止」、「失敗」、またはクラッシュにより送信結果が曖昧な場合の明示的な unknown のいずれかの終端結果に到達したときに書き込まれます。キューの復旧結果とデッドレター結果も含まれます。元の各論理返信ペイロードにつき、終端行が 1 行生成されます。チャンク分割とアダプターのファンアウトは resultCount に集約されます。

会話種別の分類

direct モードはプライバシー境界であるため、メッセージがダイレクト会話として分類されるのは、宛先に関する事実によってそれが証明される場合のみです。つまり、送信パスで宛先の会話種別が宣言されているか、配信セッションのルートで配信先のチャンネルとピアが厳密に指定されている場合です。ポリシー状態や発信元の会話など、より弱いシグナルによってメッセージを group と分類し、direct の収集対象から除外することはできますが、direct であると断定することはできません。ダイレクトであることを証明できないメッセージは unknown と分類され、direct モードでは記録されません。そのため、チャット種別を宣言しないチャンネルでは、direct モードで記録される行数が all モードより少なくなる場合があります。

プライバシーモデル

メッセージ行には、プラットフォームの生の識別子は一切保存されません。関連付けが可能な場合、アカウント、会話、メッセージ、および宛先の識別子は、インストール環境内でのみ有効な鍵付き仮名(hmac-sha256:v1:<keyId>:<digest>)としてのみエクスポートされます。

  • HMAC キーは初回使用時に生成され、識別子の種類ごとにドメイン分離され、台帳と同じ状態データベースに保存されます。
  • 仮名は 1 つのインストール環境内では安定しているため、プラットフォーム識別子を明らかにすることなく、同じ会話に関する行を関連付けられます。
  • これは匿名化ではなく関連付けです。状態データベースへの読み取りアクセス権を持つ者はキーにもアクセスできるため、生の識別子候補を仮名と照合できます。RPC および CLI のエクスポートにキーが含まれることはありません。
  • メッセージ行が保持されている状態でキーマテリアルが欠落または破損した場合、Gateway はフェイルクローズし、関連付けが分断される新しいキーへ暗黙にローテーションするのではなく、新しいメッセージレコードを破棄します。

実行レコードとツールレコードは、関連付けのために sessionKeysessionId を保持します。正規セッションキー自体に、プラットフォームのアカウント ID またはピア ID が含まれる場合があります。メッセージレコードでは、意図的にその両方が省略されます。

監査エクスポートは、内容を含まなくても機密性の高い運用メタデータです。タイミング、チャンネル、結果、安定した仮名によってアクティビティを関連付けられます。エクスポートは、他の運用者向けレコードと同じアクセス制御および保持方法で保護してください。

対象範囲と証明の限界

台帳はベストエフォートであり、意図的にサイズが制限されています。実際に起きたことの証明ではなく、記録されたことの証拠として扱ってください。

  • 行が存在しないことは、何も証明しません。 受理前に破棄された受信メッセージ、Gateway レコーダーが実行されていない CLI プロセスからの送信、および共有の永続配信を迂回する Plugin ローカルまたは直接送信パスは記録されません。
  • 書き込みはサイズ制限付きのバックグラウンドワーカーを経由します。ワーカーの障害またはキューの飽和が発生すると、レコードが破棄され、運用上の警告が 1 件ログに記録されます。
  • クラッシュにより結果が曖昧な送信は、推測した結果ではなく unknown として記録されます。

この台帳は、デバッグと運用レビューを支援します。欠損のないコンプライアンスアーカイブではありません。そのようなアーカイブが必要な場合は、OpenTelemetryまたはチャンネルレベルのツールからデータを受け取る外部システムを使用してください。

ストレージ、保持、および移行

レコードは共有状態データベース(state/openclaw.sqlite)に保存され、配信のホットパス外で書き込まれます。クエリが 30 日より古いレコードを返すことはなく、台帳は 100,000 行に制限されています。期限切れの行は、起動時、1 時間ごとのメンテナンス、およびその後の書き込み時に削除されます。収集が無効な場合でも、保持メンテナンスは継続して実行されます。

以前の実行/ツール専用台帳を使用する Gateway からアップグレードすると、起動時(または openclaw doctor --fix 経由)にスキーマが自動的に移行されます。既存の行とその台帳シーケンスは保持されます。

クエリ

  • CLI:openclaw audit。エージェント、セッション、実行、種別、ステータス、方向、チャンネル、時間範囲、およびカーソルページングのフィルターを使用できます。
  • Gateway RPC:audit.activity.listoperator.read が必要)は、バージョン付きの V1 アクティビティイベント共用体を返します。出荷済みの audit.list RPC は、以前の実行/ツールクライアント向けに変更されていません。Gateway プロトコルを参照してください。

関連項目

Was this useful?
On this page

On this page