What is a signed agent?
A signed agent is a bot or AI agent that signs each HTTP request with a private key, using HTTP Message Signatures as profiled by the IETF Web Bot Auth drafts. A site verifies the signature with the operator's published public key. That proves who operates the agent, whatever its IP address or user agent says.
At a glance
- Mechanism
- Web Bot Auth, built on HTTP Message Signatures (RFC 9421)
- Headers
- Signature, Signature-Input, Signature-Agent
- How to verify
- Fetch the operator's public key (JWK Set) and check the signature
- Examples
- ChatGPT agent signs. Google signs a subset of Google-Agent requests (experimental).
- Standard status
- IETF Internet-Draft (draft-ietf-webbotauth-httpsig-protocol), not yet an RFC
- Term origin
- Cloudflare introduced a signed agents category in August 2025
How to spot it
- Headers: a signed request carries
Signature-Input(what was signed, withtag="web-bot-auth"),Signature(the bytes) andSignature-Agent(where the keys live). - The user agent may mislead: signed agents often run real browsers, so the user agent can look like plain Chrome. The signature, not the string, names the operator.
- Verify, don’t just detect: the headers are easy to add. Only a signature that checks out against the operator’s published key counts.
Status
The protocol is an IETF working-group draft and still changing. Providers already verify it in production, but only some bots sign, so treat a signature as the strongest signal when present and fall back to DNS and IP checks when it is not. Google says the same for its own signed traffic.
Related verification terms
Quick answers
How is a signed agent different from a verified bot?
A signed agent is verified one specific way, by its signature. A verified bot can also be confirmed by reverse DNS or published IP ranges.
Does a signed agent follow robots.txt?
A signature only proves identity. Whether the agent honors robots.txt is up to its operator, so check their documentation.
Can a signature be copied from one request and replayed?
Not usefully. The signature covers the target host and carries created and expires times, so a verifier rejects it elsewhere or once it lapses.