Skip to content

Document browser egress allowlists - #657

Draft
meliaj wants to merge 6 commits into
mainfrom
hypeship/egress-allowlists
Draft

meliaj wants to merge 6 commits into
mainfrom
hypeship/egress-allowlists

Conversation

@meliaj

@meliaj meliaj commented Oct 1, 2026 •

Copy link
Copy Markdown

Summary

  • add an Egress Allowlists page (browsers/egress-allowlists.mdx) under Browsers → Advanced. It covers creating a browser with network.allowed_hosts, the entry rules, what a blocked request returns (403 with X-Kernel-Proxy-Error: network_policy_denied), changing or removing the list mid-session with update(), keeping the allowlist out of the agent's reach, and the limitations
  • add network_policy_denied to the proxy errors table, and replace "the status is always 502" with the 502/403 split
  • say that blocked connections to ports other than 443 show up as network_loading_failed telemetry events, not proxy_error, since Chromium doesn't expose their bare 403
  • drop the proxy errors page's note that origin_response_incomplete isn't reported as a proxy_error event. The browser image release this PR waits for reports it with its own code
  • spell out what a mid-session update guarantees: new requests are refused within a few seconds and open connections close within about 30 seconds, or up to 10 minutes during a Kernel deploy
  • list the Chrome policies rejected with an allowlist (the WebRTC pair and the secure DNS policies), and say that public suffix rejections include provider domains such as *.cloudfront.net
  • list what can leave the VM without going through the egress proxy: programs run in the VM, browser contexts created over CDP with their own proxy, extensions with the proxy permission, and DNS lookups Chromium makes itself
  • narrow the private networking note: private_hosts still can't change after creation, but allowed_hosts can

Keep this as a draft until egress allowlists are generally available in the API and a released browser image includes kernel/kernel-images#429, which reports network_policy_denied and origin_response_incomplete telemetry. Drop the CDP-context and extension lines from the limitations if those paths are closed before then. A changelog line for that week's update:

Added egress allowlists: limit the destinations a browser session can reach with network.allowed_hosts, and change or remove the list mid-session with update(). Blocked requests get a 403 with X-Kernel-Proxy-Error: network_policy_denied.

Testing

  • mint broken-links: no broken links found
  • rendered the new page with mint dev
  • docs.json parses

🤖 Generated with Claude Code


Note

Low Risk
Documentation-only changes with no runtime or API code modifications.

Overview
Adds a new Egress Allowlists doc page and wires it into the Browsers → Advanced nav in docs.json. The page documents network.allowed_hosts: creation and validation rules, blocked-request behavior (403 + X-Kernel-Proxy-Error: network_policy_denied), mid-session update() / removal via null, CAPTCHA host requirements, security guidance, and limitations (proxy bypass paths, pools, Chrome policy conflicts).

Proxy errors now documents the 502 vs 403 split for allowlist blocks, adds the network_policy_denied row, and shortens the telemetry caveat. Private networking clarifies that only private_hosts are immutable after creation—not the whole network config—so it stays consistent with updatable allowlists.

Reviewed by Cursor Bugbot for commit 21d4d67. Bugbot is set up for automated code reviews on this repo. Configure here.

Add a page for network.allowed_hosts: creating a browser with an
allowlist, the entry rules, what a blocked request returns, changing
or removing the list with update(), keeping it away from the agent,
and the limitations. List network_policy_denied and its 403 on the
proxy errors page, and narrow the private networking note now that
allowed_hosts can change after creation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mintlify

mintlify Bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
Kernel 🟢 Ready View Preview Oct 5, 2026, 11:33 PM

💡 Tip: Enable Automations to automatically generate PRs for you.

- Updating the allowlist: new requests are refused within seconds and open
  connections close within about 30 seconds, or up to 10 minutes during a
  Kernel deploy.
- The WebRtcIPHandling and WebRtcIPHandlingUrl Chrome policies are rejected
  with an allowlist.
- Public suffix rejections include provider domains such as *.cloudfront.net.
- Limitations list what can leave the VM without the egress proxy: VM
  processes, CDP contexts with their own proxy, extensions with the proxy
  permission, and DNS lookups Chromium makes itself.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocked connections to ports other than 443 get a bare 403 that Chromium
doesn't expose, so they show up as network_loading_failed, not
proxy_error. The browser image release this page waits for reports
origin_response_incomplete with its own code, so the proxy errors page
no longer needs to say it isn't reported.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch was successfully deployed

1 active deployment
staging — 21d4d679 Deployed Oct 5, 2026 by mintlify[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant