agent-decision-receipts について
Agent Decision Receiptsは、重大なエージェント操作について改ざんを検出できる署名付きレシートを作成し、オフラインで検証するスキルです。OpenAgentOntologyのプリミティブを使い、作成要否の判断、操作マニフェストの構築、検証を扱い、ログ分析は行いません。
主な機能
- 01レシートが必要な操作を判断
- 02操作マニフェストを構築・検証
- 03レシートに署名し証拠ハッシュを生成
- 04ハッシュと署名をオフライン検証
- 05オプションでポスト量子署名を利用
活用シーン
- 01デプロイや支払いなど重要な操作を記録
- 02コンプライアンス確認用にエージェントの判断証拠を保存
- 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点だけです。
- この操作にレシートは必要か? — 副作用があり、重大で、後から証明できる場合は必要です。
- レシートを発行する — 操作マニフェストを作成し、OAO プリミティブで署名します。
- 検証する — 証明書だけを使い、ハッシュを再計算して、各署名方式を確認します。
このスキルはログ分析ではありません。ログは何が起きたかを記述しますが、気づかれずに編集できます。レシートは実行前または実行時に発行され、編集すると無効になります。デバッグにはログを、証拠にはレシートを使用してください。
このスキルはホスト型の公証サービスではありません。誰でもオフラインで検証できる、ローカルで自己署名されたレシートを発行します。組織間の検証(ある組織が別の組織に証明すること)は、別のホスト型サービスであり、ここでは対象外です。
このスキルは法的見解を示すものではありません。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]"。