Skip to content

Chrome plugin opens pages but page control and screenshots time out after navigation #22794

@heartInsert

Description

@heartInsert

What version of the Codex App are you using?

Codex desktop app 26.513.20950 (CFBundleVersion 2816).

Bundled Chrome plugin observed locally:

  • plugin path: /Users/mac/.codex/plugins/cache/openai-bundled/chrome/0.1.7
  • plugin version: chrome@0.1.7
  • Codex Chrome Extension ID: hehggadaopoacecdllhhajmbjkdcmajg
  • Codex Chrome Extension version: 1.1.4_0

What platform is your computer?

macOS 26.4.1 (25E253) on Apple Silicon (arm64).

Chrome:

  • Google Chrome 148.0.7778.97
  • selected Chrome profile reported by the browser backend: Jing

What issue are you seeing?

The bundled Chrome plugin can now connect to the extension backend and open pages, but page-level control still hangs for common interactions.

This looks like a follow-up / next-stage failure after issues such as #21681:

  • setupBrowserRuntime({ globals }) succeeds.
  • agent.browsers.get("extension") succeeds.
  • browser.user.openTabs() succeeds.
  • browser.tabs.new() succeeds.
  • tab.goto("https://www.baidu.com/") succeeds and tab.title() returns 百度一下,你就知道.
  • tab.goto("https://www.google.com/") succeeds and tab.title() returns Google.
  • But Playwright locator actions and screenshot calls against those pages time out.

Expected behavior

After the Chrome plugin opens Google or Baidu, Codex should be able to:

  • locate the search input,
  • type a simple query,
  • press Enter,
  • wait for the search results URL,
  • optionally take a screenshot for visual verification.

Actual behavior

The browser connection and initial navigation work, but page control hangs:

Baidu

Opening Baidu worked:

var baiduTestTab = await browser.tabs.new();
await baiduTestTab.goto("https://www.baidu.com/");
await baiduTestTab.title();
// "百度一下,你就知道"
await baiduTestTab.url();
// "https://www.baidu.com/"

Then a normal search-box interaction timed out and reset the Node REPL kernel:

var searchLocator = baiduTestTab.playwright.locator('textarea[name="wd"], input[name="wd"]');
await searchLocator.fill("Codex Chrome plugin test");
await searchLocator.press("Enter");
await baiduTestTab.playwright.waitForURL("**/s?**", {
  timeoutMs: 20000,
  waitUntil: "domcontentloaded",
});

After reconnecting, even a bounded probe around the locator count did not complete within 5 seconds:

var countProbe = await Promise.race([
  tab.playwright.locator('textarea[name="wd"], input[name="wd"]').count()
    .then(value => ({ ok: true, value })),
  new Promise(resolve => setTimeout(
    () => resolve({ ok: false, timeout: true, label: "search count" }),
    5000,
  )),
]);
// { "ok": false, "timeout": true, "label": "search count" }

tab.title() still worked, but tab.screenshot({ fullPage: false }) timed out under the same style of bounded probe.

Google

Opening Google worked and left a controlled tab at Google:

{
  "title": "Google",
  "url": "www.google.com/?..."
}

But trying to type into textarea[name="q"], input[name="q"] and submit a query timed out after 70 seconds and reset the Node REPL kernel. A later direct goto("https://www.google.com/search?q=OpenAI+Codex+browser+automation+test") also timed out after 45 seconds; after reconnecting, the controlled tab was still on the Google home page.

Local checks that pass

chrome-is-running.js --json reports Chrome running.

check-extension-installed.js --json reports:

{
  "extensionId": "hehggadaopoacecdllhhajmbjkdcmajg",
  "profilePath": "/Users/mac/Library/Application Support/Google/Chrome/Default",
  "installed": true,
  "registered": true,
  "enabled": true,
  "disabled": false,
  "versions": ["1.1.4_0"]
}

check-native-host-manifest.js --json reports the native host manifest exists and is correct for com.openai.codexextension.

Why this seems distinct from the earlier discovery hang

This is not the original "Chrome backend cannot be discovered at all" failure. In this repro:

  • backend discovery succeeds,
  • openTabs() succeeds,
  • controlled tabs can be created,
  • top-level navigation and title() / url() can work.

The failure appears lower down in page control / Playwright / screenshot plumbing after navigation.

Suggested fix direction

  • Add bounded timeouts and clearer diagnostics around page-level commands such as locator resolution, fill/press, screenshot, and navigation-to-results waits.
  • Distinguish extension backend discovery success from per-tab page-control readiness.
  • Include the target URL, command type, and backend type in timeout diagnostics so users can tell whether the extension bridge, page runtime, Playwright wrapper, or site load is stuck.

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbrowserbugSomething isn't working

    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