mcpField
A
agent-decision-receipts

agent-decision-receipts

github.com/alirezarezvaniセキュリティ28.9k44 回インストール2 日前に更新
リポジトリ

agent-decision-receipts について

Agent Decision Receiptsは、重大なエージェント操作について改ざんを検出できる署名付きレシートを作成し、オフラインで検証するスキルです。OpenAgentOntologyのプリミティブを使い、作成要否の判断、操作マニフェストの構築、検証を扱い、ログ分析は行いません。

主な機能

  1. 01レシートが必要な操作を判断
  2. 02操作マニフェストを構築・検証
  3. 03レシートに署名し証拠ハッシュを生成
  4. 04ハッシュと署名をオフライン検証
  5. 05オプションでポスト量子署名を利用

活用シーン

  1. 01デプロイや支払いなど重要な操作を記録
  2. 02コンプライアンス確認用にエージェントの判断証拠を保存
  3. 03発行元に問い合わせずレシートを検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alirezarezvani/claude-skills --skill agent-decision-receipts

インストール後、Claude Code で/agent-decision-receiptsを入力して読み込まれたか確認します。

同梱ファイルreferences/receipt-fields.mdscripts/build_action_manifest.py

詳細

エージェントの判断レシート

概要

ログは、ある操作が実行されたことを示します。レシートは改ざんを検知できます。誰が、何を、どのポリシーに基づいて実行したかを記録し、署名されるため、後から編集すると署名が無効になります。このスキルは、重大なエージェント操作についてレシートを発行し、後から証明書だけで検証します。データベースもネットワークも不要で、発行者を信頼する必要もありません。

暗号処理はこのスキルには含まれていません。オープンソースの OpenAgentOntology レシートプリミティブ(Apache-2.0)を使用します。このプリミティブは、すべてのレシートに Ed25519 で署名し、ポスト量子バックエンドがインストールされている場合は、ポスト量子方式の ML-DSA-65(FIPS 204)と SLH-DSA(FIPS 205)も使用します。このスキルは判断レイヤーです。発行するタイミング、記録する内容、検証方法を扱います。インストールは一度だけで、スキルごとに暗号処理を用意する必要はありません。

判断するのは次の3点だけです。

  1. この操作にレシートは必要か? — 副作用があり、重大で、後から証明できる場合は必要です。
  2. レシートを発行する — 操作マニフェストを作成し、OAO プリミティブで署名します。
  3. 検証する — 証明書だけを使い、ハッシュを再計算して、各署名方式を確認します。

このスキルはログ分析ではありません。ログは何が起きたかを記述しますが、気づかれずに編集できます。レシートは実行前または実行時に発行され、編集すると無効になります。デバッグにはログを、証拠にはレシートを使用してください。

このスキルはホスト型の公証サービスではありません。誰でもオフラインで検証できる、ローカルで自己署名されたレシートを発行します。組織間の検証(ある組織が別の組織に証明すること)は、別のホスト型サービスであり、ここでは対象外です。

このスキルは法的見解を示すものではありません。FRE 902(13)/(14) に準じた証明や、EU AI Act 第12条の記録保持を支援する形式の証拠を作成します。特定のレシートが証拠として採用されるかどうかは、弁護士に相談してください。

クイックスタート

# Install the open-source receipt primitive (Apache-2.0). Add [pq] for the post-quantum legs.
pip install "openagentontology[pq]"

# 1. Build + validate an action manifest (stdlib only, no crypto, no network)
python scripts/build_action_manifest.py --agent my-deploy-agent --operation deploy \
    --target prod/api --policy "EU AI Act Art 12" --out action.json

# 2. Mint the receipt over it (Ed25519 + post-quantum legs)
python -c "import json,openagentontology.receipt as r; \
  print(json.dumps(r.mint_receipt(json.load(open('action.json')), decision='ACTION_GOVERNED')))" > receipt.json

# 3. Verify from the cert alone (no DB, no network)
python -c "import json,openagentontology.receipt as r; \
  print(r.verify_receipt(json.load(open('receipt.json'))))"
# -> {'ok': True, 'sig_ok': True, ... 'reason': 'verified from the cert alone via: ed25519, ml_dsa, slh_dsa'}

依存関係に関する注意。 このスキルは署名処理を openagentontology に委譲します(Apache-2.0、任意の pip install)。ここに同梱されているスクリプトは標準ライブラリのみを使用し、リポジトリへの依存関係を追加しません。このパッケージは運用担当者がインストールします(BYO ライブラリ方式)。インストールされていなくてもビルド手順は動作しますが、発行と検証にはインストールが必要です。

基本ワークフロー

以下の3つの判断がこのスキルのすべてです。レシートが必要か判断し、発行してから、検証します。

判断1:この操作にレシートは必要か?

次の3つすべてに当てはまる操作では、レシートを発行します。

テスト次の場合に発行
副作用がある書き込み、送信、デプロイ、削除、支払い、アクセス権の付与、または外部状態の変更を行う
重大である誤った判断によって金銭的損失が生じる、コンプライアンスに違反する、または人に危害が及ぶ
後から証明できる誰か(監査人、保険会社、規制当局、裁判所、取引相手)から「エージェントは何を、なぜ実行したのか」と問われる可能性がある

読み取り専用で、取り消し可能な単純な操作にレシートは不要です。すべてにレシートを発行すると重要な情報が埋もれ、何にも発行しないと、肝心の操作を証明できません。

重要度の高いトリガー(原則として発行):deploy、delete、pay/wire/refund、grant_access、export/egress、申し立ての approve/deny、および高リスク AI システムにおいて人に影響を与えるあらゆるモデルの判断。

判断 2:レシートを発行する

アクションマニフェストは、エージェントが実行した内容を記述する、ASCII で安全に扱える任意の辞書です。4 つのキーが必須です。欠けているキーがある場合、build_action_manifest.py はマニフェストを拒否します(終了コード 2)。さらに 2 つのキーが自動的に追加されます。

キー必須?内容
agent_id必須操作を実行したエージェント
operation必須動詞(deploy / delete / pay / decide / ...)
target必須操作の対象
policy必須適用されるルール(例:「EU AI Act Art 12」、「internal change-control」)
inputs_hash自動追加--inputs のハッシュ。ペイロード全体を平文で保存する必要はありません(--inputs を省略した場合は、空の値のハッシュがデフォルトで設定されます)
decision_label自動追加レシートの判断ラベル(デフォルトは ACTION_GOVERNED)

mint_receipt(manifest, decision=...) は、マニフェスト全体をレシートの証拠としてハッシュ化し、正規化された本文に署名して、evidence_hash、signature_b64(Ed25519)、および [pq] がインストールされている場合は ml_dsa_signature_b64 と slh_dsa_signature_b64 を含むレシートを返します。各方式は同じバイト列に署名します。いずれか 1 つの署名を検証できれば、真正性が証明されます。

レシートスキーマ全体と耐量子暗号を採用する理由については、references/receipt-fields.md を参照してください。

判断 3:検証する

verify_receipt(receipt) は sha256(canonical(evidence)) を再計算して evidence_hash と比較し、続いてバックエンドが利用可能なすべての署名方式を確認します。戻り値は {ok, hash_ok, sig_ok, legs, reason} です。アクション内のどこか 1 バイトでも編集されると hash_ok が失敗し、偽造された署名があると、その署名方式の検証が失敗します。検証に必要なのはレシートだけで、発行者への再照会は不要です。

この特性によって、レシートは証拠として機能します。発行者を信用していないレビュー担当者でも、完全にオフラインの状態で、レシートが改ざんされておらず真正であることを確認できます。

アンチパターン

  • 判断ではなく、ログをレシート化する。 事後に書き込まれたログ行に対してレシートを発行しても、何も証明できません。アクションの実行時に、そのアクションに対して発行してください。
  • 署名キーをレシートと同じ場所に保存する。 キーが侵害されると、署名は何の意味も持ちません。キーはほかの署名用シークレットと同様に扱い、決してコミットしないでください。
  • 耐量子暗号の署名方式が利用可能なのに、Ed25519 だけを使う。 レシートは長期にわたって使われる証拠です。将来、量子コンピューターによって Ed25519 が破られる可能性に備え、耐量子暗号の署名方式(ML-DSA-65 + SLH-DSA)も使って一度署名し、検証可能な状態を保ってください。[pq] をインストールしてください。
  • 生のシークレットや PII をマニフェストに含める。 マニフェストは証拠としてハッシュ化され、レシートから復元できます。平文ではなく、ハッシュ(inputs_hash)を使用してください。
  • 「証拠能力がある」と称する。 これは、FRE 902(13)/(14) に準じた証明を支援するための形式に整えた証拠です。証拠能力を判断するのは裁判所であり、ツールではありません。
  • 暗号機能が使えない場合に署名を偽装する。 このプリミティブは代わりに unsigned フラグを明示的に出力します。未署名のレシートを署名済みとして提示しないでください。

相互参照

  • ra-qm-team/skills/eu-ai-act-specialist/ — AI システムのリスク階層と第 12 条の義務を判断します。このスキルは、それらの義務で求められるアクションごとの記録を発行します。
  • ra-qm-team/skills/iso42001-specialist/ — AI マネジメントシステムの管理策です。レシートは、これらの管理策で求められる判断ごとの証拠です。
  • OpenAgentOntology (Apache-2.0):このスキルが利用するオープンソースのレシートプリミティブです — pip install "openagentontology[pq]"。

コメント