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.