Reasons
Every reason id a verdict can carry, strongest first, and what each one means.
A verdict lists its reasons in the order of this table. The Half column says where Botscent reads the evidence. The Names column says whether the reason can name the agent.
| Reason | Half | Names | What it means |
|---|---|---|---|
signer.web-bot-auth.verified | request | yes, signer | A Web Bot Auth signature on the request verified against a key bundled with this release. |
signer.edge-verified-bot | request | no | The hosting platform verified the request as a known bot (Cloudflare's verified-bot category). |
signer.web-bot-auth.declared | request | yes, signer | The request carries a Web Bot Auth signature that did not verify here: an unknown or expired key, a signature outside its window, or a check that failed. |
ua.declared-agent-token | request | yes, token | The user agent contains a token that declares software: an agent, fetcher, crawler, link previewer or HTTP client. |
ua.page-declared-engine | page | yes, page-declaration | The page's own navigator declares a hosted browser engine. |
browser.webdriver-flag | page | no | navigator.webdriver is true: the browser declares that automation controls it. |
ua.headless-chrome | request | no | The user agent declares headless Chrome. |
muse.cloud-browser.password-manager | page | yes, muse | 1Password's accessor family on the credential methods, in Chrome 139 or later on Linux x86_64 rendering WebGL with SwiftShader: Muse's cloud browser. |
instinct.credentials.wrappers | page | yes, instinct | The credential methods are wrapped the way Instinct's cloud desktop wraps them; counts only together with the GeeTest pair. |
instinct.geetest.accessor-pair | page | yes, instinct | The GeeTest initialisers are the accessor pair Instinct installs; counts only together with the credential wrappers. |
grok.cloud-computer.environment | page | yes, grok-bot | Grok Bot's cloud computer: Chrome 139 or later on Linux x86_64 rendering WebGL with SwiftShader, with at least 5 of 6 signs (a 1280x800 screen, the Ubuntu, Droid Sans and Cambria fonts, conditional mediation unavailable, the Google Chrome brand). |
codex.prompt.anonymous-native | page | yes, codex-browser | window.prompt has the Codex in-app browser's shape; counts only with a second Codex shell signal. |
codex.keyboard.empty-layout-map | page | yes, codex-browser | The keyboard layout map is empty, as in the Codex in-app browser; counts only with a second Codex shell signal. |
codex.overlay.shadow-root | page | yes, codex-browser | The Codex in-app browser's overlay is attached to the document; counts only with a second Codex shell signal. |
chatgpt.badge.active | page | yes, chatgpt-chrome | ChatGPT for Chrome's activity badge was drawn on the page while its agent acted. |
claude.marker.active | page | yes, claude-chrome | Claude for Chrome's activity marker was drawn on the page while its agent acted. |
hidden.input.focus-emulated | page | no | Trusted input arrived while the document was hidden yet reported focus, which needs focus emulation. |
hidden.input.trusted-pointerdown | page | no | A trusted pointerdown arrived while the document was hidden, which no person can produce. |