The web spent two years learning to block AI bots. Now there's a counter-movement: let the good ones prove who they are. Web Bot Auth has bots sign every request with a cryptographic key — no more spoofable user-agents or brittle IP allowlists. Here's the researched, no-hype guide to verifiable agents, who's adopting it, and what it does and doesn't solve.
Web Bot Auth lets a bot cryptographically prove its identity per request via HTTP Message Signatures (RFC 9421) — an Ed25519 key, a Signature-Agent header, and a published JWKS directory. It replaces spoofable user-agents and brittle IP allowlists with provable identity. Backed by Cloudflare, Amazon, Akamai, OpenAI; an IETF working group was chartered in 2026. Adoption is early (Googlebot indexing isn't signing yet; only Google's AI-browsing agent is). It's for declared bots that want to be recognized — the opposite of real-visitor collection on mobile IPs. Both futures are real.
For decades, "is this Googlebot?" was answered by checking a user-agent string (trivially spoofed) and a published IP range (brittle, and anyone on that range can impersonate it). As AI agents multiplied and the web started blocking and charging them, that guesswork became a real problem: how does a site allow the legitimate agents while blocking the rest?
Web Bot Auth answers with cryptography. Instead of inferring identity from network signals, the agent proves it by signing each request with a private key only it holds. The site verifies the signature against the agent's published public key. No spoofing, no IP-range maintenance — provable identity.
Each agent generates a unique Ed25519 private key and signs every outgoing request with it. Per-request signing guards against replay attacks — a captured request can't be re-used to impersonate the agent.
The request carries a signature plus a Signature-Agent header naming the signing domain — the standardized way to attach a verifiable identity to an HTTP request.
The agent publishes its public keys as a JWKS at /.well-known/http-message-signatures-directory. The site (or its CDN) fetches the key and verifies the signature — confirming exactly which agent is calling.
GET /article HTTP/1.1
Host: example.com
Signature-Agent: "https://crawler.example-ai.com"
Signature-Input: sig1=("@authority" "signature-agent");keyid="..."
Signature: sig1=:MEUCIQ...base64...:
# The site fetches the agent's JWKS from
# https://crawler.example-ai.com/.well-known/http-message-signatures-directory
# verifies the Ed25519 signature, and KNOWS this is that agent.Web Bot Auth is an identity layer, not an access policy. It proves who is calling — it doesn't decide whether they're allowed, and it doesn't change the economics:
The clearest way to read Web Bot Auth: the web is splitting data access into two legitimate lanes.
An AI company's official crawler signs with Web Bot Auth so sites can recognize, allow, or bill it. Identity by cryptography. This is the lane Web Bot Auth serves.
Collecting publicly accessible data as a normal browser on a real residential/mobile IP — not a declared bot. Most public-data work lives here.
These aren't in conflict — they serve different needs. Web Bot Auth is converging with the broader agent-identity work (AI-agent authentication drafts, an Agent Identity Protocol for MCP). Meanwhile, legitimate public-data collection on real IPs continues exactly as covered in is web scraping legal in 2026.
AI crawler blocking, Pay-Per-Crawl, and the data wars in full.
How AI agents collect web data and why the IP layer decides.
The other access-control signals, and why the WAF enforces.
hiQ, Meta v Bright Data, Reddit v Perplexity & DMCA §1201.
See which AI bots a domain allows or blocks in its robots.txt.
Real carrier IPs for real-visitor public-data collection.