If you sign your store’s or your crawler’s requests with Web Bot Auth and a signature that looks correct by the letter of the current Internet-Draft is getting rejected, you’re not doing it wrong. The draft and the biggest production verifier disagree with each other right now, and the standard behind both of them is further from finished than its own working group’s timeline says it should be.
The header format changed under signers’ feet
Web Bot Auth authenticates HTTP requests with a cryptographic signature and a
Signature-Agent header pointing to the signer’s public-key directory. Early
drafts defined that header as a bare string:
Signature-Agent: "https://example.com". On 2026-10-20, revision -04 of the
architecture draft changed the format to a Structured Fields
dictionary β
Signature-Agent: sig1="https://example.com". On 2026-07-29, the current
protocol draft went further and made
the dictionary form mandatory:
“Signers MUST send the dictionary form,” with the bare-string form kept
readable only for backward compatibility.
Cloudflare verifies more Web Bot Auth traffic than anyone else, and its live
integration docs say the opposite. Under “Failed message validation,” the
current Cloudflare Web Bot Auth
documentation
lists, verbatim: “The message uses the dictionary form from later drafts, such
as sig2="https://signature-agent.test"” as a rejection reason, and requires
the header to be “a structured string, not a dictionary.” A signer that
follows the newest draft to the letter β the one telling implementers they
MUST send the dictionary form β gets a failed verification from Cloudflare.
AgentReady’s own crawler signs with the bare-string form for exactly this
reason: it’s what the verifier that actually sits in front of most of the web
still accepts.
The standard isn’t as settled as “Best Current Practice by August 31” sounds
The IETF’s webbotauth working group charter
sets three deliverable dates: standards-track documents for authentication
and for conveying bot information, both due 2026-04-30, and a Best
Current Practice operational document due 2026-08-31. As of this week,
none of the three has landed. The documents doing the actual work β the
authentication protocol and the key-directory registry β are still individual
submissions (draft-meunier-webbotauth-httpsig-protocol-02,
draft-meunier-webbotauth-registry-03), not draft-ietf- documents the
working group has formally adopted. Their own source repository describes
itself as “the working area for individual
Internet-Drafts” β
adoption, and the standards-track deadline it was tied to, is already four
months overdue. With no adopted document to build a BCP from, the August 31
milestone reads the same way.
None of this makes Web Bot Auth vaporware β Cloudflare, AWS, Akamai and others verify it in production today, ahead of any ratified standard. It means the wire format is still moving under a spec that production infrastructure already depends on, and the safe move for a merchant or platform implementing it is to match what your verifier actually accepts, not the newest revision of a document nobody has adopted yet.
What to do about it right now
- If you sign outbound agent or crawler requests, send the bare-string
Signature-Agentform until Cloudflare’s docs say otherwise β check the Failed message validation section before you change anything. - If you verify inbound signatures yourself, don’t hard-fail on the bare-string form; production signers are sending it deliberately.
- Re-check both the draft text and Cloudflare’s docs after 2026-08-31 β either the BCP milestone slips again, which is itself worth knowing, or it lands and settles which form wins.
FAQ
Why does my Web Bot Auth signature fail even though it matches the latest spec text?
Because “latest spec text” and “what the verifier checks” are two different
documents right now. The current protocol draft requires the dictionary form
of Signature-Agent, but Cloudflare’s live verification docs explicitly
reject that form and require the older bare-string form instead.
Is Web Bot Auth an IETF standard yet?
No. Its working group’s charter set standards-track deadlines of 2026-04-30
and a Best Current Practice deadline of 2026-08-31, but as of this week none
of the working documents carry the draft-ietf- prefix that marks formal
working-group adoption β they remain individual submissions.
Should I hold off implementing Web Bot Auth until the spec settles?
No β implement against what your verifier actually accepts today (the
bare-string Signature-Agent form for Cloudflare) and revisit after the
standard stabilizes. Production infrastructure is already verifying
signatures ahead of ratification, so waiting for a finished RFC means missing
traffic that’s authenticating itself right now.
Sources
- IETF Web Bot Auth working group charter β milestone dates, fetched 2026-08-25
- IETF Web Bot Auth working group page β chairs and milestones, fetched 2026-08-25
- Cloudflare Web Bot Auth documentation β dictionary-form rejection, fetched 2026-08-25
draft-meunier-webbotauth-httpsig-protocol, commit5b52dacβ “Signers MUST send the dictionary form,” 2026-07-29draft-meunier-web-bot-auth-architecture-04β Signature-Agent changed to Structured Fields dictionary, 2025-10-20thibmeu/http-message-signatures-directoryβ the drafts’ source repository
Sign what your verifier accepts, not what the newest draft asks for β that’s the same instinct AgentReady’s audit applies to every other machine-readable surface a store depends on.