Windows Computer Use fails with spawn EPERM; elevated sandbox setup fails on WindowsApps ACL
What version of the Codex App are you using (From “About Codex” dialog)?
OpenAI.Codex 26.803.5235.0 (Computer Use plugin 26.803.41515; bundled Codex CLI 0.147.0-alpha.6.5; @oai/sky 0.6.2)
What subscription do you have?
Unknown / not displayed in the Codex App
What platform is your computer?
Windows 11 Pro 25H2, build 26200.8973, x64; Codex installed as AppX/MSIX
What issue are you seeing?
The bundled Computer Use plugin cannot perform its first read-only operation on Windows. Importing @oai/sky succeeds, but await sky.list_windows() fails immediately with:
Error: spawn EPERM
at ChildProcess.spawn (node:internal/child_process:421:11)
at spawn (node:child_process:796:9)
at ...\@oai\sky\...\windows\internal\helper_transport.js
The helper path (PII redacted) is:
C:\Users\<user>\AppData\Local\OpenAI\Codex\runtimes\cua_node\f1bf3cd3a5929acd\bin\node_modules\@oai\sky\bin\windows\codex-computer-use.exe
Every Computer Use operation fails before connecting to the signed bundled helper because sandboxed Node child-process creation returns EPERM. Updating system Node.js does not affect this because Computer Use uses its bundled runtime.
What steps can reproduce the bug?
- Install/enable
computer-use@openai-bundledin the Windows Codex desktop app. - Start a fresh task.
- Initialize the documented runtime:
if (!globalThis.sky) {
const { sky } = await import("@oai/sky");
globalThis.sky = sky;
}
- Run the first read-only operation:
await sky.list_windows();
- Observe
Error: spawn EPERM.
Reproduces after a full Windows restart, clean app reinstall, Computer Use plugin/runtime refresh, and Node kernel reset.
What is the expected behavior?
sky.list_windows() should launch or connect to the bundled signed helper and return the available Windows application windows. Computer Use should work using the permission settings exposed by the desktop app.
Additional information
Control tests:
- Bundled
cua_nodeis Node.js v24.14.0 and is signed by OpenAI. - Outside the Codex sandbox, that exact bundled Node executable successfully spawns
cmd.exeand printschild-ok. - Inside the Computer Use/Node sandbox, spawning
cmd.exe, Node itself, orcodex-computer-use.exereturnsEPERM. - Updating system Node.js to v24.18.0 had no effect.
- No matching Microsoft Defender, AppLocker, or current Code Integrity block was found. Runtime executables have valid signatures and readable/executable ACLs.
The alternative elevated Windows sandbox also cannot initialize. The app displays “Windows setup didn't finish”. Setup creates sandbox users and WFP filters, then fails while adding a read ACE to the protected WindowsApps package directory:
grant read ACE failed ... for sandbox_group: SetNamedSecurityInfoW failed: 5
read ACL run completed with errors
setup error: read ACL run had errors
Returning to unelevated mode removes the setup banner but Computer Use still fails with spawn EPERM.
Related reports:
- https://github.com/openai/codex/issues/21470
- https://github.com/openai/codex/issues/18451
- https://github.com/openai/codex/issues/18861
Please investigate the Windows sandbox child-process launch policy and the elevated sandbox setup's handling of protected WindowsApps ACLs.
13 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
# Bug report: Sandboxed Computer Use unusable — sandbox accounts provisioned without user profiles; runtime directory ACL missing
Product: Codex desktop app for Windows (Computer Use)
Severity: Computer Use completely non-functional in sandboxed mode; works only with the sandbox bypassed (full access)
Date observed: 2026-08-06
Reporter environment is available for follow-up questions.
---
Environment
| Item | Value |
|---|---|
| OS | Windows 11 Home, build 26200 (10.0.26200) |
| Codex app | 26.730.8199.0, MSIX/Store install (
C:\Program Files\WindowsApps\OpenAI.Codex_26.730.8199.0_x64__2p2nqsd0c76g0) || command-runner |
codex-command-runner-0.147.0-alpha.1.2.exe|| Computer Use runtime |
cua_node0.0.6 (payload dirfb8898c05a62885e),codex-computer-use.exev0.1.0 (@oai/sky) || Sandbox accounts |
CodexSandboxOffline,CodexSandboxOnlinein groupCodexSandboxUsers, created 2026-08-03 22:17 || Machine state | Fresh machine, single interactive user, local admin, no domain/GPO |
Summary
On this machine the Codex installer created the sandbox accounts but left sandbox
provisioning incomplete in two independent ways:
CodexSandboxUserson Codex's own runtime directory(
%LOCALAPPDATA%\OpenAI\Codex). The sandboxed tool process cannot evenlstatthe Computer Use runtime, so the plugin fails to initialize.(no
C:\Users\CodexSandboxOffline, noProfileListregistry entries).Sandbox processes therefore resolve their profile directory to
C:\Users\Default, where every profile-relative operation fails withaccess-denied or path-not-found.
Result: sandboxed Computer Use fails at every stage; switching the workspace to
full access (tools run as the interactive user) makes Computer Use work
perfectly and immediately — a clean A/B isolating the sandbox identity as the
sole variable.
A repair/reinstall of the app did not create the profiles, did not fix the
ACL (our manual grant survived), and re-laid the identical runtime payload.
Symptoms, in the order encountered
Stage 1 — runtime init fails (before the ACL workaround):
The directory's DACL contained only SYSTEM, Administrators, and the interactive
user — no entry for
CodexSandboxUsers. From inside the sandbox evenicaclson that path returned "Access is denied."
Workaround applied:
icacls "%LOCALAPPDATA%\OpenAI\Codex" /grant "CodexSandboxUsers:(OI)(CI)(RX)"— after this, the runtime initializes and the failure moves deeper.
Stage 2 — native layer fails (after the ACL workaround):
sky.documentationis advertised to the model by the harness but is notexported by the installed
@oai/skyin cua_node 0.0.6 — an app/runtimeversion mismatch, independent of the sandbox issue.
0x80070003isERROR_PATH_NOT_FOUNDsurfacing fromcodex-computer-use.exe(which drives the interactive desktop viaOpenInputDesktop/SetThreadDesktop/EnumWindows/ UI Automation) whenrun under the profileless sandbox identity.
Corroborating evidence from Codex's own sandbox log
(
%USERPROFILE%\.codex\.sandbox\sandbox.<date>.log), present on everylaunch:
Both lines show the runner treating
C:\Users\Defaultas the sandboxaccount's "current user profile dir" — i.e.,
GetUserProfileDirectoryforthe sandbox token falls back to the Default profile because no real profile
exists.
The A/B that isolates the cause
| Configuration | Result |
|---|---|
| Sandboxed (default) |
EnumWindows failed: The system cannot find the path specified. (0x80070003)— every attempt, including after app repair || Full access (sandbox bypassed, same machine, same session, minutes later) | Computer Use works perfectly — native layer enumerated all 5 open windows (Revit, Codex, Claude, Settings, GitHub Desktop) and drove them normally |
Nothing else changed between the two runs. The sandbox identity is the variable.
Reproduction
net localgroup CodexSandboxUsers) and thatno
C:\Users\CodexSandboxOfflinedirectory orHKLM\...\ProfileListentry exists for them.EPERM lstaton%LOCALAPPDATA%\OpenAI\Codex; verify withicaclsthatCodexSandboxUsershas no entry there.(OI)(CI)(RX)on that directory toCodexSandboxUsers; retry.EnumWindows failed ... 0x80070003and theC:\Users\Defaultaccess-denied lines in the sandbox log.Expected behavior
Either the installer/first-run provisioning creates real profiles for the
sandbox accounts (and grants them read access to the Codex runtime directory),
or the Computer Use architecture brokers desktop interaction through a process
with interactive-desktop rights instead of running the desktop driver directly
under a profileless sandbox identity.
Suggested fixes / questions for the team
CodexSandboxOffline/CodexSandboxOnlineatinstall or first sandbox logon (the MSIX install context may be why this
silently fails today — nothing in the UI reports it).
CodexSandboxUsersread/execute on%LOCALAPPDATA%\OpenAI\Codex(our manual narrow grant was sufficient forruntime init and survived a repair).
instead of
EPERM lstat/0x80070003deep in the stack.@oai/skyand the harness prompt in lockstep so advertised functions(
sky.documentation) exist in the installed runtime.codex-computer-use.exesupposed to run underthe sandbox identity at all, given it must open the interactive input
desktop? (UIPI/window-station ACLs make that fragile even with profiles.)
Workaround currently in use
Full-access mode for sessions that need Computer Use — acceptable on this
single-user machine, but it discards the sandbox entirely, which is presumably
not the intended trade-off.
Artifacts available on request
sandbox.2026-08-06.logicaclsoutput before/after the ACL grantnet user CodexSandboxOffline/ group membership listingsI can provide an independent reproduction on the current Windows build, plus a controlled A/B that isolates the failure to the Codex-managed sandbox/desktop bridge rather than the signed Computer Use binary itself.
Environment
OpenAI.Codex_26.803.5235.0_x64__2p2nqsd0c76g026.803.415150.147.0-alpha.6.5@oai/sky:0.6.2@oai/cua:0.1.1All user-specific paths and identifiers are redacted below.
Reproduction after clean reinstall
A complete uninstall/reinstall from the official Store-signed x64 package was performed, followed by a fresh plugin/runtime generation. The supported in-app Computer Use path still cannot complete the first usable desktop operation.
The failure chain has two stages:
@oai/skyinitially failed with:The app automatically grants
CodexSandboxUsersread/execute on thebinandruntimeschildren, but the parentOpenAI\Codextraversal boundary was not readable by the sandbox identity.This is the same public symptom reported in #37383 and several recent Windows reports. Reinstalling the same current package, refreshing the plugin/runtime, resetting the Node kernel, restarting Codex, and restarting Windows do not resolve it.
Controlled A/B: the exact official runtime works as the interactive user
For diagnosis only, I launched the exact same bundled, signed
node_repl.exeandcodex-computer-use.exeas the signed-in interactive Windows user with the Node sandbox disabled.That temporary probe successfully completed the full chain:
list_windows()list_apps()get_window_state()with real text and a screenshotThe probe process was then terminated. It was not retained as a configuration workaround.
This demonstrates that the shipped Computer Use helper, Windows window enumeration, screenshot capture, and input injection all work on the same machine. The variable that changes the result is the execution identity/bridge: the supported in-app managed path versus the interactive user context.
Shipped transport evidence
In the shipped
@oai/sky 0.6.2Windows target:targets/windows/internal/helper_transport.jsimportsspawnfromnode:child_processand startscodex-computer-use.exedirectly over stdio.SKY_CUA_NATIVE_PIPE=1and aSKY_CUA_NATIVE_PIPE_DIRECTORYvalue.nodeRepl.nativePipe.The desktop app also regenerates
mcp_servers.node_repl.args = []on restart, so a temporary--disable-sandboxdiagnostic cannot become a durable supported repair.Security controls checked
No matching block was found in:
The relevant OpenAI binaries have valid signatures. A separate unrelated Defender detection was excluded from the causal chain.
Requested fix
Please route Windows Computer Use through the desktop host's native bridge, or otherwise launch/broker the helper in a supported context that can access and own the signed-in user's active desktop windows. The runtime installer should also provision traversal/read access on every required parent directory, not only deeper children.
A release-gate test should require all of the following under the supported Windows sandbox configuration:
@oai/skylist_windows()list_apps()get_window_state({ include_text: true, include_screenshot: true })Passing import or enumeration alone is not sufficient. I can provide sanitized logs and exact shipped-file hashes privately if a maintainer requests them.
Independent confirmation on the current Windows build, with a reversible permissions A/B in the same Codex task.
Environment
26.803.5235.026.803.41515@oai/sky:0.6.2Before testing, I granted
CodexSandboxUsersread/execute traversal on%LOCALAPPDATA%\OpenAIand%LOCALAPPDATA%\OpenAI\Codex, plus inherited(OI)(CI)(RX)on the Codexruntimesdirectory. I then restarted Codex and Windows.Using a freshly reset
node_replkernel each time:@oai/skysucceeds, but the firstawait sky.list_windows()fails immediately withspawn EPERM.sky.list_windows()succeeds and returns all 5 open windows. A subsequentget_window_state({ include_screenshot: false, include_text: true })on the visible Codex window also succeeds and returns accessibility state.sky.list_windows()immediately returnsspawn EPERMagain.No runtime, plugin, ACL, application, or machine state changed between steps 1–3; only the task permission mode changed. This confirms that the ACL grant alone is insufficient and isolates the remaining failure to the normal Codex-managed sandbox/helper-spawn path. Full Access is a reliable per-task workaround, but normal permissions remain unusable for Computer Use.
Independent reproduction: Windows Computer Use
spawn EPERMSame environment as this issue, reproduced on Windows 11 x64.
Current environment
| Item | Value |
|---|---|
| OS | Windows 11 x64 |
| Codex Desktop |
26.803.5235.0(Store/MSIX) || Computer Use plugin |
26.803.41515|| Bundled command runner |
0.147.0-alpha.6.5|| Bundled
@oai/sky|0.6.2|| Bundled
@oai/cua|0.1.1|| Bundled Node.js |
24.14.0|| Windows sandbox |
unelevated(fallback) |Failure position
The error happens before any window enumeration or app interaction:
Reproduces in fresh tasks, after Codex restart, after Windows restart, and after reinstall. It is independent of the approval mode:
spawn EPERMspawn EPERMspawn EPERMRoot cause hypothesis (evidence-based)
@oai/skyWindows transport (windows/internal/helper_transport.js) importsspawnfromnode:child_processand launchescodex-computer-use.exedirectly over stdio. Inside the managed sandbox this spawn is denied withEPERM. The helper exists, is signed by OpenAI, and works from an unsandboxed context, so the failing boundary is the sandbox launch policy / desktop bridge, not the helper binary.CodexSandboxUsershas read/execute on theruntimesdirectory but not on parent paths (AppData\Local\OpenAIandOpenAI\Codex);CodexSandboxOnlineexists without a user profile. Sandbox logs repeatedly show access-denied while handlingC:\Users\Default. These explainEPERM lstatfailures, but not the full behavior, because all three approval modes still fail withspawn EPERM.What was checked (no changes made)
codex-windows-sandbox-setup.exeexists under the MSIX package and has a valid OpenAI signature; sandbox log shows setup completed and read-ACL pass completed.codex-computer-use.exeexists in both the package resources and the user-localcua_noderuntime.SKY_CUA_NATIVE_PIPEis present in config, but the Windows@oai/skytransport still spawns the helper directly; I did not find a Windows native-pipe path being used by that transport.cmd.exeand enumerate windows from an unsandboxed diagnostic context.Suggested directions for the fix
import("@oai/sky")→list_windows()→get_window_state()→ one harmless input, under both Windows sandbox modes.@oai/skyAPI in sync; in this runtimesky.documentationis not exported even though the skill tells callers to use it.Related reports: #37678, #37629, #37427, #37293, #37272 (older version), #21470.
I hope someone will be assigned to this soon. Losing Computer Use is a big problem! I don't want to have to run under Full Access to use it. That's too dangerous.
Agree completely. Full Access is too risky to use as a workaround. Hope the team can fix this soon
Adding a sanitized confirmation from another Windows system and consolidating #37845 here.
The failure reproduces with:
26.803.5235.026.803.41515@oai/sky 0.6.2unelevatedBoth lowest-risk discovery calls fail before returning any UI metadata:
Additional evidence:
@oai/sky's Windowshelper_transport.jsat Nodechild_process.spawn(), before helper communication or window enumeration.codex-computer-use.exeexists, has a valid OpenAI Authenticode signature, and has executable ACLs for the relevant sandbox identity.SKY_CUA_NATIVE_PIPEandSKY_CUA_NATIVE_PIPE_DIRECTORY, but the bundled@oai/sky 0.6.2JavaScript package does not reference those variables; its Windows transport unconditionally attempts to spawn the helper.sky.documentationis also absent from@oai/sky 0.6.2. Reading the complete static plugin guidance works around that documentation mismatch, but does not changespawn EPERM.--disable-sandboxto the bundled Node REPL, and a controlled environment A/B did not change the error.No helper was launched directly and no registry, manifest, ACL, plugin-cache, or Windows security setting was modified. Full Access is not being used as a workaround.
Update: the original Computer Use
spawn EPERMfailure is now resolved for me after the Codex Desktop app updated from26.803.5235.0to26.803.10989.0.Current versions:
26.803.10989.026.803.81509@oai/sky:0.6.6I compared the old and new bundled Computer Use runtimes. In
@oai/sky 0.6.2, the Windows client attempted to spawncodex-computer-use.exedirectly from the sandboxed Node runtime, which failed withspawn EPERM.In
@oai/sky 0.6.6, whenSKY_CUA_NATIVE_PIPE=1, the client instead connects throughnodeRepl.nativePipe.createConnectionusingSKY_CUA_NATIVE_PIPE_DIRECTORY. The Codex Desktop host owns the helper connection and approval flow, so Computer Use now works and the normal application approval UI can appear.I had previously tested a temporary localhost bridge workaround, but that process is no longer running and the patched old runtime is no longer installed. The current successful behavior is therefore coming from the updated official bundle, not the workaround.
I have verified that the original Computer Use failure is fixed. I have not retested the separate elevated-sandbox WindowsApps ACL setup failure described in this issue.
This is an observation from comparing the locally installed old and new bundled runtimes, not an official confirmation of the implementation change from OpenAI.
I can confirm that computer use is now operational. Thank you!
I have a question regarding its use.
During the early part of my session I was able to use computer use to open
the Run Dialog. By the end of my session, I was unable to, and I received
the following response:
"I can’t automate the Windows Run dialog. Press Windows key + R to open
it."
Is this intentional?
Thanks again for the fix!
On Tue, Aug 11, 2026 at 2:08 AM noname @.***> wrote:
Independent reproduction on a newer Codex build.
Environment:
Observed:
From the Codex sandboxed Node REPL:
const { spawn } = require("child_process");
const p = spawn("C:\\Windows\\System32\\whoami.exe");
p.stdout.pipe(process.stdout);
p.stderr.pipe(process.stderr);
p.on("close", code => console.log("EXIT", code));
p.on("error", error => console.error("ERROR", error.code, error.message));
Result:
ERROR EPERM spawn EPERM
No stdout, stderr, or exit code is produced.
The same sandboxed context also fails to launch the bundled signed
codex-computer-use.exehelper withspawn EPERM, before any application interaction occurs.Control test outside Codex:
From ordinary non-administrator PowerShell, using installed Node:
& "C:\Program Files\nodejs\node.exe" -e "const {spawn}=require('child_process'); const p=spawn('C:\\Windows\\System32\\whoami.exe'); p.stdout.pipe(process.stdout); p.stderr.pipe(process.stderr); p.on('close',c=>console.log('EXIT',c)); p.on('error',e=>console.error('ERROR',e.code,e.message));"
Result:
<DOMAIN>\<USER>
EXIT 0
This strongly isolates the failure to the Codex sandboxed execution context rather than Windows or Node child-process creation generally.
Additional observations:
I can provide sanitized sandbox logs if a maintainer wants them.
Follow-up from my earlier reproduction: I consider the original issue resolved on the current build.
Working versions
26.803.10989.026.803.81509Under managed “approve for me” permissions, I reset the
node_replkernel and repeated the original smoke test:await sky.list_windows()succeeded and returned all 6 open windows.await sky.list_apps()call also succeeded, returning 40 apps and 6 windows.spawn EPERMdid not recur.A subsequent
get_window_state()attempt reached the Computer Use helper normally and declined only because the selected File Explorer window was minimized, not because of sandbox permissions.So, on this machine, the normal managed-permissions Computer Use launch path is fixed as of Codex Desktop build
26.803.10989.0/ plugin26.803.81509. Full Access is no longer required for the original failure.Confirmed regression on the same Windows installation:
26.803.5235.0— the first read-onlysky.list_apps()call fails before app/window selection withspawn EPERM(errno -4048).26.727.6591.0—sky.list_apps()succeeds and returns the available apps/windows.The affected runtime was replaced during the clean downgrade; the working runtime is different. This strongly indicates an app/runtime regression rather than a project or target-application issue.
In-app feedback ID:
019febfa-08c6-76d1-baca-deea04f9be92No project data, chats, paths, credentials, or screenshots are included.