Skip to content
Blog

How to investigate bot-detection false positives

Trace a legitimate user's block to the decision that caused it. Separate classification errors, policy mistakes, and integration failures before changing bot rules.

Frederick Jahn
Frederick JahnSeptember 5, 2026
How to investigate bot-detection false positives

Investigate a suspected bot-detection false positive by connecting the user's failed action to the exact decision that stopped it. Then determine whether the problem is classification, policy, or integration.

Those are different failures. A legitimate person classified as automated may be a detection error. An approved integration correctly classified as automated but blocked anyway is a policy problem. A challenge that succeeds but loses its state is an integration problem.

Calling all three “bad bot scores” makes the repair less precise.

Collect enough evidence to find the request

Ask for the affected URL or action, approximate time with timezone, browser or client version, and a non-secret request reference if the product exposes one. Record whether the failure is reproducible.

Do not ask a customer to send a password, session cookie, challenge token, or unredacted network archive through ordinary support channels. Start with the minimum information needed to locate the event in restricted operational logs.

Also record what the user expected to happen. “The website blocked me” is less actionable than “the page loaded, but submitting the recovery form returned a challenge.”

Identify the decision source

Trace the request through the edge, bot-control integration, application, and any downstream service relevant to the action. Determine which component produced the blocking response.

FindingLikely work item
Legitimate user receives an incorrect automation labelDetection evidence review
Approved automation is blocked under a general rulePolicy scope correction
User exceeds an intended resource allowanceAllowance or user-experience review
Challenge succeeds but the action still failsIntegration-state diagnosis
Application returns its own errorApplication investigation

The table is a triage aid, not a substitute for evidence. Several failures can coexist.

Cloudflare's traffic-review guidance illustrates the importance of inspecting traffic and legitimate-user impact when tuning controls. Use the equivalent decision records in your actual stack.

Keep the label separate from the action

Record the observed evidence, classification, policy rule, and enforced response separately. A response such as “block” does not explain why the system chose it.

Check missing observations as well as suspicious ones. If expected browser evidence never arrived, investigate whether the browser, network, consent flow, or integration prevented collection. Absence of an observation should not be silently described as a positive detection signal.

If a rule uses source-network context, inspect shared networks and trusted proxy handling. Avoid treating one address as a stable person or assuming a user-agent proves client identity.

Correct the smallest supported scope

If the issue is a specific rule, route, or client integration, change that scope first. Give temporary exceptions an owner, expiry, and review condition. Keep an audit record of the evidence that justified them.

Do not introduce a blanket exception based only on a user-controlled header. A workaround should not create a new unverified path around protection.

For repeat verification failures, follow the challenge-loop guide. For a browser signal dispute, use the browser-automation detection guide.

Report impact with an honest denominator

A support ticket count is not a false-positive rate. It measures reported problems, and many affected users may never contact support.

NIST's measurement guidance calls for evaluating errors against ground truth in the deployment context. For your review, define the labeled sample and the unit being counted before calculating a rate.

Keep ordinary users and approved automation visible as separate groups. Check that the correction restores their intended actions without quietly allowing the disputed abusive behavior.

The bot-management overview frames the product evaluation. A useful handoff contains one redacted request trace, the responsible decision, the narrow correction, and the observed recovery—not a larger allowlist with no explanation.