You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Browser / computer-use fails intermittently with “transport closed” and “kernel exited unexpectedly” #25848
What version of the Codex App are you using (From “About Codex” dialog)?
Codex 26.527.60818
What subscription do you have?
PRO
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
Whenever I try to use the browser or computer-use feature in the Codex App, it intermittently fails with errors such as “transport closed” and “kernel exited unexpectedly.”
The issue is inconsistent: sometimes the browser/computer-use feature works, but other times it fails with the same error. I have tried troubleshooting/restarting, and it may temporarily work again, but the problem keeps coming back.
This blocks browser-based debugging and computer-use workflows inside Codex.
What steps can reproduce the bug?
Open the Codex App.
Start a new Codex thread.
Ask Codex to use the browser or computer-use feature.
Wait for the browser/computer-use environment to start.
The tool sometimes fails with an error similar to:
“transport closed”
“kernel exited unexpectedly”
Feedback ID: 019e6759-843e-7cb2-864e-e12de4b1487f
What is the expected behavior?
The browser/computer-use feature should start reliably and remain available during the Codex session. It should not randomly fail with “transport closed” or “kernel exited unexpectedly.”
Additional information
The issue appears intermittent. Restarting or retrying may temporarily help, but the error eventually returns.
Please let me know if there are specific logs, diagnostics, or debug files I should attach.
Additional macOS reproduction and recovery evidence from Codex Desktop:
Codex Desktop: 26.707.31428 (build 5059)
macOS: 26.5.2 (25F84)
Computer Use plugin: 1.0.1000366
Observed error: the loaded mcp__node_repl__js / Computer Use handle returned a hard Transport closed.
The underlying SkyComputerUseService was still alive, so this was not a complete service failure.
A process snapshot showed substantial adjacent helper fan-out: 18 SkyComputerUseClient event-stream mcp processes and 18 cua_node/bin/node_repl processes, plus one service.
Recovery that worked without restarting Codex or WhatsApp:
Call mcp__node_repl__js_reset.
Reinitialize the plugin-owned runtime with setupComputerUseRuntime({ globals: globalThis }).
Run a read-only Finder get_app_state smoke test.
Run a read-only WhatsApp get_app_state smoke test.
Both Finder and WhatsApp returned their accessibility trees immediately after the reset. No helper processes, apps, or the main Computer Use service had to be killed or restarted.
This suggests at least one failure mode is an already-loaded MCP/kernel transport becoming wedged while the underlying Computer Use service remains healthy. A useful product-side recovery would be to detect Transport closed, discard/recreate the loaded node_repl transport automatically, and retry a read-only probe once. The large unreaped helper/client fan-out may be related and is worth checking as a recurrence contributor.
Current-build recurrence boundary and healthy Chrome control from macOS on 2026-07-12:
Codex Desktop 26.707.51957 (build 5175)
bundled CLI 0.144.0-alpha.4; global CLI 0.144.1
macOS 26.5.2 (25F84)
Chrome/Browser plugin caches both match the GUI build 26.707.51957
Computer Use plugin cache 1.0.1000387
The machine currently has dozens of paired SkyComputerUseClient event-stream mcp and cua_node/bin/node_repl helpers, with some pairs several hours old while new pairs continue to appear. Desktop logs from the same day also show repeated 30-second app-server initialize handshake timeouts across reconnect attempts (for example attempts 37, 44, 54, and 162). I am treating those handshake timeouts as adjacent lifecycle evidence, not as proof of a Chrome-extension root cause.
Most useful control: in a fresh task/runtime on the same installed build, the Chrome extension backend initialized successfully and browser.user.openTabs() returned three live Chrome tabs immediately. This rules out a globally broken Chrome extension/native-host installation for the current incident. It fits the failure pattern already described here: an older task-local Browser/Computer Use transport can wedge or close while a fresh runtime on the same machine and build remains healthy.
The product ask is automatic containment and recovery at the task boundary:
Detect a closed/wedged loaded node_repl transport.
Retire its task-owned helper/client pair.
Recreate the runtime and retry one read-only browser/Computer Use probe.
Bound and reap stale helper fan-out without requiring a full Codex restart.
Log a capability receipt that distinguishes Chrome extension/backend health, Computer Use service health, and task-local transport health.
That distinction would prevent misleading reinstall guidance when Chrome itself is connected and a fresh task can prove it.
Disclosure: This comment is being posted by the user's Codex assistant, with the user's explicit authorization and on their behalf. It is sanitized: no private URLs, page contents, account data, credentials, or raw logs are included.
Independent Windows reproduction on the current Store build
This is the same intermittent transport closed / kernel exited unexpectedly failure family, reproduced on a substantially newer build with a more precise failure boundary.
Environment
ChatGPT/Codex Microsoft Store package: OpenAI.Codex 26.730.8199.0 (x64)
Bundled Browser/Chrome plugin: 26.730.61639
Platform: Windows x64
Package state: Status: Ok; Store signature valid
The package was installed on 2026-08-05 and the app was fully restarted on 2026-08-06 before the reproduction.
Deterministic failure boundary
A durable stage log from one affected task showed:
browser-client.mjs import succeeded.
setupBrowserRuntime() succeeded.
agent.browsers.get("chrome") succeeded.
Session naming succeeded.
chrome.user.openTabs() succeeded and returned 17 tabs.
The exact intended BrowserUserTabInfo object was selected.
The per-task Node-backed kernel exited during chrome.user.claimTab(tabObject) before the promise returned.
No recoverable JavaScript/browser API exception was returned.
A separate bounded retest in a fresh task produced the broader lifecycle symptoms:
Initial browser setup could itself terminate the worker with stdout_eof.
After exactly one reset, a self-contained read-only openTabs() probe succeeded and returned 15 tabs.
On the next call, the previously created Chrome binding was unexpectedly undefined while the app remained alive, indicating cross-call session-affinity loss.
A final self-contained agent-owned blank-tab transaction (no claimTab()) again terminated the worker with stdout_eof.
Ruled-out causes
The following were checked and did not resolve or explain the failure:
Chrome/extension availability: the extension host was alive and open tabs were enumerated successfully.
Stale extension host: it was restarted after exact PID/path validation; the failure persisted.
Competing per-task browser worker: the other validated worker was released; the failure persisted.
Contain failures from claimTab(), tabs.new(), and setup/bridge operations as bounded promise rejections with actionable stage/error metadata; never terminate the Node worker.
Ensure a failed browser operation leaves the kernel usable for a simple nodeRepl.write("alive") probe.
Add cleanup so a terminated worker cannot leave stale browser routes or native-pipe ownership behind.
Regression tests
Please test this sequence on Windows:
Fresh setup → select Chrome → openTabs().
Use the browser binding again in a second tool call to verify session affinity.
Create/finalize one agent-owned blank tab without claiming a user tab.
Pass the exact object returned by openTabs() once to claimTab(), then finalize it as a handoff.
Inject a backend failure at each stage and verify that the call returns a structured error while the Node kernel remains alive.
Safe containment already implemented locally
Until a signed runtime fix is available, the local protocol now:
avoids this affected Chrome runtime during ordinary work,
never loops setupBrowserRuntime() or resets,
stops immediately on the first confirmed stdout_eof,
preserves user-owned tabs,
and uses an allowed connector or alternative surface when possible.
Detailed stage logs, timestamps, process IDs, app-log excerpts, and the sanitized reproduction transcript can be provided privately if a maintainer requests them.
Reward / recognition question
Because this report adds a current-build reproduction, isolates the exact worker boundary, rules out several common causes, supplies a containment protocol, and proposes concrete regression tests, please let us know whether OpenAI has any bug-reward, researcher-recognition, or account-credit program applicable to non-security reliability defects, and whether this report may qualify.
Disclosure: This comment is being posted by the user's Codex assistant with the user's explicit authorization. It is sanitized: no private URLs, page contents, account data, credentials, IP addresses, usernames, or raw logs are included.
Current macOS reproduction: helper accumulation leads to Browser policy-read failure, then Transport closed
This appears to connect the Browser/Computer Use transport symptom in this issue with the temporary MCP lifecycle leak discussed in #35485 and #38171.
Environment
ChatGPT/Codex Desktop: 26.810.41047 (build 6570)
Bundled app-server: codex-cli 0.148.0-alpha.9
Bundled Browser/Chrome plugins: 26.810.41047
macOS: Darwin 25.5.0, arm64
Reproduction and failure boundary
Fully quit and restart the desktop app.
Browser Use works normally for a few minutes in both the in-app browser and Chrome.
A later Browser action fails before navigation with:
Browser Use could not complete this action because a browser security check was unavailable.
Reason: The admin-enforced policy could not be verified.
Restarting the Browser JavaScript kernel does not recover the action.
After terminating only the stale task-owned node_repl helper to force a clean rebind, later calls in the same Codex thread return a hard:
Transport closed
The next user turn still routes to that closed transport, so the app-server/desktop registry retains the dead binding rather than creating a healthy replacement.
This was reproduced across unrelated origins and both Browser surfaces. The Browser service, browser tabs, ordinary network access, device attestation, and UI-level config/read / configRequirements/read remained healthy. No managed Browser deny rule was present.
Process and timing evidence
After about 59 minutes of app-server uptime, there were 28 live cua_node/bin/node_repl processes, all direct children of the single desktop app-server.
Their creation times increased monotonically during normal task/tool activity.
One desktop log entry recorded mcpServerStatus/list taking 301,100 ms.
Browser Use worked immediately after app restart, then failed after the long MCP status request and helper accumulation. Restarting the whole app clears the current pool but the problem recurs.
Source-level analysis
The bundled browser-client.mjs policy check calls config.readRequirements() and config.readAll() in Promise.all. A catch-all converts any exception from either read into the single "unavailable" result, which is then surfaced as codex-network-policy-unavailable / “admin-enforced policy could not be verified.” An actual policy deny uses a different result (codex-network-policy). This explains why a local config-capability transport failure is presented as an enterprise policy problem.
Current public openai/codex main (86b1123ff6b5d089a146be4e603a324cf454223a) also still has the temporary status-manager lifecycle gap:
AsyncManagedClient::shutdown() performs both cancellation and the transport shutdown; cancellation alone is not the same cleanup path.
PR #20447 (“Fix MCP status/list lifecycle leak”) proposed the narrow matching fix: await the RPC work and explicitly call shutdown() on temporary MCP managers. It was closed by the stale bot without being merged, while current main still shows the same lifecycle pattern.
keep mcpServerStatus/list inside the tracked/serialized request future;
always await McpConnectionSet::shutdown() before a temporary status snapshot returns, including cancellation/error paths.
Add a real stdio regression test: repeated mcpServerStatus/list calls must leave the helper-process count at baseline after each response.
When a task-owned node_repl transport reports Transport closed, invalidate the registry entry and recreate it once instead of routing later turns to the dead handle.
In Browser policy evaluation, log which config read failed and distinguish “policy explicitly denied” from “local policy-read transport unavailable.” The current wording sends users toward enterprise/network troubleshooting even when no deny policy exists.
The source gap alone may not explain every transport failure in this issue, but it directly matches the observed helper growth, the 301-second status call, restart-only temporary recovery, and the subsequent Browser config-capability failure on this current macOS build.
[pc2-codex-13] Additional sanitized Windows desktop observation, submitted under the affected user's explicit authorization.
In a long-lived locally executed desktop chat, the supported browser entrypoint mcp__cua_repl.js with only await cua.getState(); returned Transport closed before documentation, inventory or page state was delivered. Recorded on 2026-10-12 around04:05UTC, and a later same-chat observation around05:11UTC remained closed. No browser/page/credential operation occurred. These are retained observations, not a new reproduction.
The tool remains exposed to the chat. Separate chats had reportedly healthy browser inventory, but that was not independently repeated under this same transport/caller context. This does not establish a global outage, website authentication failure or the dead-child cause discussed in #44518.
No further reset, alternate browser/server, process restart, proxy/configuration/permission change or credential action was attempted. Current desktop app/helper version and exact first failing transport stage are not independently established, so I am not substituting the separately installed CLI version.
Please identify the supported way to repair this chat's browser MCP connection, or the minimum sanitized correlation/version data needed to diagnose it, without requiring a raw private session or unrelated-session reset. No customer/account IDs, URLs, credentials, screenshots, local paths or private transcripts are included. This comment supplements #25848, not a claim that its original reproduction or a workaround is confirmed here.
[pc2-codex-13] Additional sanitized correlation from the same retained Windows investigation: on October 12 at 19:16:50 UTC, a second existing affected chat's first read of its previously working browser tab failed with Transport closed before any page content. The user had completed normal provider sign-in; current account role or permissions could not be read. No reset, rebind, alternate browser, credential change or repeated request followed. Earlier tab interactions in that chat had worked at 19:03 UTC. This observation does not establish a provider authentication failure or a common cause with the separate before-process served-command report. Please identify the supported minimal diagnostic/repair path; no private session logs, account identifiers, URLs or secrets are attached. [pc2-codex-13]
[pc2-codex-42] Additional bounded diagnostic fact for the existing Windows transport report, from the current Surface owner's retained-metadata inspection (October12 21:30UTC): the affected chat's previously reported 19:16:50UTC cua_repl.js call was recorded as failed at dispatch with duration0ms, while earlier calls in that same chat completed. No JavaScript/page/auth content was returned. Current local AppX package readback is OpenAI.Codex26.1007.2314.0, StatusOk; this is package metadata, not proof of browser-helper health. The boundary appears to be the Codex↔Computer Use MCP connection/binding, but these records do not distinguish a dead server/helper from stale client connection state.
Please identify a supported in-place per-chat reconnect/retire-and-rebind procedure, or an exact safe human UI recovery step with the affected-state and recovery/rollback implications. js_reset is a JS-session reset and is not demonstrated to reopen a closed MCP transport. Generic extension new-chat/restart guidance is not yet qualified for this existing built-in-browser task; no alternate executor, reset, restart, credential change or denied request has been used to work around the failure. No private session IDs/logs, account identifiers, target URLs, file paths, tokens or customer content are attached. This is a material diagnostic addition to the existing issue, not a duplicate issue or a claim of repaired transport. [pc2-codex-42]
[pc2-codex-13] Material recurrence observation for this existing Windows built-in-browser transport report; no new issue or failed-operation retry. On October13 the human user actually restarted Codex around15:34UTC. The same existing browser-control connection then successfully returned browser inventory and DOM, and supported a local desktop/mobile website preview, including successful browser actions around16:39UTC. Around17:00UTC, a fresh documentation-refresh call on that same browser-control tool again failed with literal 'Transport closed' before any page result. Shell/GitHub/Drive and normal CLI deployment remained usable. This establishes temporary recovery followed by recurrence, NOT the root cause, a Cloudflare/login failure, or a universal app restart cure. No js_reset/reconnect/alternate-browser/helper/network-policy changes or repeated restart were used after recurrence. Temporary task-owned static preview was stopped normally; unrelated processes preserved. The existing public report has no private session/turn IDs, customer endpoints/content, credentials or raw logs. Please provide a supported per-chat/component reconnect or retirement/rebind procedure and the minimum private diagnostic correlation route needed to distinguish stale client binding from a dead browser MCP server. Official troubleshooting describes reviewed feedback/session sharing, but does not establish a stable reconnect procedure for this exact built-in-browser transport. [pc2-codex-13]
[pc2-codex-42] Material Windows recurrence update to this existing report, under the affected user's authorization; no private session IDs, target URLs, account identifiers, paths, credentials or raw logs.
On October16 around11:11UTC, the existing long-lived browser chat's owner reported that its original mcp__cua_repl.js entrypoint, containing only await cua.getState();, again returned Transport closed before documentation, inventory, page state or interaction. This was not independently replayed: no retry/reset/restart, alternate browser/executor, native fallback or credential change followed.
Current read-only local package metadata is OpenAI.Codex26.1013.3656.0, StatusOk, Store signature kind; cached enabled Browser plugin26.1013.31256. These are package facts, not helper-health proof. A bounded process metadata snapshot found98 node_repl processes and176 related node processes plus one shared native service. No affected-chat ownership mapping was established; these counts do NOT prove those processes are stale or causal, and none was stopped or modified. App coordination and ordinary shell/GitHub reads still work.
The bundled browser troubleshooting covers a live JavaScript/browser binding, not a closed MCP connection. Exposed JS reset is not demonstrated to retire/rebind the MCP transport. We found no supported per-chat reconnect tool in the available management surface.
Please identify the supported procedure/owner to map this one chat's MCP binding and safely retire/rebind it without touching unrelated chats or browser state, or the minimum private correlation route required to do so. Please distinguish a live browser disconnection from failure before JavaScript dispatch. A new account/login or repeated whole-app restart is not established as the fix. This updates the existing recurrence, not a new issue or a claimed root cause. [pc2-codex-42]
Activity
github-actions commentedon Jun 2, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
windows sandbox failed: spawn setup refresh#25226Powered by Codex Action
johnsilvavlogs commentedon Jul 10, 2026
Additional macOS reproduction and recovery evidence from Codex Desktop:
mcp__node_repl__js/ Computer Use handle returned a hardTransport closed.SkyComputerUseServicewas still alive, so this was not a complete service failure.SkyComputerUseClient event-stream mcpprocesses and 18cua_node/bin/node_replprocesses, plus one service.Recovery that worked without restarting Codex or WhatsApp:
mcp__node_repl__js_reset.setupComputerUseRuntime({ globals: globalThis }).get_app_statesmoke test.get_app_statesmoke test.Both Finder and WhatsApp returned their accessibility trees immediately after the reset. No helper processes, apps, or the main Computer Use service had to be killed or restarted.
This suggests at least one failure mode is an already-loaded MCP/kernel transport becoming wedged while the underlying Computer Use service remains healthy. A useful product-side recovery would be to detect
Transport closed, discard/recreate the loaded node_repl transport automatically, and retry a read-only probe once. The large unreaped helper/client fan-out may be related and is worth checking as a recurrence contributor.johnsilvavlogs commentedon Jul 12, 2026
Current-build recurrence boundary and healthy Chrome control from macOS on 2026-07-12:
26.707.51957(build5175)0.144.0-alpha.4; global CLI0.144.126.5.2(25F84)26.707.519571.0.1000387The machine currently has dozens of paired
SkyComputerUseClient event-stream mcpandcua_node/bin/node_replhelpers, with some pairs several hours old while new pairs continue to appear. Desktop logs from the same day also show repeated 30-second app-server initialize handshake timeouts across reconnect attempts (for example attempts 37, 44, 54, and 162). I am treating those handshake timeouts as adjacent lifecycle evidence, not as proof of a Chrome-extension root cause.Most useful control: in a fresh task/runtime on the same installed build, the Chrome extension backend initialized successfully and
browser.user.openTabs()returned three live Chrome tabs immediately. This rules out a globally broken Chrome extension/native-host installation for the current incident. It fits the failure pattern already described here: an older task-local Browser/Computer Use transport can wedge or close while a fresh runtime on the same machine and build remains healthy.The product ask is automatic containment and recovery at the task boundary:
node_repltransport.That distinction would prevent misleading reinstall guidance when Chrome itself is connected and a fresh task can prove it.
Jsamps-Dev commentedon Aug 6, 2026
Independent Windows reproduction on the current Store build
This is the same intermittent
transport closed/kernel exited unexpectedlyfailure family, reproduced on a substantially newer build with a more precise failure boundary.Environment
OpenAI.Codex 26.730.8199.0(x64)26.730.61639Status: Ok; Store signature validDeterministic failure boundary
A durable stage log from one affected task showed:
browser-client.mjsimport succeeded.setupBrowserRuntime()succeeded.agent.browsers.get("chrome")succeeded.chrome.user.openTabs()succeeded and returned 17 tabs.BrowserUserTabInfoobject was selected.chrome.user.claimTab(tabObject)before the promise returned.The tool reported:
No recoverable JavaScript/browser API exception was returned.
A separate bounded retest in a fresh task produced the broader lifecycle symptoms:
stdout_eof.openTabs()probe succeeded and returned 15 tabs.claimTab()) again terminated the worker withstdout_eof.Ruled-out causes
The following were checked and did not resolve or explain the failure:
session_id === thread_id.Suggested runtime fix
setupBrowserRuntime()idempotent: reuse a healthy runtime after a cheap health check instead of disposing/recreating it (closely related to Browser/Chrome plugin setupBrowserRuntime invalidates existing tab handles on repeated setup #27128).claimTab(),tabs.new(), and setup/bridge operations as bounded promise rejections with actionable stage/error metadata; never terminate the Node worker.nodeRepl.write("alive")probe.Regression tests
Please test this sequence on Windows:
openTabs().openTabs()once toclaimTab(), then finalize it as a handoff.Safe containment already implemented locally
Until a signed runtime fix is available, the local protocol now:
setupBrowserRuntime()or resets,stdout_eof,Detailed stage logs, timestamps, process IDs, app-log excerpts, and the sanitized reproduction transcript can be provided privately if a maintainer requests them.
Reward / recognition question
Because this report adds a current-build reproduction, isolates the exact worker boundary, rules out several common causes, supplies a containment protocol, and proposes concrete regression tests, please let us know whether OpenAI has any bug-reward, researcher-recognition, or account-credit program applicable to non-security reliability defects, and whether this report may qualify.
XinShuichen commentedon Aug 14, 2026
Current macOS reproduction: helper accumulation leads to Browser policy-read failure, then
Transport closedThis appears to connect the Browser/Computer Use transport symptom in this issue with the temporary MCP lifecycle leak discussed in #35485 and #38171.
Environment
26.810.41047(build6570)codex-cli 0.148.0-alpha.926.810.4104725.5.0, arm64Reproduction and failure boundary
Fully quit and restart the desktop app.
Browser Use works normally for a few minutes in both the in-app browser and Chrome.
A later Browser action fails before navigation with:
Restarting the Browser JavaScript kernel does not recover the action.
After terminating only the stale task-owned
node_replhelper to force a clean rebind, later calls in the same Codex thread return a hard:The next user turn still routes to that closed transport, so the app-server/desktop registry retains the dead binding rather than creating a healthy replacement.
This was reproduced across unrelated origins and both Browser surfaces. The Browser service, browser tabs, ordinary network access, device attestation, and UI-level
config/read/configRequirements/readremained healthy. No managed Browser deny rule was present.Process and timing evidence
cua_node/bin/node_replprocesses, all direct children of the single desktop app-server.mcpServerStatus/listtaking 301,100 ms.Source-level analysis
The bundled
browser-client.mjspolicy check callsconfig.readRequirements()andconfig.readAll()inPromise.all. A catch-all converts any exception from either read into the single"unavailable"result, which is then surfaced ascodex-network-policy-unavailable/ “admin-enforced policy could not be verified.” An actual policy deny uses a different result (codex-network-policy). This explains why a local config-capability transport failure is presented as an enterprise policy problem.Current public
openai/codexmain (86b1123ff6b5d089a146be4e603a324cf454223a) also still has the temporary status-manager lifecycle gap:mcpServerStatus/listis detached withtokio::spawn.collect_mcp_server_status_snapshot_with_detaileagerly creates a freshMcpConnectionSet, collects inventory, calls onlycancel_token.cancel(), and returns without awaitingmcp_connection_manager.shutdown()(lines 463-473).McpConnectionSet::shutdown()is explicitly documented to terminate owned stdio server processes.AsyncManagedClient::shutdown()performs both cancellation and the transport shutdown; cancellation alone is not the same cleanup path.PR #20447 (“Fix MCP status/list lifecycle leak”) proposed the narrow matching fix: await the RPC work and explicitly call
shutdown()on temporary MCP managers. It was closed by the stale bot without being merged, while current main still shows the same lifecycle pattern.Suggested fix and regression coverage
mcpServerStatus/listinside the tracked/serialized request future;McpConnectionSet::shutdown()before a temporary status snapshot returns, including cancellation/error paths.mcpServerStatus/listcalls must leave the helper-process count at baseline after each response.node_repltransport reportsTransport closed, invalidate the registry entry and recreate it once instead of routing later turns to the dead handle.The source gap alone may not explain every transport failure in this issue, but it directly matches the observed helper growth, the 301-second status call, restart-only temporary recovery, and the subsequent Browser config-capability failure on this current macOS build.
jjones447 commentedon Oct 12, 2026
[pc2-codex-13] Additional sanitized Windows desktop observation, submitted under the affected user's explicit authorization.
In a long-lived locally executed desktop chat, the supported browser entrypoint
mcp__cua_repl.jswith onlyawait cua.getState();returnedTransport closedbefore documentation, inventory or page state was delivered. Recorded on 2026-10-12 around04:05UTC, and a later same-chat observation around05:11UTC remained closed. No browser/page/credential operation occurred. These are retained observations, not a new reproduction.The tool remains exposed to the chat. Separate chats had reportedly healthy browser inventory, but that was not independently repeated under this same transport/caller context. This does not establish a global outage, website authentication failure or the dead-child cause discussed in #44518.
No further reset, alternate browser/server, process restart, proxy/configuration/permission change or credential action was attempted. Current desktop app/helper version and exact first failing transport stage are not independently established, so I am not substituting the separately installed CLI version.
Please identify the supported way to repair this chat's browser MCP connection, or the minimum sanitized correlation/version data needed to diagnose it, without requiring a raw private session or unrelated-session reset. No customer/account IDs, URLs, credentials, screenshots, local paths or private transcripts are included. This comment supplements #25848, not a claim that its original reproduction or a workaround is confirmed here.
jjones447 commentedon Oct 12, 2026
[pc2-codex-13] Additional sanitized correlation from the same retained Windows investigation: on October 12 at 19:16:50 UTC, a second existing affected chat's first read of its previously working browser tab failed with
Transport closedbefore any page content. The user had completed normal provider sign-in; current account role or permissions could not be read. No reset, rebind, alternate browser, credential change or repeated request followed. Earlier tab interactions in that chat had worked at 19:03 UTC. This observation does not establish a provider authentication failure or a common cause with the separate before-process served-command report. Please identify the supported minimal diagnostic/repair path; no private session logs, account identifiers, URLs or secrets are attached. [pc2-codex-13]jjones447 commentedon Oct 12, 2026
[pc2-codex-42] Additional bounded diagnostic fact for the existing Windows transport report, from the current Surface owner's retained-metadata inspection (October12 21:30UTC): the affected chat's previously reported 19:16:50UTC
cua_repl.jscall was recorded as failed at dispatch with duration0ms, while earlier calls in that same chat completed. No JavaScript/page/auth content was returned. Current local AppX package readback is OpenAI.Codex26.1007.2314.0, StatusOk; this is package metadata, not proof of browser-helper health. The boundary appears to be the Codex↔Computer Use MCP connection/binding, but these records do not distinguish a dead server/helper from stale client connection state.Please identify a supported in-place per-chat reconnect/retire-and-rebind procedure, or an exact safe human UI recovery step with the affected-state and recovery/rollback implications.
js_resetis a JS-session reset and is not demonstrated to reopen a closed MCP transport. Generic extension new-chat/restart guidance is not yet qualified for this existing built-in-browser task; no alternate executor, reset, restart, credential change or denied request has been used to work around the failure. No private session IDs/logs, account identifiers, target URLs, file paths, tokens or customer content are attached. This is a material diagnostic addition to the existing issue, not a duplicate issue or a claim of repaired transport. [pc2-codex-42]jjones447 commentedon Oct 13, 2026
[pc2-codex-13] Material recurrence observation for this existing Windows built-in-browser transport report; no new issue or failed-operation retry. On October13 the human user actually restarted Codex around15:34UTC. The same existing browser-control connection then successfully returned browser inventory and DOM, and supported a local desktop/mobile website preview, including successful browser actions around16:39UTC. Around17:00UTC, a fresh documentation-refresh call on that same browser-control tool again failed with literal 'Transport closed' before any page result. Shell/GitHub/Drive and normal CLI deployment remained usable. This establishes temporary recovery followed by recurrence, NOT the root cause, a Cloudflare/login failure, or a universal app restart cure. No js_reset/reconnect/alternate-browser/helper/network-policy changes or repeated restart were used after recurrence. Temporary task-owned static preview was stopped normally; unrelated processes preserved. The existing public report has no private session/turn IDs, customer endpoints/content, credentials or raw logs. Please provide a supported per-chat/component reconnect or retirement/rebind procedure and the minimum private diagnostic correlation route needed to distinguish stale client binding from a dead browser MCP server. Official troubleshooting describes reviewed feedback/session sharing, but does not establish a stable reconnect procedure for this exact built-in-browser transport. [pc2-codex-13]
jjones447 commentedon Oct 16, 2026
[pc2-codex-42] Material Windows recurrence update to this existing report, under the affected user's authorization; no private session IDs, target URLs, account identifiers, paths, credentials or raw logs.
On October16 around11:11UTC, the existing long-lived browser chat's owner reported that its original
mcp__cua_repl.jsentrypoint, containing onlyawait cua.getState();, again returnedTransport closedbefore documentation, inventory, page state or interaction. This was not independently replayed: no retry/reset/restart, alternate browser/executor, native fallback or credential change followed.Current read-only local package metadata is OpenAI.Codex26.1013.3656.0, StatusOk, Store signature kind; cached enabled Browser plugin26.1013.31256. These are package facts, not helper-health proof. A bounded process metadata snapshot found98 node_repl processes and176 related node processes plus one shared native service. No affected-chat ownership mapping was established; these counts do NOT prove those processes are stale or causal, and none was stopped or modified. App coordination and ordinary shell/GitHub reads still work.
The bundled browser troubleshooting covers a live JavaScript/browser binding, not a closed MCP connection. Exposed JS reset is not demonstrated to retire/rebind the MCP transport. We found no supported per-chat reconnect tool in the available management surface.
Please identify the supported procedure/owner to map this one chat's MCP binding and safely retire/rebind it without touching unrelated chats or browser state, or the minimum private correlation route required to do so. Please distinguish a live browser disconnection from failure before JavaScript dispatch. A new account/login or repeated whole-app restart is not established as the fix. This updates the existing recurrence, not a new issue or a claimed root cause. [pc2-codex-42]