Edge
Back to Academy
Security 9 min read

Verified AI Agents with Web Bot Auth

The bot problem changed. Some automation is your customers' AI agents trying to buy from you. Security now means telling declared automation apart from anonymous automation — and treating each accordingly.

"Block all bots" is now a business decision

More than half of web traffic is automated, and a growing share of it is legitimate — AI agents shopping, booking, and researching on behalf of real people. An agent filling your checkout with a customer's card is revenue; a scraper farming your catalogue is not. To a naive bot filter, they look identical: both score low on any honest humanity test, because both are automation.

The distinction that matters is no longer human versus bot. It's automation that declares who it is versus automation that hides. Edge Shield is built around exactly that line.

How Shield identifies agents

The primary mechanism is Web Bot Auth — the emerging IETF standard (RFC 9421 HTTP Message Signatures with the web-bot-auth tag) backed by OpenAI, Google, Amazon, and Cloudflare. The agent signs each request with an Ed25519 key and points to its published key directory. Shield fetches the directory, checks the signature, and confirms exactly which agent is calling — identity that can't be spoofed by copying a user-agent string.

GET /products HTTP/1.1
Host: example.com
Signature-Agent: "https://agent.bot.goog"
Signature-Input: sig1=("@authority" "signature-agent");created=1753100000;\
  keyid="poqkLGiy...";alg="ed25519";expires=1753100300;nonce="e8N7...";tag="web-bot-auth"
Signature: sig1=:jdq0SqOwHdyHr9+r5jw3iYZH6aNGKijYp/EstF4RQTQdi5N5YYKrD+mCT1HA1nZDsi6nJKuHxUi/5Syp3rLWBA==:

Established crawlers that predate the standard — Googlebot, Bingbot, Applebot — are confirmed the way their operators document: reverse-DNS lookup of the calling IP, forward-confirmed back to the same address. A client merely claiming to be Googlebot from an unrelated IP gets no credit, and the lie counts against its humanity score.

Verified identity is bound into the Shield response token and surfaced in the siteverify response as the agent field.

Set a per-widget agent policy

Each Shield widget chooses how verified agents are treated, in its settings:

Policy Behaviour
allow default Verified agents pass without interactive escalation. The token carries their identity — you decide what they can do.
challenge No identity credit. Agents are scored like any anonymous client, and clear automation signals cap their score.
block Verified agents are rejected outright with the agent-blocked error code.

Whatever the policy, anonymous automation is always treated aggressively — clear automation signals with no declared identity hard-cap the humanity score. Declaring identity is the fast path; that's the incentive for agents to sign their traffic.

Route on identity, not just score

The score answers "is this a human?"; the agent field answers "then who is it?". Use both in your server-side check:

const result = await siteverify(token)

if (!result.success) reject()
else if (result.agent?.verified) {
  // Declared automation — route it, don't fight it
  routeToApi(result.agent.domain)
} else if (result.score >= 40) {
  allow() // human traffic
} else {
  block() // automation that refused to identify itself
}

Note that agents don't only arrive through forms. When a signed request hits your API or a content page directly, forward its signature headers to Shield's agentverify endpoint and get the same verified identity back — no widget, no JavaScript, no challenge. See Protecting APIs from Bot Abuse for the pattern.

One caution: Web Bot Auth adoption is early and uneven — Google signs its AI-browsing agent but not Googlebot indexing, and rollouts are gradual. Treat a valid signature as strong positive identity; treat its absence as neutral, not negative.

The other direction: your agents on Edge

If you also run AI agents — deploying infrastructure, managing DNS — the same principle applies in reverse: give automation scoped, revocable identity rather than full credentials. On Edge that means Agent Access Codes: per-agent credentials with product restrictions, budget caps, and expiry dates, so a leaked agent context never exposes your whole account.