Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions browsers/bot-detection/stealth.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,3 @@ When encountering a Cloudflare challenge, our auto-CAPTCHA solver will attempt t
<Info>
After the "Ready" message appears, don't click the Cloudflare CAPTCHA checkbox — this can interfere with the solver.
</Info>

### hCaptcha (beta)

KERNEL can also attempt to solve supported hCaptcha challenges automatically. The hCaptcha solver is in beta and isn't enabled for every organization by default. To turn it on, [contact support](/info/support) with the website or workflow you're testing, your expected volume, and whether you already use stealth mode, [profiles](/browsers/profiles), or custom [proxies](/proxies/overview).
2 changes: 1 addition & 1 deletion browsers/telemetry/pausing-for-captcha-solves.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -653,7 +653,7 @@ Durations come straight from each event's `duration_ms`, which is authoritative;
- **One episode at a time.** The gate resets after each verdict; overlapping visible challenges from the same provider aren't split apart, and the telemetry docs note Kernel's own event model can't always attribute a result in that case either.
- **The page probe is best-effort.** It reads the DOM for known widget markers and a response token. A site that renders its challenge somewhere those selectors miss won't be held past the logged message alone.
- **GeeTest has no selector either.** The solver reports `geetest` task events, but `PROBE`'s `groups` has no GeeTest entry and `tokenPresent` checks no GeeTest field, so `widgets` never reports one and the agent proceeds as soon as the task settles, even while the challenge is still open. Add a selector for your target's GeeTest integration if you need it to hold.
- **hCaptcha coverage depends on your organization's configuration.** When the hCaptcha solver isn't enabled for your org, hCaptcha pages produce no captcha events and the gate falls through to the page probe.
- **hCaptcha often takes several rounds.** hCaptcha challenges are hard, so the solver often fails a round and retries with a new one before the challenge clears. Each round is its own `image_challenge` task, so a finished or failed round doesn't mean the solve is over. Wait until the solver is done retrying, signaled by the `captcha_challenge_result` for that `challenge_id` (`solved` or `abandoned`), before letting the agent act on the page. If the agent is told about a single image round, have it keep waiting rather than interact with the widget.
- **Press-and-hold has no selector at all.** It emits `captcha_challenge_result` telemetry like reCAPTCHA and hCaptcha, but `PROBE`'s `groups` has no entry for it, so `widgets` never reports one -- the tool-call handler treats that as clear and lets the agent proceed even while the challenge is still open. Add a selector for your target's specific implementation if you need it to actually hold.
- **A reload within `TASK_SETTLE_MS` of the last verdict can still be missed.** `settledAt` treats an ID as fresh again once that window passes, so a genuinely new outcome for a reused `challenge_id` eventually gets through -- but if the reload happens sooner than that, its result is indistinguishable from a stale duplicate and gets dropped.

Expand Down
2 changes: 1 addition & 1 deletion docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
{ "source": "/careers/backend-engineer", "destination": "https://jobs.ashbyhq.com/usekernel" },
{ "source": "/careers/engineer-new-grad", "destination": "https://jobs.ashbyhq.com/usekernel" },
{ "source": "/careers/customer-engineer", "destination": "https://jobs.ashbyhq.com/usekernel" },
{ "source": "/browsers/bot-detection/hcaptcha", "destination": "/browsers/bot-detection/stealth#hcaptcha-beta" },
{ "source": "/browsers/bot-detection/hcaptcha", "destination": "/browsers/bot-detection/stealth" },
{ "source": "/overview/products", "destination": "/overview/features" },
{ "source": "/proxies/datacenter", "destination": "/proxies/isp" },
{ "source": "/apps/secrets", "destination": "/apps/deploy#secrets" },
Expand Down
Loading