AgentReady Scan your site

WAF bot challenges: the wall agents cannot climb

Updated 2026-07-13 · 3 min read · access pillar

A bot challenge is a test your WAF or CDN serves instead of your page: Cloudflare's managed challenge, the classic checking-your-browser interstitial, and the equivalents from Akamai Bot Manager, DataDome, and HUMAN (formerly PerimeterX). The test requires executing JavaScript or completing an interaction, which is exactly what a non-browser agent cannot do.

The result is a hard wall in front of everything. Your robots.txt can say welcome while the WAF says prove you are human, and the WAF wins: the crawler receives a challenge page and an error status, not your content. These walls are usually enabled site-wide by a single toggle, often during an attack, and then forgotten.

Why this is worse than a robots.txt block

A robots.txt block is a request that compliant crawlers honor; a challenge wall makes every automated fetch fail, compliant or not. That means no search-index citations, no live lookups when a customer asks an assistant about you, and no shopping agent ever reaching a product page. Every agent surface fails at once, at the front door.

It is also the quietest failure in this catalog. Humans in browsers pass the challenge without noticing, so the site looks fine to everyone who works on it. Meanwhile the entire agent economy sees an interstitial. If assistant traffic matters to your funnel, an always-on challenge is a standing outage you cannot see in analytics.

The fix on Cloudflare: let verified bots through

Cloudflare maintains a verified bots program: crawlers that prove their identity, including GPTBot, ClaudeBot, and PerplexityBot, are authenticated by Cloudflare itself. In WAF custom rules, the field cf.client.bot is true for verified bots, so one Skip rule placed above your challenge rules restores access without opening the door to arbitrary scrapers.

If you use Super Bot Fight Mode, set its Verified bots option to Allow. The basic Bot Fight Mode has little granularity, and as of mid-2026 Cloudflare also offers per-crawler AI controls (and a one-click block for AI crawlers); if agent visibility is a channel you want, make sure that blanket AI block is off and manage bots per token instead.

text
# Cloudflare > Security > WAF > Custom rules
# Rule: "Allow verified bots" (place ABOVE any challenge rules)
Expression: (cf.client.bot)
Action: Skip  (skip your challenge/managed rules)

# Tighter variant where the field is available:
Expression: (cf.verified_bot_category in {"AI Crawler" "Search Engine Crawler"})
Action: Skip

cf.client.bot only matches crawlers Cloudflare has verified by IP and signature, so this does not exempt unverified automation.

Other WAFs, and how to verify the fix

Akamai, DataDome, and HUMAN all maintain known-bot directories and support allow rules. Allow the published AI crawlers as categories where offered; otherwise allow-list by user agent plus the vendors' published IP ranges (OpenAI, Anthropic, and Perplexity all publish theirs), never by user agent string alone.

Verify from the outside: fetch your homepage with an agent user agent from a network that is not yours, and check WAF event logs for challenges served to those tokens. Reserve panic modes like Cloudflare's Under Attack for actual attacks, and turn them back off after; every hour they stay on is an hour agents bounce.

bash
# See what an AI crawler gets from your site (run from any external machine)
curl -sI -A "GPTBot/1.2" https://yourstore.com | head -n 5
curl -sI -A "ClaudeBot" https://yourstore.com | head -n 5
# 200 = readable. 403/503 or a cf-mitigated header = challenge wall.

How AgentReady checks it

The scanner asks: is the homepage free of bot challenges and interstitials? It fetches your homepage and looks for challenge markers: Cloudflare signals such as cf-mitigated headers and challenge scripts, checking-your-browser text, Akamai, DataDome, and HUMAN signatures, and meta-refresh walls. At 4 points it is the heaviest check in the Access pillar.

The methodology's reasoning: bot challenges and interstitials are built for browsers, not agents. An agent that hits a checking-your-browser wall cannot read or buy anything behind it.

Frequently asked questions

Will allowing verified bots invite scrapers?

No. Verified-bot programs authenticate crawlers by IP range and signature, not by user agent string, so a scraper claiming to be GPTBot does not qualify. Your challenge rules keep applying to unverified automation.

How do I know if my WAF is blocking AI agents?

Run a scan here, curl your site with agent user agents from an external network, or filter your WAF event logs by the crawler tokens. Challenges served to GPTBot, ClaudeBot, or PerplexityBot are the confirmation.

Can I allow search crawlers but still block AI crawlers?

Yes. Where your WAF exposes bot categories, allow Search Engine Crawler and decide AI Crawler separately, or pair a verified-bots allow rule with explicit blocks for specific tokens. Make it a decision rather than a side effect of one toggle.

Does your site pass this check?

The scanner runs it, plus 29 more, and hands you the exact fix for each. Free, under a minute, no signup.

Scan your site