GET-Action security starts from the assumption that URLs leak. Query strings can enter browser history, server logs, analytics, referrers, caches, screenshots, bookmarks, chat transcripts, and support tickets.
Required controls
- Require
idempotency_keyornoncefor every write-capable GET-Action example. - Reject secrets, tokens, passwords, API keys, bearer values, account identifiers, medical identifiers, payment data, private messages, and regulated identifiers in query strings.
- Require explicit consent for publishing, account changes, repository writes, durable memory writes, destructive actions, payments, private data, or regulated contexts.
- Apply rate limits, replay handling, crawler protection, and audit logging before action handling.
- Keep action URLs out of sitemap promotion and public crawler invitations.
- Return
human_review_requiredorrejectedinstead of executing ambiguous requests.
Ordering rule
Security and consent boundaries must appear before examples that could be copied into production. Examples without nearby boundaries are warnings even when the example URL itself is public-safe.
Safe response examples
{ "code": "human_review_required", "url": "https://example.org/review/agent_req_002" }
{ "code": "rejected", "url": "https://example.org/docs/get-action-security" }