Chrome plugin connection fails with missing-code-signing-identity
What version of the Codex App are you using (From “About Codex” dialog)?
26.623.30605 Bundled CLI: codex-cli 0.142.2
What subscription do you have?
Enterprise
What platform is your computer?
25.5.0 arm64 arm
What issue are you seeing?
Chrome plugin connection fails even though the extension and native host appear
installed and running.
Feedback ID:
019f016e-4394-7883-bbf4-2f8a4a1b0e7b
What I tried:
- Removed and re-added the Chrome plugin multiple times.
- Reinstalled/verified the Codex Chrome Extension.
- Restarted Chrome and Codex.
- Started a new Codex thread and retried @Chrome.
Observed behavior:
- Codex reports no available Chrome backend / cannot communicate with the Codex Chrome
Extension.
- Chrome opens a fresh tab, but Codex still cannot use Chrome.
Local checks:
- Chrome is running.
- Codex Chrome Extension hehggadaopoacecdllhhajmbjkdcmajg is installed and enabled in
Chrome profile Default.
- Native host manifest exists and points to the Codex for Chrome host:
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/
com.openai.codexextension.json
- Codex for Chrome native host process is running.
Relevant app log signal:
browser-use-native-pipe-server rejected socket peer reason=missing-code-signing-
identity
Relevant log path:
~/Library/Logs/com.openai.codex/2026/06/26/codex-desktop-887b1ca9-038a-4897-82e8-
9f38c57f348a-2778-t0-i1-005709-0.log
What steps can reproduce the bug?
Feedback ID: 019f016e-4394-7883-bbf4-2f8a4a1b0e7b
What is the expected behavior?
Codex should connect to the Codex Chrome Extension and control Chrome for the requested @Chrome task.
Additional information
Local checks show Chrome is running, the extension is installed and enabled, the native
host manifest exists, and the Codex for Chrome native host process is running.
The app log contains:
browser-use-native-pipe-server rejected socket peer reason=missing-code-signing-
identity
Log path:
~/Library/Logs/com.openai.codex/2026/06/26/codex-desktop-887b1ca9-038a-4897-82e8-
9f38c57f348a-2778-t0-i1-005709-0.log
6 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Also reproducible on:
019f114e-c19d-70c2-94ab-f8d9f4266761Observed:
Browser is not available: extensionagent.browsers.list()returns[]``
text
``browser-use native pipe rejected socket peer
reason=missing-code-signing-identity
Verified:
Codex.appis accepted as Notarized Developer ID.I have this same issue
This is a known upstream issue, not a Security Civilization repo issue and not something reinstalling the Codex CLI fixes. Matching open issues:
Current local versions:
Get this fixed!
Confirmed on macOS 15.7.7 (Intel x86_64) — ChatGPT app 26.707.41301, bundled Chrome plugin 26.707.41301, standalone codex-cli 0.144.1, Chrome 149.0.7827.201, extension 1.2.27203.26575. Every
agent.browsers.get("extension")attempt from a terminal session correlates 1:1 with abrowser-use native pipe rejected socket peer reason=missing-code-signing-identitywarning in the desktop app log, while all of Codex's own diagnostics (extension installed/enabled, native host manifest, host process,chrome-native-hosts-v2.jsonpresence) report healthy.I dug into the authorizer (
ChatGPT.app/Contents/Resources/native/browser-use-peer-authorization.node). It resolves the peer viagetsockopt(LOCAL_PEERTOKEN)→SecCodeCopyGuestWithAttributes→SecCodeCopySigningInformation, hardcodes TeamIdentifier2DC432GLL2plus a signing-identifier allowlist (codex,com.openai.codex{,.agent,.alpha,.beta,.dev,.nightly,.runtime},node,node_repl), and — per its strings (peer,peer parent,peer grandparent,failed to read … code signing identity) — it validates the process ancestry chain, not just the peer itself.Decisive experiment: dialing the live pipe with OpenAI's own signed Node binary (
/Applications/ChatGPT.app/Contents/Resources/cua_node/bin/node, Identifiernode, Team2DC432GLL2) launched from bash gets rejected with the exact same reason (new log line appears immediately). The only non-OpenAI element in that chain was the shell. A terminal-launched CLI always has the user's shell (an Apple platform binary with no OpenAI TeamIdentifier) within two ancestry hops, so authorization can never pass from a terminal — which matches the symptom pattern across these reports: desktop app flows work, terminal/CLI/VS Code sessions are rejected.This also explains why reinstalling the plugin never helps: the rejection happens inside the app's pipe server, before any plugin code is involved.
Suggested fix directions: stop walking the ancestry once an allowlisted OpenAI-signed process is found; or treat Apple platform binaries (shells/terminals) as neutral ancestry; or have the connection dialed by a process whose 2-hop ancestry stays within OpenAI-signed processes (e.g. the sandboxed REPL kernel).
Still reproducible on a newer environment:
26.707.62119(build5211)26.5.2(25F84), Apple Silicon150.0.7871.1141.2.27203.26575Observed:
agent.browsers.get("extension")reportsBrowser is not available: extension.browser-use native pipe rejected socket peer reason=missing-code-signing-identityin the desktop log.Verified locally:
Defaultprofile.Developer ID Application: OpenAI OpCo, LLC (2DC432GLL2), and has a valid signature.ChatGPT.app.ChatGPT.apppasses strict deep code-signature verification.This confirms the issue remains present in the
26.707.62119release and Chrome 150; it is not resolved by the newer extension/native-host build.Additional data point: the "alias the app-bundled codex binary" workaround does NOT work on build 26.707.72221 -- addon-level verdicts included
Environment:
Symptom matches this issue exactly: agent.browsers.get("extension") -> Browser is not available: extension, agent.browsers.list() -> [], while every plugin self-check passes. The desktop app log records a rejection at the exact minute of every attempt:
warning [browser-use-native-pipe-server] browser-use native pipe rejected socket peer reason=missing-code-signing-identity
Findings beyond what's already in the thread:
{"authorized":false,"teamId":"2DC432GLL2","signingIdentifier":"node","reason":"missing-code-signing-identity"}
The peer's identity was read successfully (it's in the verdict), so the "missing" identity is an ancestor's. Both values of the boolean flag give the same result.
Suggested direction: terminate the ancestry walk at the first allowlisted OpenAI-signed ancestor (the codex/node_repl chain itself proves provenance), or accept Apple platform binaries (shells, login) as neutral links. As-is, the check structurally excludes every terminal-launched CLI session regardless of how codex was installed.
Also confirming for other readers: reinstalling the app/plugin/extension does nothing (the rejection happens before any of them are consulted), and a failed discovery is cached for the life of a codex process, so always retest in a fresh session.