Skip to content

Codex Desktop Chrome plugin hangs during extension backend bootstrap/openTabs on Windows #21765

Open

Description

@squarezue

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

26.506.21252

What subscription do you have?

CHATGPT PLUS

What platform is your computer?

10.0.26100.1 x64 Windows 10 Pro 64-bit

What issue are you seeing?

The Codex Desktop Chrome plugin hangs while trying to establish the Chrome extension backend session.

Chrome is running, the Codex Chrome Extension is installed and enabled, and the native messaging host checks pass. However, when Codex tries to initialize browser automation or read open tabs, the Node REPL execution hangs until it times out.

Observed error:

js execution timed out; kernel reset, rerun your request
This happens before any navigation or page interaction. I do not get far enough to call browser.tabs.new(), browser.tabs.list(), or tab.goto(...).

Environment details:

OS: Windows 10 Pro, 64-bit
Windows version: 2009
OS HAL: 10.0.26100.1
Shell: PowerShell
Codex CLI: codex-cli 0.129.0-alpha.15
Chrome plugin cache path: C:\Users\Administrator\.codex\plugins\cache\openai-bundled\chrome\0.1.7
Google Chrome: 147.0.7727.102
Chrome path: C:\Program Files\Google\Chrome\Application\chrome.exe
Default browser: Microsoft Edge (MSEdgeHTM)
Codex Chrome Extension ID: hehggadaopoacecdllhhajmbjkdcmajg
Codex Chrome Extension version: 1.1.4_0
Chrome profile checked by plugin scripts: C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default

### What steps can reproduce the bug?

```markdown
1. Install/enable the Chrome plugin in Codex Desktop.
2. Install/enable the Codex Chrome Extension in Google Chrome.
3. Confirm that Google Chrome is running.
4. Run the bundled plugin checks from:

```powershell
cd C:\Users\Administrator\.codex\plugins\cache\openai-bundled\chrome\0.1.7

node scripts/chrome-is-running.js --json
node scripts/check-extension-installed.js --json
node scripts/check-native-host-manifest.js --json
The checks report Chrome running, extension installed/enabled, and native host configuration correct.

In the Node REPL tool, run:
const pluginRoot = "C:/Users/Administrator/.codex/plugins/cache/openai-bundled/chrome/0.1.7";

if (!globalThis.agent) {
  const { setupAtlasRuntime } = await import(`${pluginRoot}/scripts/browser-client.mjs`);
  await setupAtlasRuntime({ globals: globalThis });
}

if (!globalThis.browser) {
  globalThis.browser = await agent.browsers.get("extension");
}

await browser.nameSession("Chrome access test");
const tabs = await browser.user.openTabs();
The command hangs until the Node REPL tool times out:
js execution timed out; kernel reset, rerun your request

**What is the expected behavior?**

```markdown
The Chrome plugin should establish the extension backend session and return the currently open Chrome tabs via:

```js
const tabs = await browser.user.openTabs();
After that, normal Chrome browser automation should be available.


**Additional information**

```markdown
Bundled setup checks pass.

`node scripts/chrome-is-running.js --json` reports:

```json
{
  "platform": "win32",
  "running": true
}
node scripts/check-extension-installed.js --json reports:

{
  "extensionId": "hehggadaopoacecdllhhajmbjkdcmajg",
  "preferencesPath": "C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Secure Preferences",
  "profilePath": "C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data\\Default",
  "installed": true,
  "registered": true,
  "enabled": true,
  "disabled": false,
  "exitCode": 0,
  "versions": ["1.1.4_0"]
}
node scripts/check-native-host-manifest.js --json reports:

{
  "manifestPath": "C:\\Users\\Administrator\\AppData\\Local\\OpenAI\\extension\\com.openai.codexextension.json",
  "registryKey": "HKCU\\Software\\Google\\Chrome\\NativeMessagingHosts\\com.openai.codexextension",
  "registryManifestPath": "C:\\Users\\Administrator\\AppData\\Local\\OpenAI\\extension\\com.openai.codexextension.json",
  "expectedHostName": "com.openai.codexextension",
  "actualHostName": "com.openai.codexextension",
  "expectedExtensionId": "hehggadaopoacecdllhhajmbjkdcmajg",
  "expectedOrigin": "chrome-extension://hehggadaopoacecdllhhajmbjkdcmajg/",
  "allowedOrigins": [
    "chrome-extension://hehggadaopoacecdllhhajmbjkdcmajg/"
  ],
  "exists": true,
  "nameMatches": true,
  "hasExpectedOrigin": true,
  "registryMatchesManifestPath": true,
  "correct": true,
  "problem": null
}

### What is the expected behavior?

_No response_

### Additional information

_No response_

Activity

  1. added
    appIssues related to the Codex desktop app
    on May 8, 2026
  2. added
    bugSomething isn't working
    windows-osIssues related to Codex on Windows systems
    skillsIssues related to skills
    on May 8, 2026
  3. jholmes033169 commented on May 8, 2026

    @jholmes033169

    Same issue, though I got it to install once, but it would not connect to the browser extension. I installed it and now it will not install at all (get the error: Failed to install plugin). Correlation id: b70a9231-7c08-4fa2-83b7-28cfeafe8a8d

  4. wissenz commented on May 8, 2026

    @wissenz

    I’m seeing the same issue on Windows.

    Official @chrome wrapper hangs at setupAtlasRuntime and times out, but the underlying Chrome extension pipe works.

    Evidence:

    • check-native-host-manifest.js returns correct: true
    • Codex Chrome Extension installed/enabled: 1.1.4_0
    • Direct pipe getInfo returns Chrome / extension / 1.1.4
    • Direct low-level JSON-RPC calls work:
      createTab -> attach -> executeCdp Page.enable -> executeCdp Page.navigate
    • Successfully opened:
      https://www.youtube.com/
      https://cn.investing.com/
    • But official setupAtlasRuntime({ globals: globalThis }) still times out before browser.user.openTabs()

    Environment:

    • Windows
    • Codex desktop app
    • Chrome plugin openai-bundled/chrome 0.1.7
    • Chrome version observed: 147.0.7727.138
  5. yowen521 commented on May 26, 2026

    @yowen521

    I hit a related Windows failure mode where the Chrome extension/native-host side was healthy, but Codex Desktop still had no usable @chrome control entry.

    Environment observed:

    • Windows
    • Codex Desktop app package: 26.519.5221.0
    • Codex CLI/doctor: 0.133.0-alpha.1
    • Chrome plugin cache: openai-bundled/chrome/26.519.41501
    • Google Chrome: 148.0.7778.179
    • Codex Chrome Extension: 1.1.5_0
    • Extension ID: hehggadaopoacecdllhhajmbjkdcmajg

    Chrome-side checks were all healthy:

    chrome-is-running.js --json => running: true
    check-extension-installed.js --json => installed: true, enabled: true
    check-native-host-manifest.js --json => correct: true
    

    But Codex-side routing was missing:

    codex mcp get node_repl
    Error: No MCP server named 'node_repl' found.
    

    In another partial state, node_repl existed but browser-client.mjs was not trusted, producing:

    privileged native pipe bridge is not available; browser-client is not trusted
    

    Repairing the Codex-side MCP entry and trusting the bundled Chrome browser-client hash fixed it:

    $codex = "$env:LOCALAPPDATA\OpenAI\Codex\bin\codex.exe"
    $nodeRepl = "$env:LOCALAPPDATA\OpenAI\Codex\bin\node_repl.exe"
    $node = "$env:LOCALAPPDATA\OpenAI\Codex\bin\node.exe"
    $browserClient = "$env:USERPROFILE\.codex\plugins\cache\openai-bundled\chrome\26.519.41501\scripts\browser-client.mjs"
    $hash = (Get-FileHash -Algorithm SHA256 -LiteralPath $browserClient).Hash.ToLowerInvariant()
    
    & $codex mcp remove node_repl 2>$null | Out-Null
    & $codex mcp add node_repl --env "NODE_REPL_NODE_PATH=$node" --env "NODE_REPL_TRUSTED_BROWSER_CLIENT_SHA256S=$hash" -- $nodeRepl
    & $codex mcp get node_repl

    One extra step was required: restart the Codex Desktop app-server / start a fresh Codex turn after writing config. Before the restart, the UI still behaved as if no Chrome control entry existed.

    Verification after repair:

    const { setupBrowserRuntime } = await import("file:///C:/Users/<user>/.codex/plugins/cache/openai-bundled/chrome/26.519.41501/scripts/browser-client.mjs");
    await setupBrowserRuntime({ globals: globalThis });
    globalThis.browser = await agent.browsers.get("extension");
    const tabs = await browser.user.openTabs();
    nodeRepl.write("CHROME_OK tabs=" + tabs.length);

    Result:

    CHROME_OK tabs=1
    

    So there seem to be at least two distinct but user-visible-similar states:

    1. Chrome extension/native host is connected, but browser backend initialization hangs.
    2. Chrome extension/native host is connected, but the active Codex app-server never exposes the node_repl/browser-client control path to the turn.

    Suggested product fixes:

    • Chrome plugin install/enable should ensure node_repl exists.
    • Chrome plugin install/update should refresh NODE_REPL_TRUSTED_BROWSER_CLIENT_SHA256S for the bundled browser-client.mjs.
    • Desktop should prompt/reload app-server after plugin repair.
    • The UI should distinguish extension/native-host Connected from "current Codex turn can use Chrome control".
  6. jholmes033169 commented on May 27, 2026

    @jholmes033169
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

    appIssues related to the Codex desktop appbrowserbugSomething isn't workingskillsIssues related to skillswindows-osIssues related to Codex on Windows systems

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions