Skip to content

Codex Desktop Browser Use ignores persisted origin/upload approvals when nodeRepl.config is unavailable #24017

@jinxiaoliu27-eng

Description

@jinxiaoliu27-eng

Summary

Codex Desktop Browser Use can repeatedly ask for the same origin or upload permission even after the user chooses the persistent allow option, and even when ~/.codex/browser/config.toml already says approvals should not be requested.

I reproduced this on macOS with Codex Desktop 26.519.31651 (CFBundleVersion 3017), Browser bundled plugin 26.519.22136, and Chrome bundled plugin 0.1.7.

Repro

  1. Configure Browser Use approvals to avoid repeated prompts:
upload_approval_mode = "never_ask"
history_approval_mode = "never_ask"
approval_mode = "never_ask"

[uploads]
allowed = [ "https://chatgpt.com" ]

[origins]
allowed = [ "https://chatgpt.com" ]
  1. Start a local page, for example:
python3.12 -m http.server 8767 --bind 127.0.0.1
  1. Use Browser Use to navigate to http://127.0.0.1:8767/index.html.
  2. In the approval popup, choose the persistent allow option (Always allow / 始终允许访问此网站).
  3. Navigate to the same origin again.

Actual behavior

The same prompt reappears for the same origin. The same class of issue also appears for Browser Use upload prompts, where upload to an already allowed origin keeps requiring manual approval.

Observed prompt text examples:

  • Allow Codex to access http://127.0.0.1:8767?
  • Allow upload to https://chatgpt.com/... ?

The persistent selection does not update ~/.codex/browser/config.toml for the new origin, and existing approval_mode = "never_ask" / upload_approval_mode = "never_ask" settings are not honored.

Expected behavior

After the user chooses a persistent allow option, Browser Use should either persist that decision or at least honor the existing ~/.codex/browser/config.toml approval settings. Repeated access to the same origin should not show the same approval popup again.

Local diagnosis

In the affected Browser Use node context, this probe showed that nodeRepl.config was missing:

{
  hasConfig: !!nodeRepl.config,
  readTomlType: typeof nodeRepl.config?.readToml,
  readType: typeof nodeRepl.config?.read,
  readRequirementsType: typeof nodeRepl.config?.readRequirements,
}

Result:

{
  "hasConfig": false,
  "readTomlType": "undefined",
  "readType": "undefined",
  "readRequirementsType": "undefined"
}

The bundled Browser Use runtime appears to call nodeRepl.config.readToml("browser/config.toml") before deciding whether access_browser_origin, upload, download, or history approval is required. When nodeRepl.config is missing, that config path is skipped or falls through, so Browser Use elicits again.

A current-session compatibility bridge that exposed nodeRepl.config.readToml, writeToml, read, and readRequirements from ~/.codex fixed the repeated local-origin prompt in the same session. After installing that bridge, repeated navigation to http://127.0.0.1:8767/index.html and query variants loaded without the origin approval popup.

Additional finding

The cached Browser/Chrome compatibility shim attempted to set __codexBrowserUseElicitationGuardUnavailable on a non-extensible nodeRepl object. That can abort runtime setup before a config bridge has a chance to work:

Cannot define property __codexBrowserUseElicitationGuardUnavailable, object is not extensible

A safe catch around that marker write also fixed local setup in the current session.

Suggested fix direction

  • Ensure the privileged Browser/Chrome runtime always exposes nodeRepl.config in Browser Use node contexts, or have Browser Use fall back to reading ~/.codex/browser/config.toml directly when that object is unavailable.
  • Treat non-extensible nodeRepl objects as normal: failure to set optional guard/debug marker properties should not abort Browser Use setup.
  • Add regression coverage for access_browser_origin and file-transfer approval checks when browser config says never_ask or when [origins] / [uploads] already allow the requested origin.

Related issues / context

This seems related to recent Browser Use state/config instability, but I did not find an exact public issue for repeated access_browser_origin prompts after persistent allow. Potentially adjacent: Browser Use backend/cache instability and approval settings not being honored after app/plugin updates.

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbrowserbugSomething isn't workingconfigIssues involving config.toml, config keys, config merging, or config updates

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions