How to verify Web Bot Auth signatures
In short
Read Signature-Agent, fetch the key directory at /.well-known/http-message-signatures-directory, verify the RFC 9421 signature, and fall back to IP checks for unsigned traffic. Web Bot Auth builds on HTTP Message Signatures (RFC 9421); the signer publishes Ed25519 public keys in a directory named by the Signature-Agent header. The IETF webbotauth working group adopted draft-ietf-webbotauth-httpsig-protocol; revision -01 is dated 2026-10-29.
Web Bot Auth lets an operator prove a request is its own with a signature. Verification is five steps and the first is reading one header.
In practice
- Read the Signature-Agent header, along with Signature and Signature-Input. Compare Signature-Agent exactly with the value the operator documents. OpenAI says to confirm it matches "https://chatgpt.com", quotation marks included.
- Fetch the key directory from the origin that header names, at
/.well-known/http-message-signatures-directory. It holds the signer's Ed25519 public keys. - Verify the RFC 9421 HTTP Message Signature against those keys. Cloudflare does no nonce validation today and relies on short expires values, so reject stale signatures.
- Keep IP and reverse DNS checks for everything unsigned. Google signs only a subset of Google-Agent requests, as https://agent.bot.goog, and says to keep them.
- Decide policy separately. A valid signature proves who signed, not whether the request is authorised; that stays your origin's decision.
What the sources say
- Primary source Web Bot Auth builds on HTTP Message Signatures (RFC 9421); the signer publishes Ed25519 public keys in a directory named by the Signature-Agent header. Source, read 2026-11-04.
- Primary source The IETF webbotauth working group adopted draft-ietf-webbotauth-httpsig-protocol; revision -01 is dated 2026-10-29. Source, read 2026-11-04.
- Primary source OpenAI tells site owners to confirm Signature-Agent exactly matches "https://chatgpt.com", including quotation marks, before verifying. Source, read 2026-11-04.
- Primary source Google signs only a subset of Google-Agent requests as https://agent.bot.goog and says to keep IP and reverse-DNS checks. Source, read 2026-11-04.
- Primary source Cloudflare accepts Ed25519 keys and does no nonce validation today, relying on short expires values. Source, read 2026-11-04.
- Secondary source A valid signature proves who signed, not whether the request is authorised; that remains origin policy, per the draft as quoted by Centinel Analytica. Source, read 2026-11-04.
Related
- Which operators publish key directories
- ChatGPT agent profile
- Google-Agent profile
- Web Bot Auth
- Key directory
- Verified bot programmes compared
Sources
Last reviewed 2026-11-04