Blog / What Web Bot Auth actually specifies, and what it does not
What Web Bot Auth actually specifies, and what it does not
The IETF working group on crawler authentication listed ten active Internet-Drafts on 29 July 2026, two of them filed on 19 July. The core protocol draft carries intended status Informational, and every mechanism it describes sits in places an external scan of your site cannot reach.
In short
- Web Bot Auth is the IETF's name for authenticating automated HTTP clients with cryptographic signatures, and its working group document page listed ten active Internet-Drafts when read on 29 July 2026, two of which were filed on 19 July 2026.
- The current core specification, draft-meunier-webbotauth-httpsig-protocol-00 dated 26 June 2026, builds on RFC 9421 HTTP Message Signatures, published February 2024, and requires the Signature and Signature-Input headers on every signed request.
- A crawler's public keys are published at /.well-known/http-message-signatures-directory on the crawler's own host, which is the reverse of robots.txt: the file that establishes identity sits on the crawler's domain rather than on the site being crawled.
- Gary Illyes filed draft-illyes-webbotauth-jafar-00 on 21 April 2026, proposing a single JSON format for the crawler IP range files that operators currently publish in whatever shape they choose.
- Lantad has not measured Web Bot Auth adoption and cannot measure it from outside: a signature is a header on an inbound request, so it appears in a site's own logs or at its edge and never in an external scan of that site.
Two things have to be true before an AI crawler can quote your page. It has to be able to fetch the page, and you have to be able to tell that the thing fetching it was the crawler it claimed to be. The first has a file on your site. The second has had nothing on your site at all, only a list of IP addresses published by the vendor and checked by whoever cared enough to check. Web Bot Auth is the IETF's proposed answer to the second.
This post reports what those documents specify and what they do not, because the gap between what is written down and what is deployed is where most of the confusion about crawler identity sits. Lantad has measured none of it. The last section explains why no scanner of your site could.
Sample Illustrative, not a measurement of any real site.
GET /pricing, sent by an automated client that signs
- Signature-Input: sig1=("@authority");created=...;expires=...;keyid=...;tag="web-bot-auth" names what is covered
- Signature: sig1=:MEUCIQ...: the signature value itself
- Signature-Agent: "https://crawler.example" optional, points at the key directory
- GET https://crawler.example/.well-known/http-message-signatures-directory the verifier fetches the key
- Visible to an external scan of the site being crawled no
What Web Bot Auth actually specifies
Cloudflare's Web Bot Auth documentation defines it in one sentence: an authentication method that leverages cryptographic signatures in HTTP messages to verify that a request comes from an automated bot. The cryptography underneath is not new work. It is RFC 9421, HTTP Message Signatures, a Standards Track document published in February 2024 by Annabelle Backman of Amazon, Justin Richer of Bespoke Engineering and Manu Sporny of Digital Bazaar. Web Bot Auth is a profile of that, narrowed to the case of a program identifying itself to a website.
The current core specification is draft-meunier-webbotauth-httpsig-protocol-00, dated 26 June 2026, written by Thibault Meunier of Cloudflare and Sandor Major of Google. Its abstract states the goal plainly: to allow automated HTTP clients to cryptographically sign outbound requests, allowing HTTP servers to verify their identity with confidence.
Three headers carry the scheme. Signature holds the signature value. Signature-Input names which parts of the message the signature covers, along with the parameters created, expires, keyid and tag, where tag is the fixed string web-bot-auth. Signature-Agent is optional and points at the location where a verifying server can fetch the key.
The draft constrains what a signature is allowed to cover, and the constraints are the interesting part. It must include at least one of @authority or @target-uri, which are the RFC 9421 names for the request host and the full request target, so a captured signature cannot be replayed against a different site or a different URL. It requires the four parameters above, and it recommends a validity window of no more than 24 hours. Where Signature-Agent is present it must itself be a signed component, which stops an intermediary swapping in a pointer to a key directory it controls.
The predecessor draft, draft-meunier-web-bot-auth-architecture-05 of 2 March 2026, is explicit that shared secrets are out: implementations must not use shared HMAC, and keyid must be a base64url JWK SHA-256 thumbprint. Cloudflare's announcement of 1 July 2025, which folded HTTP Message Signatures into its Verified Bots Program, names ed25519 as the verification algorithm and says Cloudflare released a Rust library and a TypeScript npm package for producing the signatures.
None of this is a finished standard. The protocol draft carries intended status Informational, and no document in the working group's set has an RFC number.
-
SignatureRequired The signature value, in the RFC 9421 format. Covers at least @authority or @target-uri. -
Signature-InputRequired Names the covered components plus created, expires, keyid and tag. The tag is the fixed string web-bot-auth. -
Signature-AgentOptional Points at the key directory. When present it must itself be signed, so it cannot be swapped in transit. -
Shared HMACExcluded The architecture draft of 2 March 2026 states implementations must not use it. Asymmetric keys only.
Where a crawler's public key lives, and why that is the reverse of robots.txt
A signature is only useful if the verifier can get the public key. Web Bot Auth publishes it as a JSON Web Key Set at a well known path, and Cloudflare's documentation gives the exact one: /.well-known/http-message-signatures-directory, served over HTTPS with the Content-Type application/http-message-signatures-directory+json, and itself signed with HTTP message signatures.
The part that matters for a site owner is whose host that path sits on. It is the crawler's. The operator of the bot publishes the directory on a domain it controls, the Signature-Agent header in the request points at it, and the site being crawled fetches it in order to check the signature.
That is the reverse of every access control mechanism this site normally measures. robots.txt is a file you write, on your host, that crawlers read. The same is true of llms.txt and of the meta robots tag. Web Bot Auth moves the file to the other end of the connection: the crawler writes it, on the crawler's host, and your server is the thing doing the reading.
The consequence decides what any scanner can report, so it is worth stating carefully. A tool can fetch your robots.txt and tell you what it says, which is what our robots.txt tester is for, because that file sits at a known path on your domain and is public. There is no equivalent fetch for Web Bot Auth. The signature is not on your site, it is in a request header arriving at your site, and the key is not on your site either. Nothing in how Lantad measures a page touches either one.
This also explains why the scheme needs a registry at all. Knowing that a request carries a valid signature over a key published at some directory tells you the request was signed by whoever controls that directory. Mapping that directory back to a named operator, so that a rule about GPTBot means something, is a separate problem, and it is what draft-meunier-webbotauth-registry-03 of 26 June 2026 exists to solve. Compare that with the crawler tokens we currently test, where the name in the user agent is the whole of the identity and anybody may type it.
There is a second consequence that cuts the other way, and it is the real improvement over an address list. An IP range is a property of where a crawler happens to run, so it changes when an operator changes hosting, and it is coarse, because a shared cloud range covers a great deal that is not the crawler. A signature is a property of the request.
robots.txt, llms.txt, meta robots
- Published by: you
- Hosted on: your domain
- Read by: the crawler
- Fetchable by an external scanner: yes
Web Bot Auth key directory
- Published by: the crawler operator
- Hosted on: the operator's domain
- Read by: your server or edge
- Fetchable by a scan of your site: not applicable
What the working group has filed, read on 29 July 2026
The working group is called webbotauth, it sits in the Web and Internet Transport area, and its charter is approved as charter-ietf-webbotauth-01. Read on 29 July 2026, its document page listed ten active Internet-Drafts and two superseded ones.
Two of the ten were ten days old. draft-rescorla-anonymous-webbotauth-01 and draft-singh-webbotauth-hosted-directories-00 were both dated 19 July 2026. The first covers authorisation and rate limiting for agents that do not identify themselves individually, and the second covers hosting key directories on someone else's infrastructure. A scheme that requires every bot operator to run a signed well known endpoint on its own domain has an obvious problem for small operators, and the second draft is a response to it.
The two superseded documents are the ones most third party write ups still cite, which is a reason to check dates before repeating anything about this subject. draft-meunier-web-bot-auth-architecture-05 and draft-meunier-http-message-signatures-directory-05, both dated 2 March 2026, were replaced on 26 June 2026 by draft-meunier-webbotauth-httpsig-protocol and draft-meunier-webbotauth-httpsig-directory. A summary written before that date describes documents that no longer carry the specification, even where the technical content survived the rename.
The draft connected most directly to what this site measures is a JSON format for publishing crawler IP ranges, filed on 21 April 2026 by Gary Illyes. It defines a required creationTime and prefixes array, optional synctoken and notes, and per prefix an ipv4Prefix or ipv6Prefix in CIDR notation with optional services tags. Its abstract puts the problem as decreasing maintenance load on website operators while reducing the risk of inadvertently blocking beneficial clients.
That problem is not hypothetical, and we have run into it directly. We opened OpenAI's four crawler IP files on 29 July 2026 and counted the prefixes in each, which was possible only because the four URLs and the shape of the JSON were already known to us. Nothing tells a site owner where a given operator publishes such a file, and nothing obliges two operators to publish it the same way.
The remaining drafts cover operational ground rather than mechanism: crawler best practices, responsible web data collection, use cases for authenticating bots, and an identity anchor proposal for domain root discovery.
- draft-meunier-webbotauth-httpsig-protocol-00 26 June 2026. The signing mechanism. Replaced the architecture draft of 2 March 2026.
- draft-meunier-webbotauth-httpsig-directory-00 26 June 2026. The key directory. Replaced the message signatures directory draft of 2 March 2026.
- draft-meunier-webbotauth-registry-03 26 June 2026. Registry and signature agent card, which is what maps a key directory to a named operator.
- draft-illyes-webbotauth-jafar-00 21 April 2026. One JSON format for the IP range files operators publish today in shapes of their own choosing.
- draft-rescorla-anonymous-webbotauth-01 19 July 2026. Authorisation and rate limiting for agents that do not identify themselves individually.
- draft-singh-webbotauth-hosted-directories-00 19 July 2026. Hosting a key directory on third party infrastructure, for operators that cannot run their own.
How you verify a crawler today, and what a signature would change
Nothing in the previous section is something a site owner can deploy alone. The verification that works today is the one described when we wrote that a user agent is a claim rather than an identity: take the request IP, check it against the ranges the vendor publishes for that crawler, and where the vendor supports it confirm that reverse DNS resolves to the vendor domain and forward resolves back to the same address.
Web Bot Auth does not remove that check so much as compete with it. The two answer the same question from different evidence. An address check asks whether the request came from a machine the vendor admits to running. A signature check asks whether the request was signed by a key the vendor publishes. The second is the stronger claim, because a signature travels with the request while an address is an accident of hosting, and because a signature covering @authority or @target-uri cannot be lifted from one request and reused against another site.
For a site behind Cloudflare the second is available rather than theoretical. Cloudflare's documentation, which carries a last updated date of 1 July 2026, describes registering through the dashboard and then sending signed requests, and points at a test endpoint at crawltest.com so an operator can see how its signatures are read before it deploys them.
What we have not confirmed, and are therefore not going to assert, is which crawler operators sign their production requests today. Several third party write ups name specific companies. We did not find that claim in the first party documentation we opened for this post, and an adopter list is exactly the kind of detail that is easy to repeat and hard to check, so it is not here.
If you run a site and want the answer for your own traffic rather than in general, it is already in your logs, and it does not depend on anyone's list. Look for an inbound Signature-Input header carrying tag="web-bot-auth". That is a fact about requests you actually received, which is a different and better class of evidence than a vendor announcement, and it is the same reason our own scanner publishes what it identifies itself as.
Published IP ranges, deployable today
- Evidence: the address the request came from
- Proves: the machine is one the vendor admits to
- Weakness: shared ranges, and hosting changes
- Format: whatever the operator chose
Signed requests, specified in drafts
- Evidence: a signature carried in the request
- Proves: signed by a key the operator publishes
- Weakness: no finished standard, adoption unknown
- Format: RFC 9421, profiled by the protocol draft
What no external scan of your site can tell you about this
Lantad scans a URL. It fetches the page the way an AI crawler would, checks what robots.txt says to each crawler token, and reports what is readable. Every one of those inputs is public and lives on the site being scanned, which is what makes an AI visibility measurement repeatable by anybody who wants to check our working.
Web Bot Auth lives nowhere near there. The signature is a header on an inbound request, so it exists only in the traffic arriving at your origin or your edge. The key directory is on the crawler's domain. An external scan of your site can observe neither, and there is no page on your site whose contents would change if every AI crawler in the world started signing tomorrow.
So this post reports a development and grades nothing, which is the position we took on the Search Console control for AI Overviews and on the IETF AI preferences drafts for the same reason. When the thing that decides an outcome is not on the site, a scanner that printed a number for it would be printing a guess, and we would rather withhold the grade than dress one up.
The practical division is worth keeping straight, because the layers now decide independently whether an AI crawler reads your page and they fail independently too. The first is what your site says: robots.txt, meta robots, and the markup a crawler actually receives. That is the layer a scan measures. The second is what your edge does regardless of what your files say, which is the argument that two layers decide whether AI can read your site, and a scan sees that one only as an outcome. Identity is a third, and it is the one nobody can see from outside.
If you want to act on this now, two things are worth doing and neither is urgent. Check your logs for signed requests, so that you know whether traffic you are already receiving carries the header, and you are reading your own evidence rather than waiting for an announcement. And make sure the layer you do control is not the thing standing in the way, because a crawler that proves its identity perfectly still gets nothing useful out of a page it is disallowed from fetching, or a page that renders empty without JavaScript.
-
What your site saysMeasurable robots.txt, meta robots, and the markup served to a crawler. Public, at known paths, on your domain. -
What your edge doesVisible as an outcome A block or a challenge shows up as a failed fetch. The rule that caused it does not. -
Who the crawler isNot observable Signature headers arrive at your origin and key directories sit on the crawler's domain. Neither is on your site.
Common questions
Is Web Bot Auth a finished standard?
No. Read on 29 July 2026, the IETF webbotauth working group document page listed ten active Internet-Drafts and two superseded ones, and none of them has an RFC number. The current core specification, draft-meunier-webbotauth-httpsig-protocol-00 of 26 June 2026, carries intended status Informational. The underlying signature format is settled: RFC 9421 was published as a Standards Track document in February 2024.
Where does a crawler publish its Web Bot Auth key?
At /.well-known/http-message-signatures-directory on a host the crawler operator controls, served over HTTPS as a JSON Web Key Set with the Content-Type application/http-message-signatures-directory+json, and signed with HTTP message signatures itself. The optional Signature-Agent header on a signed request points at that directory so the receiving server knows where to look.
Can Lantad tell me whether AI crawlers sign their requests to my site?
No, and neither can any other external scanner, because a signature is a header on a request arriving at your server rather than anything published on your pages. The answer is in your own access logs: search them for an inbound Signature-Input header carrying tag="web-bot-auth". Lantad measures the layer that is on your site, which is what robots.txt says to each crawler and what the page returns when one fetches it.
Does Web Bot Auth replace robots.txt?
No, because the two answer different questions. robots.txt states what a named crawler may fetch, and its weakness is that the name is self declared. Web Bot Auth establishes which operator is actually asking, and states nothing about what they are permitted to take. A rule written against a verified identity is worth more than the same rule written against a header anyone can type, so the realistic outcome is that the first becomes the input to the second.
See what AI can read on your site
Run a free scan and get a graded report of exactly what AI crawlers can and cannot read, with ranked fixes.