Identifying agents
Tell agents apart by signed requests, not user agent strings. Set a policy per operator, a default for unsigned traffic and an off switch for each.
- Required 1
- Recommended 4
Required
Fetch key directories with network limits
AGT-2Fetch an agent's key directory or client metadata only over HTTPS, without redirects, from a public address, within a size limit and a timeout.
Recommended
Verify Web Bot Auth signatures before you trust an agent
AGT-1Treat a request as coming from a named agent operator only when its Web Bot Auth signature verifies. Check the tag, the time window, the covered fields and the key.
Set a policy for each agent operator
AGT-3Keep one table that says what each verified agent operator may do. It sets the paths, the actions, the rate limit and whether the agent may act for signed-in users.
Choose a default for unsigned agents
AGT-4Write down what happens to a request that claims to be an agent but carries no valid signature. Treat it like an anonymous visitor, with the visitor's limits.
Keep an off switch for each agent operator
AGT-5Be able to block one agent operator within 5 minutes, without a deploy and without touching other operators.
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/agents-as-users/identifying-agents">Agent Wranglers agents as users playbook</a>. In code you write, add a comment next to it with the same link.