Originally published on proxymint.
How to detect AI browser agents: declared identity, Web Bot Auth signatures, browser and behaviour signals, why IP checks fail, and a test you can run.
TL;DR
- Where the agent runs decides what a site can see. Cloud-hosted agents come from hosting IPs and often declare or sign; agentic browsers such as ChatGPT Atlas run on the person's own device and look like Chrome on a home connection.
- Identity first, then signatures. Google publishes the IP ranges for Google-Agent, OpenAI publishes one IP file per user agent, and ChatGPT agent signs every request with Web Bot Auth, which a site can verify against a public key directory.
- Browser traces and behaviour catch the rest. navigator.webdriver, framework residue, direct deep-link navigation and machine-speed input separate unsigned agents from people.
- IP rules catch customers. An agentic browser uses the customer's own IP, and a self-built agent can exit on a residential connection, so IP type is one input and never the verdict.
Key takeaways
- Allowlist declared agents by proof. Match Google-Agent against user-triggered-agents.json and ChatGPT agent against its signature, never against the user agent string alone.
- Score sessions, not single events. Combine browser traces, behaviour and network into one score, because each layer misses a whole class of agent.
- Set rules per action. Let verified agents browse and compare, and keep account changes and payment behind the person's own login and confirmation.
- Test from a home connection before shipping. Run the same agent task from a cloud host, a home origin and a vendor agent, then by hand, and confirm the human run fires nothing.
Read the full guide on proxymint, with the commands, tables and sources.

