Edge

Shield

Verified Agents

More than half of web traffic is automated, and a growing share of it is legitimate — AI agents shopping, booking, and researching for real customers. Shield identifies automation that declares itself, so aggressive treatment is reserved for automation that refuses to.

How Identification Works

Shield verifies agent identity two ways, in order of preference:

1. Web Bot Auth (HTTP Message Signatures)

The emerging IETF standard (RFC 9421 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 via the Signature-Agent header. 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==:

2. Confirmed crawlers (reverse DNS)

Established crawlers that predate Web Bot Auth — 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 its user-agent lie counts against its humanity score.

Verification happens automatically on every /challenge and /solve request an agent makes through the widget flow. A verified identity is bound into the response token and surfaced in the siteverify response as the agent field.

Per-Widget Agent Policy

Each widget chooses how verified agents are treated, in the widget's settings:

Policy Behaviour
allow default Verified agents pass without interactive escalation. The token carries their identity; the humanity score stays honest (low — they're automation). You route on the agent field.
challenge No identity credit. Verified agents are scored like any anonymous client — clear automation signals will cap their score and trigger escalation in managed mode.
block Verified agents are rejected at solve time 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.

Routing on Identity

The score answers "is this a human?"; the agent field answers "then who is it?". Use both:

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
}

Server-Side Verification: agentverify

Agents don't only arrive through forms. When a signed request hits your origin directly — an API endpoint, a content page — forward its signature headers to agentverify and Shield does the verification for you. No widget, no JavaScript, no challenge.

POST https://shield.edge.network/agentverify
Content-Type: application/json

{
  "secret": "es_secret_...",
  "authority": "example.com",
  "headers": {
    "signature-agent": "...",
    "signature-input": "...",
    "signature": "..."
  }
}

Response:

{
  "success": true,
  "agent": { "domain": "agent.bot.goog", "verified": true, "method": "web-bot-auth" },
  "policy": "allow",
  "error-codes": []
}

authority is the Host the agent addressed (signatures cover it, so it must match), and headers are the three signature headers verbatim from the incoming request. Failures return success: false with missing-signature-headers or signature-verification-failed.

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.

What Shield Stores

Nothing new. Agent verification is stateless — key directories are cached briefly in memory, and the only persisted artefact is the hourly verified agent counter in your widget's analytics. No per-request logs, no agent request history.

Next Steps