In Silico

AIエージェント

AP2とACPの違い:エージェント決済の権限と承認の設計

2026/9/30 (更新: 2026/10/13)

  • AP2
  • AIエージェント
  • 決済
  • ACP
  • Mandate
  • allowance
  • Trusted Surface
  • Delegate Payment
  • FIDO Alliance
  • プロンプトインジェクション
  • 署名
  • 開いたMandate
  • 閉じたMandate
  • 検証側
  • 決定的なコード
  • 加盟店
  • PSP
  • カード情報
  • トークン
  • 資格情報
  • 決済網
  • 3D Secure
  • Human Not Present
  • 上限額
  • 有効期限
  • 品目
  • 公開鍵
  • 受領書
目次
背景・問い・要点
背景

AIエージェントに買い物や予約を任せるなら、支払いも任せることになる。利用者が毎回価格や条件を見て決済ボタンを押す手順を省き、エージェントが商品を選んでから支払うまでを続けて進める形である。

問題は、支払いのためにエージェントへ何を渡すかである。保存したカードや決済アカウントをそのまま渡すと、エージェントは利用者本人と同じだけ支払える。利用者が任せた用件に合わせた制限は、金額にも店にも掛からない。エージェントが偽の指示に従って支払っても、利用者が何をどこまで承認していたかを後から示す記録が無い。

注文を受ける加盟店(商品を売る店)にも同じ問題がある。エージェントから届いた注文が利用者本人の意思によるものか、利用者がどんな条件で承認したのかを、加盟店は外から確かめられない。標準化団体も、誰が、どんな条件と上限で行為を認可したのかを検証する手段を、サービス提供者が欠いていると指摘する1。

この問題を扱う仕様が、二つ公開されている。AP2(Agent Payments Protocol)は、Googleが公開し、FIDO Allianceへ寄稿した仕様である1。FIDO Allianceは2026年4月28日、AP2とMastercardの寄稿を土台に、エージェント発の商取引向けの仕様を作ると発表した1。ACP(Agentic Commerce Protocol)は、OpenAIとStripeが保守する仕様で、現在はベータである2。二つは同じ層の仕様ではない。AP2は、商取引プロトコルの中で働くセキュリティ機能と位置づけられ、カタログや購入手続きのAPIは範囲の外に置く3。ACPは購入手続きと注文のAPIも持つ商取引プロトコルで、この記事が比べるのは、そのうちカード情報を預けるDelegate Paymentの部分である2。

問い

AP2とACPは、エージェントに任せる支払いの範囲を、どうやって制限するのか。

要点

どちらの仕様も、支払ってよい範囲を先にデータに書き、実際の取引がその範囲に収まらなければ通さない。 AP2は、エージェントが組み立てて利用者が承認した範囲のデータに署名を付け、受け取る側がそのデータを機械的に照合する3。ACPは、加盟店が利用者のカード情報を使える範囲を、1回限り・上限額・通貨・有効期限の条件として書く2。署名が守るのは署名の後の取引内容で、署名の前にエージェントが読んだ商品情報やツールの出力は保護の外に残ると、独立の分析は指摘する4。

モデル・例示

上限12,000円の買い物で、通る取引と通らない取引を分ける

※ この節の数値は説明のための仮定で、測定値ではありません。

利用者がエージェントに、ランニングシューズを1足買うよう頼む。利用者が許す範囲は、金額が12,000円以下、期限が10月3日までの二つとする。範囲をデータに書くのはエージェントで、利用者はその内容を見て承認する。利用者は承認したあと、買い物が終わるまで画面を見ない。

はじめに、保存したカードをそのままエージェントに渡す場合を考える。カードの利用限度額は50万円とする。エージェントは、50万円までならいくらでも支払える。許した範囲はどこにも書かれていないので、15,000円の支払いも、10月5日の支払いも止まらない。

次に、範囲を先にデータに書く場合を考える。エージェントが取引を確定すると、支払いを処理する側が、取引の金額と日付を範囲と比べる。

エージェントが確定した取引範囲との比較と結果
取引A:9,800円・10月1日9,800 ≦ 12,000、期限内なので通る
取引B:15,000円・10月1日15,000 > 12,000 なので通らない
取引C:9,800円・10月5日期限の後なので通らない
取引D:11,500円・10月1日11,500 ≦ 12,000、期限内なので通る

取引Dは、利用者が範囲を承認した後で、エージェントが偽のレビューを読んで選んだ、利用者の望まない品だとする。例の範囲は金額と日付だけなので、比較の結果は取引Aと同じになる。範囲に品目の一覧まで書いてあれば、一覧に無い取引Dの品は比較で通らない。エージェントが範囲を書く前に偽のレビューを読んでいれば、取引Dの品を一覧に書きうるので、利用者がその一覧を承認すれば取引Dも比較を通る。

1回の取引で誤って失う金額の上限は、カードを渡す場合が50万円、範囲を書く場合が12,000円である。差は488,000円になる。

最後に、取引Aの9,800円を加盟店へ支払う段階を考える。加盟店にも、カード番号をそのままは渡さない。1回限り、上限9,800円という条件を付けて渡す。

加盟店の請求条件との比較と結果
9,800円を請求する9,800 ≦ 9,800、1回目なので通る
続けて、もう一度9,800円を請求する2回目なので通らない
9,800円の代わりに、12,000円を請求する12,000 > 9,800 なので通らない

二つの表が示す性質は、三つある。

  1. 取引が通るかどうかは、先に書いた範囲と、取引の値の比較で決まる。エージェントが取引の理由をどう説明しても、比較の結果は変わらない。
  2. 二つの範囲は、制限する相手が違う。12,000円の範囲はエージェントを制限し、9,800円の条件は加盟店を制限する。9,800円の条件だけでは、エージェントが取引Dを選ぶことは止まらない。
  3. 比較が守るのは、署名された範囲である。1回の取引で失う金額は範囲の上限を超えないが、取引Dのような範囲の内側の誤りは、比較では見つからない。署名の前にエージェントが範囲を広く書き、利用者がそれを承認すれば、広い範囲の取引も比較を通る。

AP2は、範囲との比較をエージェントに任せない

AP2で、エージェントに任せる支払いの範囲や取引の内容を書くデータが、Mandateである。Mandateは、購入の内容を書くものと支払いの内容を書くものの2種類で、中身はエージェントが組み立てる3。利用者は、AIエージェントが操作しない画面でその内容を確かめて同意し、同意したMandateが署名される。仕様はこの画面をTrusted Surfaceと呼ぶ。エージェントが渡すMandateのうち、購入のMandateは加盟店が照合し、支払いのMandateは資格情報の提供者・決済網・加盟店の決済処理事業者が照合する3。Mandateを受け取って照合する側を、以下では検証側と書く。

利用者がTrusted Surfaceで同意したMandateに署名する鍵は、利用者本人の資格情報の鍵か、検証側が信頼するエージェント提供者の鍵かのどちらかである。エージェント提供者は、エージェントを提供する事業者を指す。提供者の鍵で署名する場合、提供者は、エージェントがその鍵にアクセスできないようにしなければならない5。

範囲との比較を誰がどう行うかについて、仕様は二つを定める。一つは、検証を決定的なコードで行うことである3。決定的なコードは、同じ入力に必ず同じ結果を返すプログラムを指す。もう一つは、同意を取るTrusted Surfaceを、エージェントに担当させないことである3。金額の比較は決定的なコードが行い、エージェントの説明は比較の入力に入らない。検証側はMandateそのものを照合するので、エージェントが途中で何を主張しても、署名された範囲を超える取引は通らない3。

二つの定めの理由を、AP2は仕様に書いている。仕様が想定する攻撃は、エージェントが読む文章に偽の指示を混ぜて、エージェントを従わせるものである。この攻撃をプロンプトインジェクションと呼ぶ。仕様は、プロンプトインジェクションを防ぐことは不可能だと仮定し、すべてのLLMとエージェントを潜在的な攻撃者とみなす6。攻撃を受けていないエージェントも、同じ入力に同じ結果を返すとは限らない。このため仕様は、人間の利用者に求める以上に、エージェントの挙動を強く制約する必要があると書く5。

人が居ない場面では、範囲のMandateと取引のMandateを組にして照合する

利用者が範囲だけを承認し、取引の確定には立ち会わない場面を、仕様は人が居ない場面(Human Not Present)と呼ぶ。Googleは、この場面を扱う版のv0.2を、2026年4月28日に公開した5。利用者が確定した購入内容をその場で承認する場面については、仕様は、加盟店とTrusted Surfaceが直接やり取りする従来のECの流れに置き換えられることが多いと注記する3。

この場面では、Mandateが二段になる。範囲だけを書いたMandateを、仕様は開いたMandateと呼ぶ。確定した取引を書いたMandateを、閉じたMandateと呼ぶ3。開いたMandateには、金額と日付のほかに、加盟店・支払先・品目の一覧も制約として書ける3。

二つのMandateは、署名する主体が違う。開いたMandateは、利用者がTrusted Surfaceで範囲を確認して承認したあとに署名される。署名するのは、利用者か、検証側が信頼する一覧に載ったエージェント提供者である3。閉じたMandateには、エージェントが自分の鍵で署名する3。

検証側がエージェントの鍵を信頼できるのは、開いたMandateがその鍵を指定しているからである3。開いたMandateはエージェントの公開鍵を含み、その鍵を持つエージェントしか、有効な閉じたMandateを作れない6。閉じたMandateは、開いたMandateのハッシュ値を含み、どの開いたMandateに基づくかを示す6。検証側は両方を受け取り、閉じたMandateが開いたMandateの制約を満たすかを照合する3。範囲の上限を超える金額の取引は、この照合で通らない。加盟店の決済処理事業者は、支払いの資格情報がその取引に絞られていることも確かめる3。

ACPの条件が制限するのは、加盟店である

ACPが書く利用条件は、確定した取引の側の条件で、仕様はこれをallowanceと呼ぶ。allowanceは、1回限りの利用・上限額・通貨・有効期限に、使ってよい加盟店とチェックアウト(1回の購入手続き)の識別子を加えた利用条件である2。条件を付ける対象は、支払いに使う情報である。allowanceを付けて預けられる情報は、今日はカードだけなので2、この記事ではカード情報と書く。

カード情報をallowance付きで預けるAPIを、ACPはDelegate Paymentと呼ぶ。このAPIでは、エージェントを動かすサービス(ChatGPTなど)が、利用者のカード情報とallowanceを、加盟店が使う決済代行事業者(PSP)の保管基盤へ送る2。PSPは、預かったカード情報の代わりに使うトークンを返す。エージェントがトークンを加盟店へ渡し、加盟店は自分のPSPを通して、allowanceの範囲内でだけトークンを使う2。決済や清算、コンプライアンスへの対応は、加盟店が既に使っている決済の仕組みが担う2。

ACPでも、取引が通るかは先に書いた条件との比較で決まる。Delegate Paymentを定める文書は、トークンがallowanceの範囲内でしか使えないと定め、利用の種類は1回限り(one_time)でなければならないと定める2。同じトークンでの2回目の請求や、上限額を超える請求は通らない。ただし現行の仕様では、決済手段ごとの定義(handler)がDelegate Paymentを使うかを宣言し、使うことは推奨の既定である2。ウォレットの提供者のトークンが既に制約を持つ流れのように、この形が合わない手段は外してよい2。

allowanceが縛るのは、トークンを使う加盟店である。エージェントがどの取引を選ぶかを縛らないことは、この文書が扱う範囲から分かる。リクエストに署名するのは、エージェントを動かすサービスの鍵である。利用者がエージェントに何を許したかは、この文書の範囲にない2。エージェントが利用者の望まない品を選んでも、その取引の金額を上限にしてallowanceを付ければ、加盟店の請求は通る。allowanceは、選ばれた品が利用者の望んだものかを見ない。ACPの別の文書は、3D Secure(カード決済で本人確認を追加する仕組み)のような認証が要る取引では、クライアントが認証を試みて結果を返さなければならないと定める2。

署名の前の誤りと範囲の内側の誤りは、比較では止まらない

比較で止まらない誤りについての記述は、AP2の仕様と独立の分析の両方にある。仕様が書くのは、失う金額に上限があることである。分析が書くのは、範囲の内側の誤りが見つからないことと、範囲そのものが署名の前に広げられうることである。

AP2の仕様は、プロンプトインジェクションによってエージェントが悪意ある商品を選ぶ脅威を挙げる。そのうえで、閉じたMandateの検証で制約を評価すれば「最悪の場合の金銭的・論理的な影響は厳密に有界になる」と書く6。有界は、上限があるという意味である。金額については、1回の取引で失う額が、開いたMandateに書いた上限額を超えない。範囲に品目の一覧を書いた場合は、加盟店が閉じたMandateを制約と照合する段階で、一覧に無い品の取引も通らない3。

仕様には、範囲を狭く保つための定めもある。開いたMandateの有効期限は、エージェントが作業を完了できる最小の値にするよう推奨する3。同じ開いたMandateで複数の承認を得させないため、前の開いたMandateが拒否されたことを示す受領書を受け取るまで、エージェントが次の開いたMandateを提示することを禁じる3。

ただし、1回分の範囲に閉じるかは別の定めによる。仕様は、攻撃を受けたエージェントが同じ開いたMandateで複数の取引を承認しようとする脅威を挙げる。これを止める定めは、エージェント自身への禁止と、資格情報の提供者や決済網が重なるMandateを拒否してよいという許可である。禁止の根拠になる受領書は、エージェントのLLMから保護しなければならない6。範囲の繰り返し利用を許す制約もあり、そのときは回数と総額の上限を別に書く3。

独立の分析は、Avivらが2026年8月に公開した、AP2 v0.2の安全性の分析である4。分析は、署名されたMandateが守るのは、署名後の取引データが書き換えられていないことだと書く。承認の前に取引の内容を左右するエージェントのやり取りと外部からの入力は、その保護の外に残るとも書く4。分析の結論は、署名の前にエージェントが受け取った情報が操作されると、Mandateの署名が有効でも、取引が利用者の意図を反映するとは保証されない、というものである4。

分析が挙げた脅威は、五つの攻撃系統にわたる48件である。分析はそのうち8件を、少なくとも一つの構成で危険度が高いと判定した4。この8件を覆う五つの実証は、公開の完全なAP2実装が無かったため、著者らが組んだ試験用の環境で行われた。著者ら自身、実証で示した失敗が第三者の実装で変わらず現れるとは言い切れないと断る4。

実証の一つは、範囲そのものを署名の前に広げる。利用者は、50ドル以下でカメラを1台買うようエージェントに頼んだ。加盟店のツールが50〜80ドルの見積もりを返し、エージェントはそこから上限80ドルの範囲を組み、支払先の制限も書かなかった。この実証は、承認の前に範囲を利用者の頼みと比べる下位のエージェントを置いた環境を前提にする。下位のエージェントの規則は本来、上限を超える金額や頼んだ制限の欠落を利用者へ差し戻すが、プロンプトだけの更新で、取引の文脈が正当化するように見えれば逸脱を受け入れる形に変わっていた4。Trusted Surfaceは、80ドルの上限と支払先の制限が無いことを購入手続きの余裕として示し、利用者は、同意の手順が警告を出さないことと加盟店の説明に頼って範囲を承認した4。分析は、この実証に署名された欄を隠す必要は無いと書く4。加盟店はのちに同じカメラの80ドルの取引を作った4。80ドルの取引は、署名された範囲に収まる。分析が示す緩和の一つは、差し戻しの規則をモデルの外の決定的な方針で強制することである。もう一つは、署名の前にTrusted Surfaceが上限の値そのものを示して支払先の制限の欠落を明示し、利用者の上限を超える範囲や、利用者が明示的に許していない欠落を拒むことである4。加盟店の商品情報やツールの出力は取引のデータとして扱い、上限を上げたり制限を外したりする理由にしない、という緩和も示す4。

分析は、署名がMandateを覆っても、エージェントがMandateを組み立てるもとになったコンテキストは署名の対象に含まれないことがあると書き、その例に商品の探索での選択、途中のカートの状態、ツールの出力、検証側への開示を挙げる4。プロトコルが取るべき対応は、次のどちらかだと分析は書く。署名の前にエージェントが受け取った情報を発行するデータに結びつけるか、結びつけを作らない実行の経路を拒否するかである4。

出典6件
  1. FIDO Alliance「FIDO Alliance to Develop Standards for Trusted AI Agent Interactions」2026年4月28日. https://fidoalliance.org/fido-alliance-to-develop-standards-for-trusted-ai-agent-interactions/ — 利用者の意図を検証する手段が欠けていると指摘し、AP2とMastercardの寄稿を土台に仕様を作ると発表した。 ↩ ↩2 ↩3

  2. Agentic Commerce Protocol「RFC: Agentic Commerce — Delegate Payment API」GitHub, 2025. https://github.com/agentic-commerce-protocol/agentic-commerce-protocol/blob/main/rfcs/rfc.delegate_payment.md https://github.com/agentic-commerce-protocol/agentic-commerce-protocol/blob/main/rfcs/rfc.payment_handlers.md https://github.com/agentic-commerce-protocol/agentic-commerce-protocol/blob/main/rfcs/rfc.agentic_checkout.md https://github.com/agentic-commerce-protocol/agentic-commerce-protocol/blob/main/rfcs/rfc.orders.md https://github.com/agentic-commerce-protocol/agentic-commerce-protocol/blob/main/README.md — カード情報を、1回限り・上限額・期限・加盟店を定めたallowanceの範囲でだけ使えるトークンにする(OpenAIとStripeが保守)。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13

  3. Google Agentic Commerce「Agentic Payment Protocol (v0.2)」GitHub, 2026. https://github.com/google-agentic-commerce/AP2/blob/main/docs/ap2/specification.md https://github.com/google-agentic-commerce/AP2/blob/main/docs/ap2/checkout_mandate.md https://github.com/google-agentic-commerce/AP2/blob/main/docs/ap2/payment_mandate.md — 開いた/閉じたMandateと検証側ごとの照合手順を定め、同意を取るTrusted Surfaceを非エージェント的とし、検証を決定的なコードで行うと書く仕様本体。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19

  4. Aviv ほか「Beyond the Mandate: A Systematic Security Analysis of the Agent Payments Protocol (AP2)」arXiv, 2026. https://arxiv.org/abs/2608.23858 https://arxiv.org/pdf/2608.23858v1 — AP2 v0.2の脅威48件を挙げ、署名前のコンテキストの操作は有効な署名でも防げないと示す。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14

  5. Google Agentic Commerce「Agent Authorization」GitHub, 2026. https://github.com/google-agentic-commerce/AP2/blob/main/docs/ap2/agent_authorization.md https://github.com/google-agentic-commerce/AP2/releases/tag/v0.2.0 — Mandateに署名する鍵を利用者の資格情報か、エージェントが触れない提供者の鍵とし、エージェントは人より強く制約すべきだと書く(v0.2.0は2026年4月28日公開)。 ↩ ↩2 ↩3

  6. Google Agentic Commerce「Security and Privacy Considerations」GitHub, 2026. https://github.com/google-agentic-commerce/AP2/blob/main/docs/ap2/security_and_privacy_considerations.md — プロンプトインジェクションを防げないと仮定し、悪意ある商品の選択と開いたMandateの重複使用を脅威に挙げ、制約の評価で最悪の影響が有界になると書く。 ↩ ↩2 ↩3 ↩4 ↩5

この記事はAIを使用して執筆されました。内容には誤りが含まれる可能性があります。事実や数字の出典は脚注から確かめられます。