Chrome plugin discovery still times out after socket cleanup; extension-host socket does not respond to getInfo
What version of the Codex App are you using?
Codex desktop app 26.506.21252.
Bundled Chrome plugin observed locally:
- plugin path:
/Users/julian/.codex/plugins/cache/openai-bundled/chrome/0.1.7 - Codex Chrome Extension ID:
hehggadaopoacecdllhhajmbjkdcmajg - Codex Chrome Extension version:
1.1.4_0
What platform is your computer?
macOS on Apple Silicon.
Chrome:
- Google Chrome
147.0.7727.138 - profile:
Default
What issue are you seeing?
The new bundled Chrome plugin cannot complete browser backend discovery. Calls such as setupAtlasRuntime({ globals }), agent.browsers.get("extension"), and browser.user.openTabs() time out even after:
- reinstalling/re-enabling the Chrome plugin / Codex Chrome Extension,
- restarting Codex,
- restarting Chrome,
- deleting unrelated
/tmp/codex-browser-use/*.socksocket pathnames, - cold-starting Chrome from a clean
/tmp/codex-browser-usedirectory.
This appears related to #21672, but this report is for the next failure mode after applying that workaround: even when /tmp/codex-browser-use contains only the Chrome extension-host socket, discovery still times out.
Expected behavior
With Chrome running and the Codex Chrome Extension/native host checks passing, the Chrome plugin should discover the extension backend and browser.user.openTabs() should return the open Chrome tabs.
Actual behavior
setupAtlasRuntime({ globals }) / Chrome backend discovery does not return before the Node REPL tool timeout. The browser task never reaches any page navigation.
Example minimal call that times out:
const { setupAtlasRuntime } = await import("/Users/julian/.codex/plugins/cache/openai-bundled/chrome/0.1.7/scripts/browser-client.mjs");
await setupAtlasRuntime({ globals: globalThis });
globalThis.browser = await agent.browsers.get("extension");
await browser.nameSession("Chrome health check");
const tabs = await browser.user.openTabs();
Local checks that pass
check-extension-installed.js --json reports:
{
"extensionId": "hehggadaopoacecdllhhajmbjkdcmajg",
"profilePath": "/Users/julian/Library/Application Support/Google/Chrome/Default",
"installed": true,
"registered": true,
"enabled": true,
"disabled": false,
"versions": ["1.1.4_0"],
"exitCode": 0
}
check-native-host-manifest.js --json reports:
{
"manifestPath": "/Users/julian/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.openai.codexextension.json",
"expectedHostName": "com.openai.codexextension",
"actualHostName": "com.openai.codexextension",
"expectedExtensionId": "hehggadaopoacecdllhhajmbjkdcmajg",
"allowedOrigins": ["chrome-extension://hehggadaopoacecdllhhajmbjkdcmajg/"],
"exists": true,
"nameMatches": true,
"hasExpectedOrigin": true,
"correct": true,
"problem": null
}
chrome-is-running.js --json reports Chrome running.
Socket state after applying #21672 workaround
After deleting non-Chrome socket pathnames and then doing a full Chrome cold restart, /tmp/codex-browser-use contained only one socket:
/tmp/codex-browser-use/692dd4b5-ca63-45f1-9caa-27d757a02e71.sock
lsof showed it was held by the Chrome extension-host process:
COMMAND PID USER FD TYPE NAME
extension 65436 julian 3u unix /tmp/codex-browser-use/692dd4b5-ca63-45f1-9caa-27d757a02e71.sock
Chrome and the host were both fresh processes:
Google Chrome PID 65402, started Fri May 8 14:51:22 2026
extension-host PID 65436, started Fri May 8 14:51:26 2026
The visible socket directory was clean:
total 0
drwxrwxrwt@ 3 julian wheel 96 May 8 14:51 .
srw-------@ 1 julian wheel 0 May 8 14:51 692dd4b5-ca63-45f1-9caa-27d757a02e71.sock
Even in this state, setupAtlasRuntime({ globals }) still timed out.
Additional observation
A direct local framed JSON-RPC probe to the only extension-host socket connected but did not receive a response to ping/getInfo within a short timeout. This was only used as a diagnostic to identify the failing layer; the normal Chrome plugin path also times out in the same state.
Why this seems distinct from #21672
#21672 describes backend discovery hanging when unrelated browser-use sockets exist. That did happen initially on this machine: /tmp/codex-browser-use contained around 20 socket pathnames, and only one was owned by extension-host.
However, after removing all non-extension-host sockets and then cold-starting Chrome so only the new extension-host socket existed, the Chrome plugin still timed out. So there may be a second issue where the Chrome extension-host process is created and owns a socket but does not respond to the browser backend getInfo discovery request.
Suggested fix direction
- Add bounded per-candidate timeouts around
Cc.create(...)andgetInfo()during browser backend discovery. - Emit diagnostics that identify which socket path/backend type timed out.
- For the Chrome path, either filter to the extension backend before waiting on all candidates or make non-responsive extension-host discovery fail with a specific error instead of causing a generic setup timeout.
5 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Codex 26.506.21252 / chrome@openai-bundled 0.1.7 / Codex Chrome Extension 1.1.4_0,extension installed/enabled, native messaging manifest correct, extension-host launched, but setupAtlasRuntime times out before listing tabs.
Another affected environment here.
Environment:
26.506.31421openai-bundled/chrome 0.1.7147.0.7727.1381.1.4_0hehggadaopoacecdllhhajmbjkdcmajgDefaultWhat I verified:
chrome-is-running.js --checkpasses.check-extension-installed.js --jsonreports installed/registered/enabled.check-native-host-manifest.js --jsonreports the native host manifest is correct.extension-hoststarts and owns a socket under/tmp/codex-browser-use.Failure:
@Chromesetup still times out before tab listing.setupAtlasRuntime({ globals: globalThis })/browser.user.openTabs().extension-host/tmp/codex-browser-use/*.sockpathnames out of the directory and retrying with only the Chromeextension-hostsocket visible. It still timed out, matching this issue's second-stage failure mode.No webpage-specific data was involved; this reproduces before any page interaction.
Another affected environment here with a newer Chrome/Codex setup.
Environment:
26.4.1/ Apple Silicon26.506.31421(CFBundleVersion 2620)0.130.0-alpha.5openai-bundled/chrome 0.1.7148.0.7778.971.1.4_0hehggadaopoacecdllhhajmbjkdcmajgDefaultChecks that pass:
chrome-is-running.js --jsonreports Chrome running.check-extension-installed.js --jsonreports installed/registered/enabled.check-native-host-manifest.js --jsonreports the native host manifest is correct.Connected.extension-hoststarts and owns a socket under/tmp/codex-browser-use.Failure:
setupAtlasRuntime({ globals: globalThis })/agent.browsers.get("extension")still times out before tab listing.pingandgetInfo.extension-hostsockets out of/tmp/codex-browser-use, then restartingextension-hostso only the Chrome socket remained visible. It still timed out.Current socket evidence:
/tmp/codex-browser-use/8b87a293-a7d1-4856-b9e2-faddc5383a73.sockextension-hostPID2687019414This looks like the same second-stage failure described here: extension/native-host are connected, but the extension-host socket does not respond to backend discovery requests.
Adding a comparison datapoint from a current macOS repro, because this issue appears to be the next-stage failure after #21672.
In my repro, the install/native-host checks all passed and
@Chrometimed out while/tmp/codex-browser-usecontained oneextension-hostsocket plus multiple Codex-owned Browser Use/IAB socket pathnames.Unlike the second-stage failure described here, moving the non-
extension-hostsocket pathnames aside fixed the Chrome backend immediately: the samebrowser.user.openTabs()call returned tabs.So there seem to be at least two related failure modes:
getInfo/ setup still does not respond. That matches this issue.Both would benefit from bounded per-socket
getInfotimeouts and clearer diagnostics that name the socket/backend being waited on.