CAPTCHAs and agents: place them where they cost nothing
A CAPTCHA is a test designed so that automated visitors fail it. It works exactly as designed on AI agents, including the ones arriving with a customer's mandate and payment details. The widget cannot distinguish a scraper from a shopping agent about to place an order; it stops both.
The mainstream options differ in friction, not in this outcome: reCAPTCHA (score-based v3 and challenge-based v2), hCaptcha, and Cloudflare Turnstile (managed, usually non-interactive for humans). Whatever passes humans most smoothly still exists to fail automation, so where you place it decides what it costs you.
The cost per placement
A CAPTCHA on a contact or quote form filters your inbound leads to humans-who-persist. An agent sent to request a quote from three vendors returns with two quotes and one verification could not be completed; you are the third vendor. On newsletter forms it costs signups; on checkout it costs orders, on top of its documented drag on human conversion.
Meanwhile the security value varies wildly by path. Login and password-reset endpoints attract credential stuffing and genuinely benefit from challenges. A product page, a pricing page, or the add-to-cart button attracts almost nothing a rate limit cannot handle more cheaply.
Placement rules that keep buyers in
Never challenge reading. Product pages, pricing, search, and docs should carry no widget at all; that traffic includes the crawlers and lookups that put you in answers.
Keep checkout and cart clean. Your payment processor already runs fraud scoring on every transaction; a CAPTCHA in front of it mostly declines legitimate buyers, human and agent alike. Protect the payment step with the processor's tools, rate limits, and address verification.
On contact and signup forms, layer cheap defenses first: a honeypot field, per-IP rate limiting, and server-side validation stop the bulk spam that CAPTCHAs are usually deployed against. If you still need a widget, run it in a mode that only escalates on suspicion, and challenge only low-scoring requests server-side.
html<!-- Contact form: honeypot + Turnstile managed mode (script in <head>:
https://challenges.cloudflare.com/turnstile/v0/api.js) -->
<form action="/contact" method="post">
<label for="ct-email">Your email</label>
<input id="ct-email" name="email" type="email"
autocomplete="email" required>
<label for="ct-msg">Message</label>
<textarea id="ct-msg" name="message" required></textarea>
<!-- Honeypot: invisible to humans; submissions that fill it are dropped -->
<input name="website" tabindex="-1" autocomplete="off"
style="position:absolute;left:-9999px" aria-hidden="true">
<div class="cf-turnstile" data-sitekey="YOUR_SITE_KEY"></div>
<button type="submit">Send</button>
</form>
Managed mode challenges only when risk signals warrant it, which keeps the common path interaction-free.
Score-based: challenge the suspicious, not everyone
With reCAPTCHA v3 the widget never blocks by itself; your server reads the score and decides. Reserve hard failure for clearly bot-like scores and let everything else through with rate limiting, so a borderline request degrades to slower instead of impossible.
Note that WAF-level challenges are a separate layer with the same failure mode; clearing your forms while the CDN challenges every request fixes nothing. Check both, and watch your logs for how often a challenge actually fires: a widget that never triggers is cheap, one that fires on ten percent of submissions is a measurable leak.
js// Server-side reCAPTCHA v3 handling: block only the confident bots
const { score } = await verifyRecaptchaToken(req.body.token);
if (score < 0.3) {
return res.status(403).json({ error: "verification_failed" });
}
// 0.3 to 0.7: accept, but rate-limit and queue for review
// >= 0.7: accept normallyHow AgentReady checks it
The scanner asks: are key paths free of CAPTCHA walls? It looks for reCAPTCHA, hCaptcha, and Turnstile scripts and widget markers on the forms of your homepage and key page. A widget on every form fails, on some forms warns, on none passes. At 5 points it is tied for the heaviest check in the Action pillar.
The methodology's reasoning: a CAPTCHA on every form is a wall agents cannot climb. Each one you place on a key path is a conversion an agent cannot complete.
Frequently asked questions
- Is Turnstile friendlier to agents than reCAPTCHA?
Turnstile's managed mode passes more humans without interaction, but any challenge that fires still stops an agent. Placement decides the cost far more than the vendor does.
- How do I stop spam without a CAPTCHA?
Honeypot fields, per-IP and per-session rate limits, server-side validation, and email confirmation for signups remove the bulk of it. At checkout, your payment processor's fraud scoring is the purpose-built tool.
- Can AI agents solve CAPTCHAs now?
Some browser agents attempt them and third-party solving services exist, but success is unreliable and against most widgets' terms. Assume a CAPTCHA is a wall for legitimate agents; the ones it fails are the customers, not the abusers.