| name | ap2-human-not-present-flow |
| description | Implement the AP2 human-not-present transaction flow — autonomous agent shopping with Intent Mandate authorization, constraint enforcement, and merchant escalation. Use when building autonomous agent purchasing that works after the user has left. |
| allowed-tools | Read, Write, Edit, Bash, Grep, Glob, WebSearch, WebFetch |
AP2 Human-Not-Present Transaction Flow
Before writing code
Fetch live docs:
- Fetch
https://ap2-protocol.org/specification/ for the human-not-present flow specification
- Web-search
site:github.com google-agentic-commerce AP2 human-not-present intent mandate for samples
- Fetch
https://ap2-protocol.org/topics/core-concepts/ for flow overview
- Fetch
https://ap2-protocol.org/roadmap/ and the latest spec to confirm the current support level for human-not-present (Intent Mandate) flows in the version you're targeting
Conceptual Architecture
What Human-Not-Present Means
In a human-not-present flow, the user provides authorization upfront and then leaves. The Shopping Agent acts autonomously within the constraints defined in the signed Intent Mandate.
Spec Status
Human-not-present is a first-class flow in current AP2 releases (added as the spec evolved beyond the initial human-present-only V0.1). Always verify the exact Intent Mandate fields and required signing semantics against the version you're targeting — fetch the live spec before implementing.
Flow Overview
Phase 1: Intent Capture (User Present)
1. User → SA: Expresses shopping intent ("Buy me running shoes under $150")
2. SA → User: Repeats back understanding for confirmation
3. User: Confirms via in-session authentication
4. SA: Creates Intent Mandate from user's expressed intent
5. User → SA: Signs the Intent Mandate (hardware-backed)
6. User: May go offline
Phase 2: Autonomous Shopping (User Absent)
7. SA → Merchant: Presents Intent Mandate
8. Merchant: Evaluates whether they can fulfill within constraints
9. If uncertain → Merchant may force user confirmation (escalate)
10. If needs info → Merchant asks clarification (update Intent Mandate)
11. If can fulfill → Merchant creates Cart Mandate with offer
Phase 3: Authorization (May Require User)
12. SA: Evaluates Cart Mandate against Intent Mandate constraints
13. If within bounds → SA proceeds with payment
14. If outside bounds → SA rejects or escalates to user
15. Payment processing (similar to human-present Phase 4-6)
Key Differences from Human-Present
| Aspect | Human-Present | Human-Not-Present |
|---|
| User involvement | Throughout | Only at start (signing) |
| Primary VDC | Cart Mandate | Intent Mandate |
| Specificity | Exact items | Categories + constraints |
| Agent autonomy | Low (user confirms) | High (agent decides within bounds) |
| Risk level | Lower | Higher (needs more safeguards) |
Merchant Escalation Paths
The merchant can escalate from human-not-present to human-present:
- SKU Selection Required — Merchant has multiple matching products, needs user to choose → becomes human-present Cart Mandate flow
- Clarification Questions — Merchant needs more information about requirements → Shopping Agent may auto-respond from Intent Mandate or ask user
- Force User Confirmation — Merchant uncertain about matching, requires explicit human approval → full human-present authorization
Constraint Evaluation
The Shopping Agent must enforce Intent Mandate constraints:
- Price — Is the offer within the authorized price range?
- Category — Does the product match authorized categories?
- Brand — Does the product match brand preferences?
- Quality — Does the product meet quality criteria?
- TTL — Is the Intent Mandate still valid (not expired)?
If any constraint is violated, the agent must:
- Reject the offer
- Try a different merchant
- Or escalate to the user for updated authorization
Natural Language Audit
The Intent Mandate captures the user's actual words:
- "Buy me the cheapest running shoes under $150 in size 10"
- This natural language record provides accountability
- If the agent buys something outside this intent, the record shows the discrepancy
Best Practices
- Capture the user's intent precisely — errors here propagate through the whole flow
- Set conservative TTLs for Intent Mandates
- Always enforce constraint checking before proceeding with payment
- Handle merchant escalation gracefully
- Implement clear logging of agent decisions for audit
- Support the escalation from human-not-present to human-present smoothly
- Notify the user of purchase completion (even though they're not present)
- Verify the exact Intent Mandate schema and field requirements against the spec version you're targeting before implementing
Fetch the specification for the current support level and exact Intent Mandate fields before implementing autonomous flows.