openai / openai/codex

Windows desktop: Browser Use origin check uses global default_permissions instead of the active permission profile, every site blocked as admin-enforced policy

Open
#44,889 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app browser bug config windows-os
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What happens

Browser Use rejects every navigation with:
"Browser Use rejected this action due to browser security policy. The admin-enforced policy blocks this action."
Settings > Browser shows "Blocked by your network configuration". This affects every origin, including origins set to access = "allow" in [browser_use.origins]. There is no admin or managed policy: no requirements.toml exists, and codex doctor reports "no locally visible recent Codex security enforcement was found".

Environment

Windows 11, ChatGPT/Codex desktop app 26.903.9818.0, codex-cli 0.153.4, browser plugin 26.903.71938, personal account (no managed workspace). Same result with the in-app browser and the Chrome extension.

Steps to reproduce
  1. In ~/.codex/config.toml, define profile A with [permissions.A.network] enabled = false and set default_permissions = "A".
  2. Define profile B (extends ":read-only") with [permissions.B.network] enabled = true.
  3. In the desktop app, select profile B for a conversation. The session records network_access = true.
  4. Ask Codex to open any website with Browser Use.
Expected

The origin check uses the permission profile active for the conversation (B), so the site opens.

Actual

Every origin is denied with "admin-enforced policy".

Root cause (browser-service.mjs, plugin 26.903.71938)

getOriginPolicyDecision(origin, "access") -> aB -> qX -> Hx(origin, WX(requirements, config)).
WX gets the network policy from HX(config), which reads config.default_permissions -> config.permissions[].network. The conversation's active profile is never used.
Hx returns "deny" for any host when that policy has enabled = false. "deny" maps to permissionSource "codex-network-policy" / reason "enterprise_policy_blocked", which is shown as "admin-enforced policy". The origin allowlist is only evaluated when Hx returns null, so it is never reached.

Impact

A network-restricted global default for one project blocks Browser Use in all other projects. Neither per-conversation profile selection nor a project-local config can unblock it. The only workaround is changing the global default, which removes the isolation.

Related

#28281, #22553, #41724 (profile not applied in desktop), #23014, #43241 (Browser Use blocks explicitly allowed origins). Possibly the same root cause.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the browser-service.mjs origin-policy path described in the issue, especially getOriginPolicyDecision and the HX/WX calls that read the network policy. Reproduce with permission profiles A and B from the steps, then trace how the active conversation profile is represented. Done means an allowed origin opens under profile B without changing the global default, while denied origins remain blocked.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
desktop, security
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.