[Chrome plugin] Intermittent 3s CDP Runtime.evaluate timeout after successful navigation
What version of the Codex App are you using (From “About Codex” dialog)?
26.803.81509 (build 6415)
What subscription do you have?
ChatGPT company workspace (exact plan label not shown)
What platform is your computer?
Darwin 25.2.0 arm64 arm
What issue are you seeing?
The Chrome extension backend is connected and navigation completes, but DOM reads intermittently fail with:
Error: Timed out after 3000ms waiting for CDP command Runtime.evaluate.
This occurs on a loaded authenticated single-page app (the private URL is omitted). The page URL and title are available after navigation, and a fresh tab can succeed immediately afterward. In workflows that require verifying page state before a write, this creates false failures because the action must be skipped when DOM state is unknown.
Latest-version reproduction on 2026-08-11:
- Codex App: 26.803.81509 (build 6415)
- Browser plugin: 26.803.81509
- Google Chrome: 151.0.7922.76
- ChatGPT Chrome extension: 1.2.27236.6274
- macOS arm64
Four fresh-tab runs against the same already-authenticated page produced:
- navigation: 4/4 successful
- page title: 4/4 available
- domSnapshot(): 1/4 failed with the exact Runtime.evaluate 3000ms timeout
- the next three fresh-tab runs succeeded (DOM length 12115)
A separate targeted read requested timeoutMs: 10000, but still failed after about 3.2s with:
Timed out after 3000ms waiting for selector body: Playwright selector deadline exceeded
This suggests an internal 3s deadline can override the caller-provided timeout.
What steps can reproduce the bug?
- Start the Codex App and connect the official Chrome extension.
- Select the connected Chrome backend.
- Create a fresh tab and navigate to an authenticated single-page app.
- Wait briefly for the page to render.
- Read the page DOM.
- Repeat with fresh tabs.
Minimal browser-client sequence:
const tab = await chrome.tabs.new();
await tab.goto(REDACTED_AUTHENTICATED_SPA_URL);
await tab.playwright.waitForTimeout(1200);
await tab.playwright.domSnapshot();
Observed on the latest version: one of four fresh-tab runs failed with Timed out after 3000ms waiting for CDP command Runtime.evaluate. Navigation itself succeeded in every run.
What is the expected behavior?
DOM reads should reliably succeed after successful navigation, or fail with a recoverable and correctly classified tab/renderer error.
The caller-provided timeout should be honored. A tab-level CDP timeout should not imply that the whole Chrome browser binding is disconnected.
A safe recovery contract would be:
- discard the stale agent-created tab and retry once with a fresh tab on the existing browser binding;
- reinitialize the browser binding only for an explicit browser-disconnected or failed browser-health signal;
- after a write/click timeout, treat the effect as unknown and re-read authoritative state before any retry, so the action is not duplicated.
Additional information
Public-page controls in the same environment (example.com and baidu.com, six fresh-tab runs) succeeded, so this is intermittent and may be more visible on authenticated or script-heavy pages rather than a general network outage.
Suggested diagnostics: log the browser binding id, tab id, CDP method, elapsed time, configured timeout, and whether the failure was classified as tab-level, renderer-level, or browser-disconnected.
I searched existing openai/codex issues. The existing reports I found focus on extension discovery/handshake timeouts or Chrome crashes during domSnapshot; I did not find an issue for this connected-and-navigated Runtime.evaluate 3s timeout.
1 Comment
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action