Guide · Web Bot Auth

Web Bot Auth explained: AI agents that prove who they are

User agents can be faked, and IP addresses only work for crawlers that publish them. Web Bot Auth is an IETF draft that lets a bot or AI agent sign each request with a private key. A website checks the signature against the agent's published public key, and knows the request really came from that agent.

Agents that sign today

These operators publish a Web Bot Auth key directory. We fetch each one every night.

AgentSignature-AgentKeys
Google-Agent
Google
agent.bot.goog5 Ed25519
2026-10-21
ChatGPT
OpenAI
chatgpt.com1 Ed25519
2026-10-21
Browserbase
Browserbase
browserbase.com2 Ed25519
2026-10-21
You.com
You.com
you.com1 Ed25519
2026-10-21

Google says its implementation is experimental: a subset of requests from the Google-Agent user agent are signed and authenticated as https://agent.bot.goog, and sites should keep using IP and user-agent checks as well (Google's docs). Signing doesn't mean every request from an agent is signed.

How it works

  1. The agent publishes its public keys as a JWKS at https://<agent>/.well-known/http-message-signatures-directory.
  2. Each request carries three headers: Signature-Agent (where the keys live), Signature-Input (what was signed: at least @authority and the Signature-Agent member, plus created, expires, keyid and tag="web-bot-auth") and Signature.
  3. The website rebuilds the signed text (the "signature base", RFC 9421), finds the key whose JWK thumbprint equals keyid, and verifies the signature.
GET /page HTTP/1.1
Host: example.com
Signature-Agent: sig1="https://agent.example"
Signature-Input: sig1=("@authority" "signature-agent";key="sig1");created=1735689600;expires=1735693200;keyid="…";tag="web-bot-auth"
Signature: sig1=:…base64…:

Verify signed agents on your site

Machine-readable

The current keys of all agents above are in our public feed under agents: /data/v1/ranges.json, next to the official IP ranges of 22 AI crawlers.

Spec: draft-ietf-webbotauth-httpsig-protocol (IETF working-group draft; details can change).