Skip to content

feat(browser): route managed Chrome through the policy proxy - #6

Open
aaqaishtyaq wants to merge 1 commit into
mainfrom
codex/chrome-egress-proxy
Open

aaqaishtyaq wants to merge 1 commit into
mainfrom
codex/chrome-egress-proxy

Conversation

@aaqaishtyaq

@aaqaishtyaq aaqaishtyaq commented Oct 10, 2026 •

Copy link
Copy Markdown
Member

Chrome ignores conventional HTTP proxy environment variables, so desktop and headless browsers could fail to reach public sites when Compute enabled a policy proxy. Both Zeish launchers now pass ZEISH_EGRESS_PROXY through a shared Chrome flag helper.

The helper disables QUIC, bypasses the proxy only for loopback and .internal guest routes, and does not copy tenant NO_PROXY entries. Managed launchers fail before startup if the shared helper is missing. Host network policy remains responsible for rejecting protected destinations and direct bypass traffic.

Release the updated base image before desktop-x11, which inherits the helper. Restart an existing browser if its proxy environment changes; policy updates at the same proxy endpoint affect new requests. The documentation records this release order and contract.

Companions: zeishdev/compute#145 and zeishdev/cloud#128.

Validation:

  • Six focused launcher tests passed on the host and in a Linux container, including unmanaged defaults, IPv6 proxy arguments, ignored NO_PROXY, both launch paths, and failure when the helper is absent.
  • bash -n passed for both launchers and the shared helper.
  • docker build --check images/base and docker build --check images/desktop-x11 passed without warnings.
  • A real Chromium 151 CDP smoke using the modified headless launcher in an isolated container with no external network confirmed public HTTP proxy requests and HTTPS CONNECT despite NO_PROXY=*, plus direct requests to .internal and loopback fixture services.
  • A PR/push workflow runs the syntax checks and focused tests.

Full release image builds, X11 browser qualification, and the live Compute egress matrix remain rollout gates. The Chromium smoke used the existing local browser image with the changed launcher and helper mounted into it.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Share proxy arguments between desktop and headless browser launchers.
Pass ZEISH_EGRESS_PROXY to Chrome, keep private guest routes direct,
and disable QUIC to route public requests through the policy proxy.
Ignore tenant NO_PROXY values when constructing the browser bypass list.

Fail startup when a managed browser cannot load the shared helper.
Document base-before-desktop release order and browser restart behavior.
Add a PR test gate covering both launchers and the missing-helper case.

Verified six focused tests on the host and in a Linux container, bash
syntax for all modified scripts, and both Dockerfile build checks.
A real Chromium CDP smoke test in a network-isolated container confirmed
public HTTP and HTTPS proxy routing despite NO_PROXY=*, plus direct
loopback and .internal requests to private fixture services.

Signed-off-by: Aaqa Ishtyaq <aaqaishtyaq@gmail.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-10T09:38:58.823811Z 1116f92 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

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