Skip to content

Agents that browse the web

Some agents work by actually driving a browser: loading a page, reading what rendered, following links, taking a screenshot or a PDF. That is how they cope with sites that build their content in JavaScript.

You will meet this through the browser agent, the browser capability, or the browsing mode of an enrichment job.

Public websites, over HTTP and HTTPS. Nothing else.

The browser runs somewhere with no route to anything private — not our internal services, and not anything on your own network. Requests for private or reserved addresses are refused at the boundary, and the refusal is based on the address actually being connected to, not on an earlier check. A hostname that resolves to a public address when it is inspected and a private one when it is used is still refused.

This is worth knowing for two reasons:

  • Internal URLs will not work. Pointing a browsing agent at something on your own intranet, a private IP, or localhost will fail. There is no setting to change that.
  • It is a boundary, not a filter. It does not depend on the agent behaving, so a prompt that talks an agent into trying will still not get through.

The agent is told plainly, and told not to retry:

Blocked by the browser egress boundary … Do not retry — this is policy, not a transient failure.

That wording is deliberate. Without it the failure looks like a timeout, and the agent burns its remaining steps retrying something that will never succeed. A refusal is fast — about a tenth of a second — so a blocked destination costs you almost nothing.

On plain HTTP you may instead see the page reported as returning status 403. Same cause.

What you see What it usually is
Blocked by the browser egress boundary The destination is private, reserved, or not allowed
Status 403 on a URL you expected to work Same as above, over plain HTTP
A navigation timeout The site is genuinely slow, or waiting on something that never arrives
An empty or partial page The site rendered nothing useful, or needs a sign-in
The agent stops after several attempts It has a step budget; a site that needs many interactions can exhaust it

Browser work is metered in browser seconds — a distinct unit from model tokens, because the time a page takes has nothing to do with how much the model read. See the billing units reference.

A page that is refused still costs the moment it took to refuse, which is negligible. A page that hangs until it times out costs the timeout.