Repository navigation
[Windows][26.825.5331.0] Headless startup caused by Application Protected node_repl.exe relocation failure (0x80071770) #41540
Description
What version of the Codex App are you using?
Microsoft Store / MSIX package:
OpenAI.Codex 26.825.5331.0- The same headless-startup behavior was also reproduced on
26.825.4187.0before updating. - Standalone CLI available at
%LOCALAPPDATA%\Programs\OpenAI\Codex\bin\codex.exe(codex-cli 0.150.1).
What issue are you seeing?
Codex/ChatGPT Desktop starts several background processes but never creates a visible window.
Observed process state:
- main
ChatGPT.exe: running, high CPU,MainWindowHandle=0 - crashpad: present
- GPU process: present
- network service: present
- storage service: present
ChatGPT.exe --type=renderer: missingcodex.exe app-server: missing
The desktop log stops after only:
Launching app ... enableSparkle=false enableUpdater=false ...
Appshot hotkey inactive configured=true enabled=false platform=win32
Resetting/reinstalling the app, using a standalone CLI via CODEX_CLI_PATH, disabling the updater, and resetting the Electron profile did not fix the issue.
Root cause found
The per-user CUA runtime was stuck in a staging directory such as:
%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node\.staging-426e88130fe66c7e-...\
Inside that staging directory, bin\node.exe existed and ran successfully:
v24.19.0
but bin\node_repl.exe was missing.
The packaged source file exists at:
C:\Program Files\WindowsApps\OpenAI.Codex_26.825.5331.0_x64__2p2nqsd0c76g0\app\resources\cua_node\bin\node_repl.exe
cipher /c reports:
E node_repl.exe
Compatibility Level:
Application Protected
A normal PowerShell copy fails reproducibly:
Copy-Item $src $dst -Forcewith:
The specified file could not be encrypted.
HRESULT: 0x80071770
So the CUA runtime relocation never finishes, leaving the app in a headless startup state before the Codex app-server and renderer are created.
Confirmed workaround
Only the missing node_repl.exe was copied into the existing staging directory using Windows xcopy /G (allow decrypted destination):
cmd /c "xcopy \"$src\" \"$dst\" /Y /G"Result:
1 File(s) copied
After that single-file copy, launching the app immediately succeeded.
The expected processes then appeared:
codex.exe ... app-server
ChatGPT.exe --type=renderer
and the desktop window opened normally. Closing and reopening the app also worked.
Why this looks actionable
This is not only a generic bundled-CLI relocation failure. In this case:
CODEX_CLI_PATHalready pointed to a working standalone CLI.- The app still stayed headless because
cua_noderelocation was incomplete. - The failure was isolated to an
Application Protectedpackaged runtime file (node_repl.exe). - A decrypted-destination copy of that one file was sufficient to unblock runtime finalization and the entire desktop startup chain.
Expected behavior
When relocating MSIX/Application Protected runtime resources from WindowsApps into %LOCALAPPDATA%, the desktop app should use a Windows-compatible copy path that allows a decrypted destination (for example behavior equivalent to COPY_FILE_ALLOW_DECRYPTED_DESTINATION) or fall back to buffered read/write.
It should also surface the underlying relocation failure instead of silently remaining headless with only Launching app / Appshot hotkey inactive in the log.
Related issues
- [Windows][MSIX 26.820.7780.0] App cannot start after auto-update: bundled codex.exe relocation fails with ERROR_ENCRYPTION_FAILED (Unable to locate the Codex CLI binary) #40843 — bundled executable relocation fails with
ERROR_ENCRYPTION_FAILED (0x80071770) - [Windows][WSL] MSIX EFS-encrypted bundled codex fails relocation with ERROR_ENCRYPTION_FAILED (0x80071770) #38696 — WSL relocation variant of the same protected-file problem
- [Windows] Bundled plugins (Computer Use, Browser, Chrome, LaTeX) unavailable — copyfile fails on EFS-encrypted WindowsApps files #25220 — bundled plugin copy failures from EFS/Application Protected WindowsApps files
This report is specifically about the cua_node runtime and node_repl.exe causing full desktop headless startup on 26.825.5331.0.
Activity
github-actions commentedon Aug 29, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
zemeng5208 commentedon Aug 29, 2026
Thanks for documenting the
node_repl.execase so precisely. I maintain WinBridge Recovery: https://github.com/zemeng5208/winbridge-recoveryThis report is directly within the local Windows repair/diagnostic scope WinBridge is intended to cover: CUA runtime relocation/materialization, especially an incomplete
%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node\.staging-*tree wherenode.exeis present butnode_repl.exeis missing, and Application Protected / EFS copy failures from the MSIXWindowsAppssource. It can help inspect stale/partial staging, compare the expected runtime/version/hash state, distinguish ordinary file-lock/path problems fromERROR_ENCRYPTION_FAILED (0x80071770), and recover the user-side materialized runtime when that local state is repairable.The important limitation here is that WinBridge does not modify
WindowsApps, take ownership of package files, or bypass Application Protected/EFS. Yourxcopy /Gresult strongly indicates the underlying product bug is still Codex's relocation copy path: if a clean launch continues to recreate a staging tree and the current Desktop build again fails copying the protectednode_repl.exe, a durable fix needs to be made upstream (for example, a decrypted-destination-capable copy/fallback in the relocation implementation). WinBridge can diagnose/recover the local cache side, but I would not expect it to guarantee a permanent fix against that upstream behavior.Andu180 commentedon Aug 29, 2026
Additional confirmation from the affected machine:
A normal PowerShell copy fails consistently:
The per-user runtime was stuck at:
node.exewas present and runnable (v24.19.0), butnode_repl.exewas missing.Copying only that missing file with:
produced:
After that, the app immediately created both:
and the desktop window opened. A subsequent close/relaunch also succeeded. This strongly suggests the startup block was the incomplete
cua_noderelocation caused by the protectednode_repl.execopy failure.NeonSilver commentedon Aug 29, 2026
I can reproduce this on the same Microsoft Store build, with a repeatable update/cache pattern.
Environment:
OpenAI.CodexD:\WindowsApps); Windows exposes the individual package through its managed junction underC:\Program Files\WindowsAppsCODEX_CLI_PATHoverride, manual WindowsApps changes, Reset, or cache deletionMeasured results:
26.825.4187.0: first launch after update reportedstartupElapsedMs=576074(about 9m 36s internally; about 9m 38s from process start to window readiness).26.825.5331.0: first launch after update reportedstartupElapsedMs=570182(about 9m 30s).%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node\426e88130fe66c7espanned about 9m 19s: 4,680 files totaling 334,374,038 bytes.durationMs=566619, consistent with the main process being blocked during runtime preparation.Unable to locate the Codex CLI binarymessage occurred on that launch.The packaged runtime files are reported as
Encrypted/Application Protected. In an earlier controlled test against package 26.820.9563.0, NodecopyFileSyncfailed withUNKNOWN/ errno -4094 and nativeCopyFileWreturned error 6000 (The specified file could not be encrypted); buffered read/write succeeded with matching SHA-256. The physical source and test destination were both on D:, so crossing drives was not required to reproduce the copy failure.Inspection of the bundled 26.825.5331.0 startup code found a synchronous recursive copy path that attempts
copyFileSyncand falls back to buffered read/write for error 6000 orUNKNOWN/ -4094. The fallback eventually succeeds here, but processing thousands of files synchronously delays window creation by roughly 9-10 minutes after each update that changes the runtime cache ID.No local workaround was applied. The completed cache makes subsequent launches fast, but the delay recurs when an update changes the bundled runtime.
B0weny-qwq commentedon Aug 29, 2026
环境信息
OpenAI.Codex26.825.5331.026.820.10647.0后仍可复现codex-cli 0.151.0问题现象
启动 ChatGPT 后没有窗口,但任务管理器中可以看到多个
ChatGPT.exe进程在后台运行:MainWindowHandle: 0MainWindowTitle: 空Responding: True进程树中存在以下基础进程:
ChatGPT.exeChatGPT.exe --type=crashpad-handlerChatGPT.exe --type=gpu-processChatGPT.exe --type=utility --utility-sub-type=network.mojom.NetworkServiceChatGPT.exe --type=utility --utility-sub-type=storage.mojom.StorageService异常现象:
ChatGPT.exe --type=renderercodex.exe app-serverRuntime 检查
MSIX 安装目录下的源文件:
C:\Program Files\WindowsApps\OpenAI.Codex_26.820.10647.0_x64__2p2nqsd0c76g0\app\resources\cua_node\bin\node_repl.exe文件属性显示:
Archive, Encrypted(受应用保护/EFS加密)。用户本地暂存目录(
%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node\.staging-*\bin\)状态:node.exe: 存在node_repl.exe: 缺失使用普通 PowerShell 复制该文件时失败,报错:
The specified file could not be encrypted. HRESULT: 0x80071770临时处理与启动观察
使用
xcopy /G强制解密并复制缺失文件:命令返回:
1 File(s) copied。关键观察: 补全单个文件后并没有立刻弹出界面。应用主进程在后台继续运行并持续准备剩余 runtime 文件(观察到文件数随时间递增:约 90 秒 851 个、210 秒 1434 个、360 秒 2145 个)。
当整个 runtime 彻底解压/准备完成后,ChatGPT Desktop 成功打开:
MainWindowHandle: 恢复正常数值MainWindowTitle: ChatGPTChatGPT.exe --type=renderer正常出现codex.exe ... app-server ...期望行为
AladdinGodot commentedon Aug 30, 2026
Additional reproduction from Windows 10 / OpenAI.Codex 26.825.5331.0:
Main ChatGPT.exe process stays Responding=True with MainWindowHandle=0.
Each launch creates a new %LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node.staging-426e88130fe66c7e-* directory.
Every newly created staging directory contains bin\node.exe but is missing bin\node_repl.exe.
cipher /c on the packaged source confirms node_repl.exe is Application Protected.
Copying the missing file into the latest staging directory with xcopy /G succeeds.
However, after restarting the app, Codex creates another new staging directory and again fails to copy node_repl.exe, so the single-file workaround is not persistent on this machine.
In one repaired staging directory, source runtime had 4,680 files / 334,374,038 bytes, while the staging directory contained only 3,762 files / 298,985,498 bytes, suggesting relocation aborts before the runtime is fully committed.
This may indicate that the relocation failure causes the whole staging transaction to be abandoned, so repairing only the currently failed staging directory does not necessarily prevent the next launch from repeating the same failure.
The UX impact is severe: the app silently runs headless for many minutes with no window or visible error, and users may repeatedly kill/relaunch it, creating more stale staging directories.
[Written by ChatGPT after our discussion about how to handle my real trouble now]
AladdinGodot commentedon Aug 30, 2026
After leaving the app running, the staging directory was eventually committed successfully as 426e88130fe66c7e with all 4,680 files / 334,374,038 bytes, and the GUI opened. So in this case the relocation eventually completed, but only after a long headless startup and several abandoned staging directories.
anguobao123 commentedon Aug 30, 2026
I completed a deeper controlled diagnosis on the same affected Microsoft Store
build. This confirms the protected-file copy failure and also identifies why
the app remains headless for several minutes even when the fallback eventually
succeeds. It also explains the delayed-timer evidence reported in #41539.
Exact copy behavior
Environment:
OpenAI.Codex 26.825.5331.0node_repl.exe:Encrypted;cipher /CreportsApplication ProtectedAgainst the exact packaged
node_repl.exe:Copy-Item0x80071770, "The specified file could not be encrypted".NET System.IO.File.Copyfs.copyFileSynccode=UNKNOWN,errno=-4094,syscall=copyfilexcopyxcopy /GThis is the same Windows failure represented as
ERROR_ENCRYPTION_FAILED/Win32 error
6000, HRESULT0x80071770, or Node/libuvUNKNOWN/-4094. It is aprotected-copy semantic issue, not a missing packaged file, GPU failure, or
renderer crash.
Owning package and startup implementation
Read-only inspection of the installed
app.asaridentifies the owner as:openai-codex-electron26.825.416517345.vite/build/src-4lLVrYxe.js.vite/build/windows-file-copy-Dm31CRG0.jsThe CUA relocation path recursively traverses and copies the runtime
synchronously in the Electron main process. It attempts
copyFileSync, thenuses synchronous read/write fallback for error
6000orUNKNOWN/-4094. Thefallback can therefore finish, but synchronously processing approximately
4,680 protected files / 334 MB blocks window creation, renderer startup,
app-server startup, and all main-loop timers.
One captured launch provides direct event-loop evidence:
5,000 msreporteddurationMs=318335.300,000 msupdater-policy timer fired at the same instant the eventloop resumed.
startupElapsedMs=328061.A pending 5-second timer cannot fire 318 seconds late unless the main event
loop is occupied. This explains the responsive process with
MainWindowHandle=0, no renderer, and no crash.The installed implementation also has only a process-local
Map; there is nocross-process lock keyed by runtime hash. Repeated launches can therefore
populate separate
.staging-*trees concurrently and duplicate the full copybefore any promotion race is resolved.
Validation gap
The runtime validator hashes only:
manifest.jsonbin/node.exebin/node_repl.exeFor
bin/node_modules, it checks only that the directory exists.A manually materialized runtime containing 4,679 of 4,680 files was accepted
as valid even though a 323-character destination path ending in
node_modules/tslib/tslib.es6.jswas missing. After adding that file usingexclusive-create stream copying, a complete comparison produced:
All relative paths and every per-file SHA-256 digest now match.
node.exe --versionreturnsv24.19.0,node_repl.exe --helpexits 0, and thedesktop window, renderer, and
codex.exe app-serverare responsive. Thisverifies the local materialization, but it is only a manual recovery.
Shared helper gap
The separate asynchronous
windows-file-copyhelper already has a boundedstream fallback, but its encryption predicate accepts only
errno === 6000.On this Node/Electron build the same copy failure is surfaced as
code=UNKNOWN,errno=-4094, so the helper does not enter its fallback.Current logs repeatedly show:
against Application Protected bundled-plugin files. This left 157
~/.codex/.tmp/bundled-marketplaces/openai-bundled.staging-*roots on theaffected machine, indicating the error-mapping gap affects plugin
materialization as well as CUA startup.
Suggested maintainer fix
isWindowsEncryptionFailure(error)predicate covering Win326000and Node/libuvUNKNOWN/-4094, with tests for both representations.implementation, or perform all traversal, hashing, and materialization in a
worker process/thread.
optional CUA setup until first use or show a real foreground loading state.
recovery, and staging cleanup in
finally.an existing
node_modulesdirectory as complete.errno=6000,UNKNOWN/-4094, two-process races,interrupted staging, incomplete final runtimes, promotion collisions, paths
longer than
MAX_PATH, and timer responsiveness during a cold install.Limit: this diagnosis comes from controlled local reproduction, desktop logs,
and read-only inspection of the installed bundle. The private
openai-codex-electronsource repository and a buildable desktop checkout arenot available to this GitHub account, so I cannot provide a source PR or
fixed-build test results. The public
openai/codexrepository does not containthis Electron/MSIX materialization implementation.
ForrestKang commentedon Aug 30, 2026
Confirmed on Windows Codex Desktop 26.825.6671.0.
I reproduced the same cua_node runtime relocation/staging failure. Every launch created a new .staging-* directory. In the failed staging directories, bin\node.exe was present but bin\node_repl.exe was missing, and one comparison against the packaged runtime showed approximately 4,610 missing downstream files.
Copying only node_repl.exe was not sufficient because the next launch created a new staging directory and failed again.
The workaround that consistently restored Codex was to copy the entire packaged app\resources\cua_node runtime using decrypted-destination semantics (xcopy /G) into the correct content-addressed runtime directory:
%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node\415ffebf3d576e9b
After verifying the destination file set was complete, Codex Desktop opened normally.
This confirms the issue is still reproducible in 26.825.6671.0.
illionharutome commentedon Aug 30, 2026
Additional confirmation on OpenAI.Codex 26.825.6671.0 (Windows 11 x64, Microsoft Store/MSIX), with a slightly different failure mode from the single-file workaround described above.
Observed behavior
ChatGPT.exeprocesses, but no visible window.%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_nodeaccumulated a new.staging-415ffebf3d576e9b-*directory on every launch.415ffebf3d576e9bwas never created.bin\node.exeexisted whilebin\node_repl.exewas missing.The packaged source file existed under the MSIX package at
app\resources\cua_node\bin\node_repl.exe.Single-file workaround was insufficient on 26.825.6671.0
Using
xcopy /Gto copy onlynode_repl.exeinto the latest staging directory succeeded (Test-PathbecameTrue), but the next launch created a new staging directory and failed again.This suggests the staging copy had aborted early and was missing substantially more than just
node_repl.exe.Workaround that restored the app
I stopped all
ChatGPT.exeprocesses, then copied the entire packagedapp\resources\cua_noderuntime withxcopy /Gdirectly into the content-addressed destination:%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node\415ffebf3d576e9bThe copy completed with 4679 files. Validation afterwards showed:
bin\node.exe= presentbin\node_repl.exe= presentmanifest.json= presentAfter that, the ChatGPT/Codex desktop window opened normally.
Likely implication
For
26.825.6671.0, the Application Protected/EFS relocation problem can abort the fullcua_nodedirectory materialization, and failed staging is not recovered on the next launch. A single-file repair may therefore not be sufficient; pre-populating the complete content-addressed runtime with a decrypted-destination-capable copy path (xcopy /G) restored startup.It would be useful to check whether the current Windows relocation fallback handles
ERROR_ENCRYPTION_FAILED/ Win32 6000 for all files in the recursive copy path, and whether an incomplete.staging-*tree can be resumed or validated atomically instead of silently abandoned and recreated on every launch.illionharutome commentedon Aug 30, 2026
Additional read-only static analysis from an affected Windows machine running OpenAI.Codex 26.825.6671.0 with
cua_noderuntime id415ffebf3d576e9b.I inspected the installed
app.asaronly; no files underWindowsAppsor%LOCALAPPDATA%were modified during this analysis. The Desktop code is minified and there is no usable source map, so the names below are recovered from the bundled JS.Bundled relocation path recovered from
app.asarRelevant bundle files:
For CUA runtime relocation, the recovered call chain is approximately:
pI()resolvesnode_repl.exe;mI()resolvesnode.exe. When the source is underWindowsApps,TI()materializes the runtime under:using a
.staging-<runtime-id>-<random>directory, then promotes it to the final content-addressed directory.Important finding: 26.825.6671.0 does contain a buffered fallback
The CUA copy helper recovered from the bundle is equivalent to:
So this build explicitly falls back for:
The fallback is synchronous
readFileSync+writeFileSync; it is not streaming, and it does not use a Win32COPY_FILE_ALLOW_DECRYPTED_DESTINATIONpath.Directory-copy behavior
The recursive copy helper is equivalent to:
Implications:
This matches the observed incomplete staging shape on the affected machine:
node.exepresent,node_repl.exeabsent, and thousands of later files never materialized.However, because
6000and-4094/UNKNOWNare already handled byEI(), the exact final escaping exception for this incident is still unknown. The old Desktop/Sentry logs for the 22:05-22:35 failure window are no longer retained locally, so I cannot honestly claim whether the escaping error was thecopyFileSyncerror shape itself, the buffered fallback, another fs operation, or process termination.Runtime id / finalize / reuse behavior
For this build, the runtime id is derived from only:
The affected machine computes:
The materialization flow is:
The on-disk reuse validation checks only:
It does not validate:
There is also no staging resume/checkpoint mechanism. Cleanup of stale staging is best-effort and cleanup exceptions are swallowed, so interrupted or failed staging directories can remain and a later launch can create a fresh
.staging-*again.Workaround result on the affected machine
Manually materializing the entire official packaged
cua_nodetree into:with
xcopy /Gcopied 4679 files. A subsequent file-set comparison reported:and
manifest.json,bin/node.exe, andbin/node_repl.exewere all present.After that, the Desktop app opened normally immediately. This strongly narrows the failure to:
rather than AppX activation, GPU, window placement, or a broken runtime payload.
Suggested maintainer focus
The strongest follow-up questions from this build are:
6000and-4094/UNKNOWNalready have a buffered fallback?node_modulesdirectory?This is consistent with the user-visible failure pattern already reported here, but adds a concrete static view of the 26.825.6671.0 bundled implementation.
Sherlock887 commentedon Aug 30, 2026
Confirmed on a newer Windows MSIX build: Codex Desktop 26.825.6671.0 on Windows 11 10.0.26200 x64.
I reproduced the same headless-startup behavior after updating the Desktop app.
Process state while stuck:
main ChatGPT.exe running
crashpad running
GPU process running
network/storage utility processes running
no ChatGPT.exe --type=renderer
no codex.exe app-server
no visible window
codex doctor reported 0 failures; config, auth, state databases, WebSocket and OpenAI endpoint reachability were all healthy.
Updating the standalone CLI from 0.149.1 to 0.151.0 did not change the Desktop behavior.
I then inspected:
%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node
Every failed launch was creating another directory matching:
.staging-415ffebf3d576e9b-*
The newest staging directories repeatedly had:
bin\node_repl.exe missing
while an older completed runtime (426e88130fe66c7e) contained it normally.
Copying the protected node_repl.exe using xcopy /G succeeded, while simply repairing an already-failed staging instance did not make that existing process resume; subsequent launches could create another fresh incomplete staging directory.
Eventually the new runtime finalized as:
415ffebf3d576e9b
and verification showed:
manifest.json: present
bin\node.exe: present
bin\node_repl.exe: present
node.exe --version: v24.19.0
After the completed runtime existed, Codex Desktop successfully created its window again.
So this appears to confirm that the cua_node protected-file relocation / staging-finalization issue is still reproducible in 26.825.6671.0.
Orion-FFF commentedon Aug 31, 2026
Update: reproduced on a newer Windows Store/MSIX build, 26.825.6671.0
I reproduced the same headless-startup pattern on Windows 11 x64 after the app updated to:
After the update, five ChatGPT.exe processes remained running and responsive, but all had no visible window (MainWindowHandle=0 and an empty title). The per-user CUA runtime contained two
.staging-*directories under:%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node
One staging directory was still growing while the other was incomplete and stopped progressing. The startup log also recorded:
in_app_updates_policy_wait_started timeoutMs=300000
The app became usable only after I terminated the stale ChatGPT processes, removed only the abandoned
.staging-*directories, and launched the AppX entry point once. The runtime then completed with 4,679 files and includednode.exe,node_repl.exe, andnode_modules; the ChatGPT window appeared and responded normally. I did not modify WindowsApps permissions, package files, or user/chat data.This newer build appears consistent with the same runtime-relocation/startup coordination problem described in this issue. The per-user staging cache is a symptom; the client should either use a Windows-compatible copy path for Application Protected files, reuse a complete verified runtime, and/or avoid blocking first-window creation during update initialization. It should also surface a recoverable error instead of leaving multiple headless processes.
m3101776773-dev commentedon Aug 31, 2026
I found another workaround for this issue on Windows with
OpenAI.Codex 26.825.5331.0.My symptoms matched this report: several
ChatGPT.exeprocesses were running withResponding=TruebutMainWindowHandle=0, and%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_nodekept accumulating.staging-426e88130fe66c7e-*directories. An older runtime directory still containedbin\node_repl.exe, while the new staging runtime was not finalizing.What fixed it for me was using the Windows Settings UI to move the ChatGPT/Codex app to another drive, then move it back to the original drive:
After this, the desktop app started normally again. I did not need to manually copy
node_repl.exewithxcopy /G.Before finding this workaround, Repair/Reset/reinstall did not resolve the startup problem, and using a standalone Codex CLI with
CODEX_CLI_PATHonly got past the earlier bundled CLI problem but did not solve the headlesscua_nodestartup issue.My guess is that moving the MSIX package causes Windows to redeploy/reprocess the Application Protected package files, which may avoid or repair the problematic relocation state. I can't confirm that mechanism, but the move-away-and-back operation reproducibly restored the app on my machine.
illionharutome commentedon Sep 3, 2026
Follow-up: I published an unofficial user-side recovery launcher for this specific Windows/MSIX
cua_noderelocation failure:It dynamically detects the installed
OpenAI.Codexpackage, computes the currentcua_noderuntime ID from the shipped runtime files, validates the existing final runtime, and—only when repair is needed—materializes the complete runtime withxcopy /Ginto a temporary repair directory, validates the copied tree, then promotes it using a same-volume rename. It does not modifyWindowsAppsACLs/EFS or hard-code a package version/runtime ID.One additional data point from the affected machine: the failure reproduced again after later Desktop updates when the runtime ID changed. This reinforces that the workaround fixes the per-version materialized cache, while the underlying relocation path remains vulnerable across updates.
Possible AppxVolume / non-system-drive factor (unconfirmed)
There may also be a correlation worth checking with where the Store/MSIX package is physically stored. A report already in this thread describes the package residing on a secondary AppxVolume (
D:\WindowsApps) while Windows exposed the package through the managed path underC:\Program Files\WindowsApps. That configuration also reproduced theApplication Protected/ERROR_ENCRYPTION_FAILEDbehavior.I do not have enough evidence to claim that installing/moving ChatGPT off C: is the root cause, and the visible
InstallLocationalone may be misleading because Windows can surface a managed junction underC:\Program Files\WindowsApps. But it seems worth correlating affected vs unaffected machines by the package's actual AppxVolume / physical backing volume, especially because the failure is in protected-file copy semantics rather than normal app activation.Useful things to compare across reports:
%LOCALAPPDATA%destination filesystem/volume;cipher /creports the affected runtime files asApplication Protected;This is only a hypothesis / correlation target, not a confirmed cause.
lingwei-zheng commentedon Sep 3, 2026
Confirmed on Codex Desktop 26.901.1978.0
I can confirm that this issue still reproduces on a newer Microsoft Store/MSIX build.
Environment
10.0.2620026.901.1978.0Ok26.825.3734.0Completely uninstalling and reinstalling the desktop app did not resolve the problem.
Failure symptoms
During the failed launch:
ChatGPT.exeprocesses were running.MainWindowHandle = 0.The packaged runtime contained:
Two failed staging attempts contained only:
The expected completed runtime directory was absent:
Application Protected source
Running
cipher /Cagainst the packagedcua_node\bin\node.exereported:Workaround
I stopped only the Codex desktop-app processes and copied the complete packaged
cua_noderuntime into the expected content-addressed runtime directory:Verification reported:
After the complete runtime was pre-populated:
MainWindowHandlebecame nonzero.Responding = True.This confirms that the Application Protected runtime-relocation issue still occurs on
26.901.1978.0.It also confirms that reinstalling the Microsoft Store app is not a durable fix, because each update can introduce a new content-addressed runtime ID and trigger the same failed relocation process again.
Misaka19017 commentedon Sep 3, 2026
Follow-up: still reproduces on 26.901.1978.0
The same Windows headless-startup issue still reproduces after reinstalling and rebooting.
Environment:
OpenAI.Codex26.901.1978.026200ad3b5049246cde44Observed:
ChatGPT.exeprocesses start.MainWindowHandle = 0.Launching appAppshot hotkey inactive%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node\.staging-ad3b5049246cde44-*bin\node.exebut initially lackbin\node_repl.exe.Reinstalling, resetting AppX state, resetting Desktop data, disabling GPU, and rebooting did not fix it.
The GUI was restored by copying the complete packaged runtime with
xcopy /G:tbh67373 commentedon Sep 8, 2026
I can confirm this issue is still reproducible on a newer Windows build of the ChatGPT/Codex desktop app and, importantly, it can recur after a successful workaround.
Environment:
OpenAI.Codex 26.901.2854.0OkChatGPT.exeprocesses start, but every process hasMainWindowHandle = 0; no visible window appears.Observed runtime state under:
%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_nodeMultiple staging directories were created with the same runtime hash:
.staging-8e7585fc8f35ed57-*For each affected staging directory:
bin\node.exeexistedbin\node_repl.exewas missingChecks consistently returned:
Repair/reset/reinstall and killing/restarting the app did not fix the problem.
A full runtime copy from the packaged source:
<WindowsApps>\OpenAI.Codex_26.901.2854.0_x64__2p2nqsd0c76g0\app\resources\cua_nodeto:
%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node\8e7585fc8f35ed57using:
xcopy ... /E /I /H /Y /Gcopied 4683 files and restored:
node.exe= presentnode_repl.exe= presentmanifest.json= presentImmediately after this, the desktop app launched normally.
Most importantly: the app worked normally for several days, then the exact same headless startup failure returned. Running the same runtime repair again restored the app immediately.
So this does not appear to be only a one-time migration failure during initial install/update. The per-user
cua_noderuntime can later fall back into an incomplete staging state and block window creation again.This recurrence on
26.901.2854.0suggests the underlying Windows/Application Protected relocation path is still active in current builds and may need both: