Authenticate requests with Web Bot Auth (experimental)

Google is testing usage of the Web Bot Auth IETF internet draft, which is a new cryptographic protocol that helps websites to validate that bots are authentic. We are testing the protocol with some AI agents hosted on Google infrastructure. This guide explains what Web Bot Auth is, the current status, and how you can implement verification in the experimental phase.

We don't sign every request of a particular agent. Be sure that you fall back to the

established methods of bot verification

.

What is Web Bot Auth?

Web Bot Auth is an experimental cryptographic protocol used to authenticate requests sent by bots. Instead of relying solely on self-reported headers and IP addresses, Web Bot Auth allows agents to cryptographically sign their requests.

Using Web Bot Auth helps website owners identify automated traffic on their sites, and prevents other actors from attempting to spoof reputable agents. Web Bot Auth can bring the following benefits:

Current status of Web Bot Auth: experimental

Google's implementation of Web Bot Auth is currently *experimental* for the following reasons:

What does this mean?

The experimental status means that:

For those that are interested in participating during the experimental phase, we're providing guidance on how to recognize and allowlist Google AI agents.

How to allowlist Google AI agents using Web Bot Auth

If you're a developer or system administrator looking to allowlist our experimental AI agents, you can implement verification through the Web Bot Auth protocol:

Use a product or service that supports Web Both Auth

Major bot-detection services, CDNs, and WAFs support Web Bot Auth. Some infrastructure services provide ways to look up the Google-Agent user agent and allowlist it; refer to your provider for the exact steps. A subset of requests made by the Google-Agent are signed with Web Bot Auth; in these cases, they are authenticated as https://agent.bot.goog. If your provider supports the protocol, they likely verify this automatically.

Verify requests yourself

If you want to authenticate our requests yourself, refer to the HTTP Message Signatures for automated traffic architecture specification and example implementations on GitHub. In general, the key protocol steps are:

  1. Fetch the public key set of our agent from https://agent.bot.goog/.well-known/http-message-signatures-directory and cache them according to the Cache-Control header. Be sure to delete old cached keys that are missing from the file, as they might be expired or revoked.
  2. Participating requests sent to your server will have the Signature-Agent HTTP request header set to g="https://agent.bot.goog" (take note of the g= label).
  3. Verify the Signature header according to the Signature-Input, following the HTTP Message Signatures standard (RFC 9421). Use the Signature and Signature-Input headers labeled as g.
  4. Don't forget to fall back to IP-based verification, as not all requests are signed.

!Web Bot Auth verification steps

For latency-sensitive requests, you can return the response in advance and validate the signature within its expiry window. In this case, sanctioning will occur after the fact and you can apply that to the caller's future requests.

A signature's expiry window isn't the same as the public key set's

Cache-Control

header. Be sure to validate them separately.

Next steps