Skip to content

Desktop CUA browser automation fails: authenticated_fetch exceeds Statsig policy timeout and returns after NetworkCore timeout #44761

Open

Description

@shiki-sl

What version of the Codex App are you using (From “About Codex” dialog)?

26.903.61454

What subscription do you have?

ChatGPT Pro (5x usage)

What platform is your computer?

OS: Arch Linux Codex CLI: 0.154.0 ChatGPT Desktop / CUA bundle: Desktop browser component: 26.903.61454 Chrome extension: ID: hehggadaopoacecdllhhajmbjkdcmajg

What issue are you seeing?

Symptom

Desktop CUA browser automation can detect the Chrome extension instance successfully:

  • cua.listBrowsers() succeeds
  • cua.getBrowser() succeeds

However, browser tab operations fail during browser request-header policy initialization.

The failing operation:

browser.user.openTabs()

returns:

Unable to load browser request-header policy. Retry the browser command.

The Chrome extension itself remains usable from the ChatGPT sidebar.

Investigation summary

The issue does not appear to be caused by:

  • Chrome extension installation
  • Native Messaging manifest
  • stale chrome-native-hosts entries
  • approval permission settings
  • Desktop proxy startup arguments

The failure happens after browser discovery, during the authenticated fetch flow used for browser request-header policy initialization.

Observed behavior

The request appears to involve two timeout layers:

Statsig NetworkCore timeout:
~10 seconds

↓

authenticated_fetch / reqwest client timeout:
~30 seconds

Observed examples:

Request A:

t=0
authenticated_fetch starts

t=10s
NetworkCore timeout

t=30s
bridge fulfilled with HTTP 200

Request B:

t=0
authenticated_fetch starts

t=10s
NetworkCore timeout

t=30s
bridge rejected

This suggests cancellation may not propagate from the JS layer to the underlying authenticated_fetch task.

Static investigation

Observed request path:

browser-service.mjs
|
runtime.fetch
|
globalThis.nodeRepl.fetch
|
authenticated_fetch message
|
JsRuntimeManager::handle_authenticated_fetch_request
|
Reqwest HTTP client

The embedded node_repl reports:

nodeRepl.fetch request failed

A 30-second timeout configuration exists during the HTTP client construction.

Questions

Could maintainers confirm:

  1. Is the 30-second reqwest timeout expected behavior for authenticated_fetch?
  2. Should Statsig NetworkCore cancellation abort the underlying authenticated_fetch request?
  3. Is there a debug mode to preserve the original reqwest error instead of converting it into:

nodeRepl.fetch request failed

  1. Has this behavior changed in newer Desktop CUA bundles?

Additional notes

No source files were modified.

All diagnostics were performed with read-only inspection.

The issue reproduces with a single:

browser.user.openTabs()

call.

What steps can reproduce the bug?

Steps to reproduce

  1. Start Codex Desktop with Desktop CUA browser automation enabled.
  2. Ensure Chrome extension bridge is available.
  3. Verify browser discovery:

cua.listBrowsers()
cua.getBrowser()

Both succeed.

  1. Execute:

browser.user.openTabs()

  1. Observe the failure:

Unable to load browser request-header policy. Retry the browser command.

Expected behavior

browser.user.openTabs() should return the current browser tabs successfully.

Actual behavior

The request waits for the authenticated_fetch timeout chain and eventually fails after the browser policy initialization timeout.

What is the expected behavior?

No response

Additional information

No response

Activity

  1. added
    appIssues related to the Codex desktop app
    on Sep 11, 2026
  2. added
    bugSomething isn't working
    connectivityIssues involving networking or endpoint connectivity problems (disconnections)
    on Sep 11, 2026
  3. chris93007-wq commented on Sep 16, 2026

    @chris93007-wq

    +1

  4. lcawliet commented on Sep 17, 2026

    @lcawliet

    Cross-referencing a measurement that may be relevant to the timeout/cancellation analysis here.

    Reproduced on Windows with the same failure (Codex Desktop 26.908.9136, browser plugin 26.908.70816, Edge extension 1.26.901.11451):

    • The failing check is the codex_browser_use_agent_request_header gate in browser-service.mjs (_k()), invoked from the extension browser client's sendSessionRequest() — i.e. before any tab operation, matching browser.user.openTabs() failing first.
    • Replaying the SDK's own cold-start initialize request from the bundled Node runtime (sinceTime: 0, synthetic userID, no page/tab data) returns HTTP 200 with a 4,774,624-byte body — dynamic_configs 1128 entries ≈ 95%, layer_configs 162, feature_gates 398, is_delta:false.
    • Small responses through the same privileged authenticated_fetch path succeed (e.g. https://chatgpt.com/backend-api/aura/identity), so auth and the IPC bridge work; the only difference we can find between the working and failing call is the response size.
    • node_repl.exe contains the string nodeRepl.fetch response is too large next to nodeRepl.fetch request failed / nodeRepl.fetch response read failed, which looks like a response-size cap on this bridge.

    So the ~30 s wall time you measured may be the bridge reading/attempting a multi-megabyte body rather than a pure timeout, and the Statsig ~10 s NetworkCore timeout would fire while that transfer is still in flight. A size limit on the bridge would also explain why cancellation doesn't appear to propagate.

    Full measurement, environment and acceptance criteria: #46129

  5. ztzwj2020 commented on Oct 8, 2026

    @ztzwj2020

    Adding a Windows reproduction on 2026-10-08. Browser discovery succeeds and the Chrome extension sidebar works, but tab enumeration still fails before navigating to any target website.

    Environment:

    • Windows 10.
    • OpenAI.Codex Windows package manifest version: 26.1002.7124.0 (package version, not an independently verified About-dialog app version).
    • Chrome: 154.0.8037.98.
    • Installed ChatGPT extension files report 1.26.901.11451. The inspected on-disk profile directory has not been independently matched to the active browser profile.

    Observed failures:

    1. Initial tab access returned: "Unable to load browser request-header policy. Retry the browser command."
    2. A fresh task session discovered the extension browser but returned "nodeRepl.fetch request failed" during tab enumeration.
    3. After a normal desktop-app restart, a single cua.listTabs call failed again with "nodeRepl.fetch request failed", accompanied by a Statsig initialization network error, after approximately 22.3 seconds. Last reproduction was around 11:48 UTC on 2026-10-08. The new desktop process start time was verified as 11:46:13 UTC.

    Checks already performed:

    • Authorized local read-only file execution works.
    • Chrome and the official native-messaging host process are running; the host manifest and executable exist.
    • The configured local system proxy endpoint is listening and matches the Windows/WinHTTP configuration. respect_system_proxy is enabled. We have NOT established that the failing browser request uses this route or that its upstream connection is healthy.
    • A fresh session and a normal restart did not restore tab access.
    • The app-update tool separately returned "MCP error -32000: Codex app tool request failed". We do not know whether that shares the same cause.

    No runtime patches, policy bypasses, credential/Cookie extraction, or security-setting changes were used. We have not established a timeout, response-size, authentication, or proxy root cause.

    Is there a supported diagnostic that preserves the underlying error for this browser request, or a confirmed fixed desktop/browser-component version? Please advise which narrowly scoped, redacted diagnostics would help. An in-app feedback report has also been submitted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    LinuxappIssues related to the Codex desktop appbrowserbugSomething isn't workingconnectivityIssues involving networking or endpoint connectivity problems (disconnections)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions