Repository navigation
Windows: browser runtime fails before bootstrap with failed to write kernel assets (os error 3) #41359
Description
What version of the Codex App are you using (From “About Codex” dialog)?
OpenAI.Codex 26.820.9563.0
Browser/Chrome-control plugin: 26.820.71523
Runtime manifest: 0.0.9/20260825190732-1bc5ee2d44ce-pr-1350514
Bundled Node: 24.19.0
What subscription do you have?
ChatGPT Pro
What platform is your computer?
Windows 11 Pro 24H2, build 26100.9168, x64
What issue are you seeing?
The governed browser runtime fails before browser binding, troubleshooting documentation, or profile discovery with:
failed to write kernel assets: The system cannot find the path specified. (os error 3)
This is reproducible with the smallest browser-runtime initialization call and occurs before any website navigation or authentication.
The execution tool does not return a stack trace or the calculated kernel-assets destination, so the failing path cannot be identified safely from the installed runtime.
This blocks the documented browser bootstrap/troubleshooting path itself because setupBrowserRuntime() never returns an agent.
Minimal reproduction
const { setupBrowserRuntime } = await import(
'C:/Users/<user>/.codex/plugins/cache/openai-bundled/chrome/26.820.71523/scripts/browser-client.mjs'
);
const agent = await setupBrowserRuntime();Expected: browser runtime initializes so documentation and browser discovery APIs can be used.
Actual:
failed to write kernel assets: The system cannot find the path specified. (os error 3)
One fresh reproduction was performed for this report at approximately 2026-08-28T16:13:04Z–16:13:05Z.
Environment / component evidence
Browser client:
C:\Users\<user>\.codex\plugins\cache\openai-bundled\chrome\26.820.71523\scripts\browser-client.mjs
size: 149148 bytes
SHA-256: 2158647076eed887c7591cca0957da78747ab9155819d64409d6b895e84ed99b
Runtime executable:
C:\Users\<user>\AppData\Local\OpenAI\Codex\runtimes\cua_node\57937f104cca4dc5\bin\node_repl.exe
size: 31939248 bytes
SHA-256: 4a81e940919a2b4773ab0b12c2085f261b9ae6449c4bde13f7da7a1d12c8fb70
Runtime manifest:
C:\Users\<user>\AppData\Local\OpenAI\Codex\runtimes\cua_node\57937f104cca4dc5\manifest.json
SHA-256: 8a8f26e805af7b5c668977b43889b68da8a8ab554d967e6999574745ad7d5a09
Selected Codex executable:
C:\Users\<user>\AppData\Local\OpenAI\Codex\bin\d5f4c71927a04589\codex.exe
The runtime manifest explicitly declares:
{
"node_path": "bin/node.exe",
"node_modules": "bin/node_modules",
"node_repl_path": "bin/node_repl.exe",
"node_archive_path": "v24.19.0/node-v24.19.0-win-x64.zip",
"runtime_archive_name": "cua-node-0.0.9-20260825190732-1bc5ee2d44ce-pr-1350514-windows-x64.zip"
}The manifest-referenced installed paths exist:
bin/node.exebin/node_modulesbin/node_repl.exe
Relevant shell environment paths also exist (TEMP, TMP, LOCALAPPDATA, APPDATA, USERPROFILE). The failing tool process's inherited environment was not separately exposed, so that remains unknown.
Relevant log context
Earlier application log entry:
[BrowserUseThreadConfig] browser_use_runtime_paths_selected
codexCliPathSource=bundled-or-dev
nodePathSource=bundled-or-dev
nodeReplPathSource=bundled-or-dev
nodeVersionError=undefined
nodeVersionMajor=24
nodeVersionStatus=ok
nodeVersionValue=v24.19.0
platform=win32
No matching failure stack or calculated write path appeared in the inspected logs.
Path evidence
The installed browser-client source does not expose the kernel-assets write destination. The literal error text is embedded in node_repl.exe, but no usable source-level path construction or calculated destination is visible.
TARGET PATH NOT EXPOSED BY INSTALLED RUNTIME
No speculative directory creation, permission changes, runtime reset, profile reset, or reinstall was attempted.
Boundary / impact
- Failure occurs before browser binding.
bootstrap-troubleshootingcannot be retrieved because runtime initialization itself fails.- Browser/profile discovery is not reached.
- This is not evidence that Chrome is disconnected or a specific Chrome profile is missing.
- No Microsoft/Azure authentication is involved.
- Governed workflows that require verified browser-profile routing cannot proceed.
What is the expected behavior?
setupBrowserRuntime() should initialize successfully and return an agent so the documented bootstrap/troubleshooting and browser discovery APIs can be called.
If initialization fails, diagnostic output should expose a sanitized calculated kernel-assets destination and failing filesystem operation so the problem can be repaired without guessing paths or modifying unrelated browser/profile state.
Additional information / request
Please identify the missing/incorrect kernel-assets write destination or packaging/path-resolution defect and provide the supported repair/update procedure.
There are older reports containing the same error text, including #29137 and a broader Windows sandbox report #21470, but this report captures the current 26.820.9563.0 / browser plugin 26.820.71523 environment and isolates the failure to pre-bootstrap runtime initialization.
Activity
aidawilliam41-ops commentedon Sep 8, 2026
Additional Windows observation: missing per-server temp directories; kernel reset did not recover them
A related occurrence on 2026-09-08, Codex Desktop
26.901.6511.0, provides a narrower filesystem observation and a successful scoped recovery.Both the unified CUA
getStateentry point and a minimal nativenode_replJavaScript call failed before executing JavaScript with:Kernel-reset operations returned successfully, but subsequent initialization still failed.
Bounded read-only inspection identified the two task-owned runtime servers and their cached per-server temporary-directory paths. Both directories were absent. No memory dump, raw process contents or unrelated paths are attached.
After explicit owner authorization, only those two missing empty directories were recreated within the verified temporary-root scope. No server/process restart, executable replacement, configuration or permission change was made. Afterwards:
node_replexecuted a minimal JavaScript check successfully.This establishes missing cached temporary directories as the immediate failure condition in this occurrence. It does not establish who removed them, why they disappeared, or that every occurrence in this issue has the same cause.
Please make initialization/reset validate the cached temporary directory and safely recreate or replace a missing runtime-owned directory, with ownership/path checks. If recovery is not possible, return the failing filesystem operation and a sanitized destination type/path. A successful reset response should not leave initialization permanently dependent on an absent directory.
No browser content, credentials, local usernames, task IDs or raw logs are included. This adds evidence to the existing error-signature issue rather than asserting a new independent root cause.
augustusf7m-dev commentedon Sep 13, 2026
Reproduced on Windows Codex desktop on 2026-09-13. Both browser control (
cua_replinitialgetState) and the separatenode_replinitialization fail immediately withfailed to write kernel assets: The system cannot find the path specified. (os error 3). The error occurs before browser/tab discovery or any site authentication. Resetting both JS kernels and fully closing/reopening Codex did not resolve it. Chrome itself remains open and signed in, but Codex cannot inspect its tabs. This blocks a read-only mailbox verification workflow. App version and calculated failing asset path were not exposed to this session. No account identifiers or private content included.aidawilliam41-ops commentedon Sep 17, 2026
A September 17, 2026 Windows occurrence adds file-I/O trace evidence to the missing-directory recovery already reported here.
At 07:59:55.261 UTC, ETW identified
node_repl.exeattempting to writepackage.jsoninside a missing%TEMP%\.tmp<id>directory. The Temp parent existed. Initialization failed withfailed to write kernel assets: The system cannot find the path specified. (os error 3).js_resetreturned successfully, but initialization still failed.Creating only that missing empty directory restored operation: a kernel-start check,
import @oai/sky, andsky.list_windowssucceeded.The exact directory also appears in Kerish Doctor's
Backup/EmptyFolders.bck, last modified at 06:54:05 UTC. This is a cleanup correlation, not proof of the deleting actor or time; no per-entry timestamp was established.Expected: initialization/reset should validate its retained runtime-owned directory and safely recreate or replace it when absent, or expose the failing operation and sanitized destination.
No private paths, captured content, or raw traces are included.
Tastal commentedon Sep 21, 2026
Reproduced again on Windows with OpenAI.Codex 26.915.4065.0 on September 21, 2026.
Environment verified locally:
OpenAI.Codex 26.915.4065.0.Microsoft Windows NT 10.0.26200.0.cua_repl.Earlier in the same task, browser automation successfully read rendered page content. Later, even the smallest entry point failed before returning any browser/tab state:
Exact tool error (Windows Chinese locale):
The Chinese text means "The system cannot find the path specified."
A request to acquire the existing tab through
cua.getTab(...)fails with the same error. The tool'sjs_resetreturnsjs kernel reset, but a freshgetState()still immediately fails. This initialization/reset sequence was reproduced multiple times. The observed calls returned in roughly 0.04 seconds, before any page operation.Checks performed:
TEMPandTMPparent directories exist..codex/node_repldirectory exists.This adds a newer-version reproduction of the existing error signature. The earlier comments about missing retained per-server temporary directories are a relevant hypothesis, but the exact failing child directory and any cleanup actor have not been established on this machine.
Expected:
Impact: agent-driven browser work is blocked even though the user can still see the in-app browser. No webpage content, environment URLs, account identifiers, screenshots, full session transcript, or raw logs are included in this report.
qihangzhang-272 commentedon Sep 30, 2026
Causal reproduction (not correlation) on Windows 26.928.2636.0 — plus the recovery test that was still open
Environment:
OpenAI.Codex 26.928.2636.0runtimes\cua_node\be2aaea167c12e53\bin\node_repl.exe, 34,047,944 bytes, SHA-256714280c405fbd5b60b9e1eac8d96dcfd0d4bbacc894ab44c45de3d3a2cf58539This adds a controlled causal reproduction, the control cases that rule out the runtime deleting its own directory, and the recovery test that @Tastal's report left unconfirmed.
1. Reproduction, deterministic (3/3 runs)
node_repl.exewith an MCP client and completeinitialize.jsonce -> all 10 kernel assets appear in%TEMP%\.tmp<id>; the call works.js_reset-> returnsjs kernel reset, success.js->failed to write kernel assets: The system cannot find the path specified. (os error 3),isError: true.The 10 assets are:
diagnostics.js,kernel.js,meriyah.umd.min.js,package.json,privileged-node-repl-config.js,privileged-node-repl.js,realmChecks.js,tracing.js,trusted-worker.js,worker-runtime.js.2. Control cases
jswithoutjs_resetjs_resetalone, directory intactjs execution timed out; kernel reset)So a kernel reset that is not preceded by a missing directory cannot itself produce this error, and a missing directory is sufficient to produce it, permanently, for that process. The retained path is computed once at startup and is never recreated.
3. Directory lifecycle — why empty
.tmp*directories are not evidence of a failed writeCodexSandboxUsersmodify + a capability SID)jscallnode.exekernel child spawnedOn the affected machine, 22 of 24 live
node_repl.exeprocesses no longer had the directory created at their start time; only the two newest did. That is the state that produces this error on the next kernel start.This also rules out a permissions cause: the directories carry an ACE for
CodexSandboxUsersplus a capability SID, and the owning user hasFullControl, on both the working and the failing directories.4. Recovery — the open question in @Tastal's comment
A full app restart was not required here.
node_replis instantiated per thread, so a new thread receives a fresh instance and a fresh directory. Verified end to end:codex.exe), working set 16.7 MB%TEMP%\.tmpr7W6L4created at 12:00:07, containing all 10 assetsnode.exe --eval ... kernel.jsspawned at 12:00:37const { sky } = await import("@oai/sky"); await sky.list_apps()returned 40 apps, with window ids, titles andisRunningSo
js_resetcannot recover this state, but a fresh instance can — which is consistent with a retained path that is only computed once.5. Where the directories went, and what did not remove them
The disappearance window on this machine is bounded to a 28-minute span (10:54:42 to 11:22:51 local), and that span contains exactly one deliberate manual cleanup that removed 131 stale
%TEMP%\.tmp*directories while troubleshooting. This is consistent with @aidawilliam41-ops's cleanup-tool correlation.Negative result: a continuous filesystem watch on
%TEMP%for 15 minutes (create / delete / rename on.tmp*) recorded no deletion events at all. Whatever removes these directories is not a constantly running actor, and they do not disappear on their own.6. Requested fix
js_reset, validate the retained runtime-owned temp directory and safely recreate it when absent, with ownership and path checks before creating.js_resetshould leave the runtime able to reinitialize, or clearly report the remaining initialization failure — currently it reports success.os error 3.No browser content, credentials, local usernames, machine names, thread ids or raw logs are included.
Klggz7 commentedon Oct 4, 2026
Additional reproduction on Windows, 2026-10-04:
26.917.9434.026.917.71314@oai/sky:0.7.1Microsoft Windows NT 10.0.28120.0 x64A read-only review of 104 Codex session files from 2026-09-10 through 2026-10-04 found:
failed to write kernel assets ... (os error 3)results across 3 distinct long-lived tasks.js_resetattempts returned success, but the next initialization call failed identically.Same-machine controlled comparison:
@oai/skyinitialization twice, including afterjs_reset.@oai/sky;sky.list_apps()returned 40 apps and 5 windows.This further supports a per-thread retained temporary/kernel-assets path failure rather than global installation or cache corruption.
Browser acknowledgement observation:
createBrowserTabtimeouts were found.It would be useful for create/navigation acknowledgements to distinguish an unknown outcome from a confirmed action failure, so agents do not repeat an action that may already have completed.
No session transcript, browser content, account identifiers, local usernames, machine names, raw logs, or private paths are included.
herreigna-lab commentedon Oct 4, 2026
Additional reproduction on Windows, 2026-10-04: the same kernel-assets failure also blocks the bundled native Windows Computer Use skill, not just browser bootstrap.
Environment:
codex-cli 0.160.0(CLI version, not the desktop app version).26.930.31730.Minimal attempted initialization through the supplied
mcp__node_repl__jstool:Actual tool output:
The JS session reset tool returned
js kernel reset; retrying the same initialization then produced exactly the same error. No app/window enumeration or UI input was reached. Ordinary shell diagnostics remained available.Impact: the assistant could not manipulate the already-open Intel Graphics Command Center. Manual adjustment by the user did produce a visible display change, so the inaccessible UI controls themselves were functional.
Separate assistant reliability issue encountered in the same workflow: earlier driver-based attempts had been directed at the internal notebook display instead of the requested external HDMI TV, and changes were presented as applied without verifying a visible result. A subsequent read-only QueryDisplayConfig check identified that mismatch. This is not claimed to be the cause of the kernel-assets error, but it worsened the impact of the automation failure.
Please expose a sanitized failing destination/operation for the kernel-assets error and provide a supported repair. The assistant should also avoid claiming successful UI changes when bootstrap failed or only an unverified driver return value is available. No private logs, screenshots, or session transcript are attached.
qihangzhang-272 commentedon Oct 7, 2026
Follow-up on 26.930.7945.0 — still reproduces, with evidence that rules out an external cleanup tool
Environment:
OpenAI.Codex 26.930.7945.0(installed 2026-10-06 04:59 local)runtimes\cua_node\71e3f41277f96d73\bin\node_repl.exeThis continues my earlier report in this issue. The signature is unchanged and still reproduces on this build.
1. A fresh instance works, so the machine and the runtime binaries are fine.
Launching
node_repl.exefrom the current runtime and issuing onejscall:2. 12 of 14 live
node_replprocesses no longer have the directory created at their start time.Each instance creates
%TEMP%\.tmp<id>at startup. Matching live processes to directories by creation time (within 6 seconds): only 2 of 14 matched, and those two were the newest — started minutes earlier, directory still empty because nojscall had run yet. The other 12 have no directory at all, so any kernel start in those processes fails withos error 3.3. The survival pattern of existing directories argues against an external cleaner.
Grouping the
%TEMP%\.tmp*directories by creation date:A generic cleanup pass (Storage Sense, Disk Cleanup, an antivirus cleanup job, a manual sweep of
%TEMP%) removes the oldest entries first. Here the oldest directories survive while every directory created on one particular day is gone. I also checked the scheduled cleanup tasks:SilentCleanuplast ran 10-06 23:36 andStorageSense10-06 12:22, and neither matches this distribution.The distribution is instead consistent with "the directory is removed as part of something that happens to a live instance", which the next point describes.
4. The teardown that removes the directory is not the same event as process exit.
Re-verified on this build: closing the MCP client's stdin (graceful teardown) ends the process in 219 ms and the directory disappears with it. Separately, 14
node_replprocesses are alive on this machine right now, 12 of them with no directory.So a retained directory can be gone while its process is still running and still reachable by the client. That is the state this issue reports: the client keeps calling a process whose directory was already removed, and the runtime — which computes that path once at startup — never recreates it.
5. Practical impact, unchanged
js_resetreturns success but does not recover.Requested
os error 3.No browser content, credentials, local usernames, machine names, thread ids or raw logs are included.
Rajann7 commentedon Oct 8, 2026
On Windows, the Browser runtime fails with
failed to write kernel assets … (os error 3). The issue persists after a runtime reset, reboot, and signing out and back in. Please provide a supported fix.carabinshely commentedon Oct 13, 2026
Additional Windows reproduction observed on October 12–13, 2026.
Environment (read-only verification on October 13):
OpenAI.Codex 26.1007.2314.0(package version, not independently read from the About dialog).10.0.26300.0.mcp__cua_repl.js.Minimal observed calls:
and, in a later attempt starting explicitly with Edge:
Both fail before returning browser inventory or binding a tab:
Observed return times were approximately 0.05–0.09 seconds, despite a 60-second tool execution timeout. No website operation or authentication screen is reached.
Reset sequence actually tested on October 12:
cua.getState()fails with the error above.mcp__cua_repl.js_resetreturnsjs kernel reset.cua.getState()fails identically.Earlier browser operations in this long-lived task succeeded. The owner suspects session-local retained state and is moving the outstanding work to a new task. We have not yet tested a fresh-task A/B comparison, identified the missing directory, or established a cleanup actor. The earlier missing retained-directory evidence in this issue is relevant, but we are not claiming that root cause was proved in this occurrence.
Impact: final read-only browser verification is blocked while the browsers themselves remain running. Repeated retries were stopped. No browser restart, process killing, profile reset, guessed directory creation or security/trust override was performed.
A separate earlier
setupAtlasRuntimeattempt returnedprivileged native pipe bridge is not available; browser-client is not trusted; that is being reported separately in #21781 and is not asserted to have the same cause.Expected: initialization/reset should safely recover its owned missing assets directory, or return a sanitized failing destination and filesystem operation. A reset success should not mask a persistent initialization failure.
This comment includes only sanitized tool output and environment metadata: no browser contents, credentials, local user paths, machine identifiers, private task IDs, visitor data or raw conversation/log dump.
5-Brothers-Studio commentedon Oct 16, 2026
Additional Windows occurrence on October 16, 2026, during 01:22:11–01:22:23 UTC (exact failure second not captured).
Environment: Windows 10, build 10.0.19045, AMD64. The separately installed CLI reports
codex-cli 0.162.0-alpha.17.2; this is not a verified desktop-app version or a CLI reproduction. Desktop-app version remains unknown.The documented initial call to the exposed supported browser tool was:
It failed before JavaScript evaluation, page inventory or browser authentication:
A scoped current-thread startup-log check found its last genuine CUA STARTING/READY bracket at October 15 20:02:18.797–20:02:18.929 UTC. Later READY-only notifications, including October 16 01:06:23.712 UTC, did not establish a replacement process or successful tool access.
An owner-provided inspect-only recovery helper had previously stopped because it could not identify one unambiguous retained TempDir reference. No repair was applied. This occurrence's missing destination and directory lifecycle remain unproved; the earlier missing-directory evidence here is relevant but does not establish our root cause. No recovery identity/uniqueness guards were relaxed.
No process was selected or killed, runtime directory created/deleted, global TMP/TEMP changed, session cleared, or credential/security setting changed during this check. No new reset/restart test is claimed. Ordinary shell execution, public web reading and a separate email connector remain available while browser-dependent work is blocked.
Please expose the sanitized failing filesystem operation and owned destination, and provide a supported recovery that preserves existing sessions. This adds a current occurrence to the existing signature report rather than filing a duplicate issue.
No project/app names, accounts, tester data, codes, private paths, process IDs, screenshots, raw logs or session transcript are included.