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
- 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" ]
- Start a local page, for example:
python3.12 -m http.server 8767 --bind 127.0.0.1
- Use Browser Use to navigate to
http://127.0.0.1:8767/index.html.
- In the approval popup, choose the persistent allow option (
Always allow / 始终允许访问此网站).
- 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.
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.tomlalready says approvals should not be requested.I reproduced this on macOS with Codex Desktop
26.519.31651(CFBundleVersion3017), Browser bundled plugin26.519.22136, and Chrome bundled plugin0.1.7.Repro
http://127.0.0.1:8767/index.html.Always allow/始终允许访问此网站).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.tomlfor the new origin, and existingapproval_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.tomlapproval 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.configwas missing: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 whetheraccess_browser_origin, upload, download, or history approval is required. WhennodeRepl.configis 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, andreadRequirementsfrom~/.codexfixed the repeated local-origin prompt in the same session. After installing that bridge, repeated navigation tohttp://127.0.0.1:8767/index.htmland query variants loaded without the origin approval popup.Additional finding
The cached Browser/Chrome compatibility shim attempted to set
__codexBrowserUseElicitationGuardUnavailableon a non-extensiblenodeReplobject. That can abort runtime setup before a config bridge has a chance to work:A safe catch around that marker write also fixed local setup in the current session.
Suggested fix direction
nodeRepl.configin Browser Use node contexts, or have Browser Use fall back to reading~/.codex/browser/config.tomldirectly when that object is unavailable.nodeReplobjects as normal: failure to set optional guard/debug marker properties should not abort Browser Use setup.access_browser_originand file-transfer approval checks when browser config saysnever_askor 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_originprompts after persistent allow. Potentially adjacent: Browser Use backend/cache instability and approval settings not being honored after app/plugin updates.