← All articles

AI Agent Stuck on a CAPTCHA: The Honest Answer

TL;DR

An agent hits a CAPTCHA because the site scored its session as automated. Solver services work briefly, break often, violate most sites' terms, and get accounts banned. The reliable answer is a live handoff: a person solves it in the agent's own session, the session continues, and the agent learns which sites need a human so it stops burning attempts.

A CAPTCHA is not a puzzle your agent failed to solve. It is a site telling you it has decided your session is a machine. The right response is not a better solver; it is a human, and a change in behaviour so it happens less.

Why solvers are the wrong tool

  • They break constantly. Every major CAPTCHA vendor ships detection updates against solver services. What works in a demo fails a week later.
  • They get accounts banned. A solved CAPTCHA from a flagged session is itself a signal. Sites correlate it and lock the account, which is far worse than one stuck run.
  • They are a terms-of-service violation on almost every site that shows one, which for a company running agents against suppliers and customers is a legal exposure, not a technical detail.

What causes it, so you can reduce it

Headless Chromium, no persistent profile, an IP that has made a thousand requests, a login retried five times in a minute. Each raises the score. A persistent browser profile that a human has actually used, one attempt rather than five, and a stop-and-ask on the first challenge bring the rate down sharply on most sites.

What to do when it appears

Recognise it, stop, and hand the live session to a person. Detection is straightforward: the reCAPTCHA, hCaptcha and Turnstile widgets each leave identifiable elements in the DOM. The person solves it in the agent's own browser, so the solved state belongs to the agent's session, and the run continues.

import { DoubleOh } from "@doubleoh/sdk";
const oo = new DoubleOh();

if (await hasCaptcha(page)) {
  // Do not retry. Each attempt makes the next CAPTCHA more likely.
  const fix = await oo.requestFix({ url: page.url(), task });
  await fix.resolved();      // a person solves it in THIS browser session
  await resume(page, task);
}

Because the agent records which sites challenge it, the fleet learns where a human is needed up front and stops wasting attempts there.

Questions people ask

Can an AI agent solve CAPTCHAs?

Sometimes, briefly, using a solver service, and doing so violates most sites' terms and gets accounts banned. It is not a reliable or defensible strategy for a business.

Why does my agent get CAPTCHAs when I do not?

Because your browser has a history, a persistent profile and human-paced behaviour. A fresh headless session retrying quickly from a busy IP scores as automated.

What is the right way to handle a CAPTCHA in an agent?

Detect it, stop retrying, and hand the live session to a person who solves it in the agent's own browser. Then persist that session so it is not challenged again immediately.

Does DoubleOh solve CAPTCHAs?

No, and it never will. It detects the challenge, points a person at it in the agent's live session, and lets the run continue once they have solved it.

DoubleOh is the reliability layer for AI agents. When one gets stuck, a person fixes it once in a live browser, and the fix becomes a skill the whole fleet follows from then on.

Start free