Summary
AP2 defines the commerce flow through the Checkout Receipt. The Shopping Agent's role ends at "receiving Receipts and handling success and error" (implementation_considerations.md). After that receipt is issued, the Shopping Agent executes a task — books the flight, reserves the table, completes the order. AP2 does not currently define how to record that execution in a verifiable way.
The gap
The Payment Evidence Frame (#274) establishes a closed taxonomy for payment lifecycle events: payment_admission, payment_settlement, payment_cancellation, payment_refund, composite_verdict. This is the payment layer.
After the receipt with payment_settlement is issued, the Shopping Agent acts. That action is outside the PEF taxonomy by design — it is not a payment event. But it is the event that regulators and principals need to verify: what did the autonomous agent do with the access it received?
AP2 has no primitive for this.
Why this matters now
EU AI Act Article 12 requires logging capabilities for high-risk AI systems. Article 26 places the obligation on deployers to maintain those logs. Both enter force in August 2026. AP2 implementors deploying autonomous Shopping Agents in the EU will need to give a technical answer to this requirement. The Checkout Receipt confirms that payment happened. It does not confirm what the agent did next.
The gap is structural, not implementation-specific. Any Shopping Agent that receives a Checkout Receipt and executes autonomously has this audit gap, regardless of the payment processor or credential provider.
A proposed primitive: action_ref
An action_ref is a deterministic post-execution anchor:
action_ref = SHA-256(JCS({
agent_id, // stable identifier for the Shopping Agent
action_type, // what was executed (e.g. "checkout_complete")
scope, // what resource was accessed
timestamp // ISO 8601, ms precision
}))
Canonicalization follows RFC 8785 (JCS) — the same standard used throughout AP2. The action_ref is recomputable by any verifier from the same four fields, without trusting the operator that ran the agent.
This is distinct from the AlgoVoi Settlement Attestation (#271): the Settlement Attestation records the categorical payment outcome (SETTLED/PENDING/REVERSED). The action_ref records what the agent did after settlement. These are orthogonal — a verifier can have both without one implying the other.
Implementation path
A provider implementation exposes a /external/trail endpoint that accepts a POST with the action payload and returns a trail_id backed by an on-chain anchor. The action_ref is included in the trail and recomputable independently.
This is specified in draft-giskard-aeoess-action-ref (Internet-Draft, co-authored with AEOESS): https://github.com/giskard09/draft-giskard-aeoess-action-ref
CTEF v0.4 marks action_ref as REQUIRED for exactly-once execution guards (commit 773660e1). Four independent conformance sets have been validated byte-identical.
A reference implementation and self-certify endpoint are live at https://mycelium.rgiskard.xyz/external/trail
Suggested addition
Would an addition to implementation_considerations.md be the right place to document this — either as a new "Post-checkout audit" section or as an extension to the existing "Agent Identification" section? Happy to submit a PR if the direction is useful for AP2.
Summary
AP2 defines the commerce flow through the Checkout Receipt. The Shopping Agent's role ends at "receiving Receipts and handling success and error" (implementation_considerations.md). After that receipt is issued, the Shopping Agent executes a task — books the flight, reserves the table, completes the order. AP2 does not currently define how to record that execution in a verifiable way.
The gap
The Payment Evidence Frame (#274) establishes a closed taxonomy for payment lifecycle events:
payment_admission,payment_settlement,payment_cancellation,payment_refund,composite_verdict. This is the payment layer.After the receipt with
payment_settlementis issued, the Shopping Agent acts. That action is outside the PEF taxonomy by design — it is not a payment event. But it is the event that regulators and principals need to verify: what did the autonomous agent do with the access it received?AP2 has no primitive for this.
Why this matters now
EU AI Act Article 12 requires logging capabilities for high-risk AI systems. Article 26 places the obligation on deployers to maintain those logs. Both enter force in August 2026. AP2 implementors deploying autonomous Shopping Agents in the EU will need to give a technical answer to this requirement. The Checkout Receipt confirms that payment happened. It does not confirm what the agent did next.
The gap is structural, not implementation-specific. Any Shopping Agent that receives a Checkout Receipt and executes autonomously has this audit gap, regardless of the payment processor or credential provider.
A proposed primitive: action_ref
An action_ref is a deterministic post-execution anchor:
Canonicalization follows RFC 8785 (JCS) — the same standard used throughout AP2. The action_ref is recomputable by any verifier from the same four fields, without trusting the operator that ran the agent.
This is distinct from the AlgoVoi Settlement Attestation (#271): the Settlement Attestation records the categorical payment outcome (SETTLED/PENDING/REVERSED). The action_ref records what the agent did after settlement. These are orthogonal — a verifier can have both without one implying the other.
Implementation path
A provider implementation exposes a
/external/trailendpoint that accepts aPOSTwith the action payload and returns atrail_idbacked by an on-chain anchor. The action_ref is included in the trail and recomputable independently.This is specified in draft-giskard-aeoess-action-ref (Internet-Draft, co-authored with AEOESS): https://github.com/giskard09/draft-giskard-aeoess-action-ref
CTEF v0.4 marks action_ref as REQUIRED for exactly-once execution guards (commit 773660e1). Four independent conformance sets have been validated byte-identical.
A reference implementation and self-certify endpoint are live at https://mycelium.rgiskard.xyz/external/trail
Suggested addition
Would an addition to
implementation_considerations.mdbe the right place to document this — either as a new "Post-checkout audit" section or as an extension to the existing "Agent Identification" section? Happy to submit a PR if the direction is useful for AP2.