DeepSeek Harness Windows install_dir_access ACL crash fix
7-Zip exit code 2, event log Exception 0x80000003, and double-clicking that does nothing are the same chain on Windows: the install directory DACL contains an AppContainer package SID without a matching ALL APPLICATION PACKAGES entry, so Chromium's install_dir_access check kills the main process outright. After checking the source, the community confirmed this is an Electron/Chromium check, not the DSH sandbox itself; the repair script ships with the package, but neither reinstalling nor clearing AppData touches it (#10863, #10983). The order below is: collect evidence, run three single-variable comparisons, and only then edit the ACL.
DeepSeek Harness: Experiment 1: add --enable-logging and catch the verdict
--enable-logging is the only evidence-gathering step that changes no system state: it writes one extra stderr stream and tells you whether the crash is really install_dir_access.
- Quit DSH completely, including the tray icon and any leftover process in Task Manager.
- Launch from the command line:
"<install-dir>\DeepSeek Harness.exe" --enable-logging. - Watch stderr for the
install_dir_accessline. A hit looks like this:
FATAL:electron\shell\browser\win\install_dir_access.cc:52]
Sandboxed processes cannot read D:\deepseekherness:
its ACL has an entry for an AppContainer package SID
but none for ALL APPLICATION PACKAGES...
- Also check Event Viewer → Windows Logs → Application for Event 1000. The shape the community recorded is
Exception 0x80000003, with the exe itself as the faulting module. - If stderr contains no
install_dir_access, this article does not apply; stop and change direction.
Keep one premise in mind: "packages cannot read" refers to the sandboxed renderer being unable to read install-tree files such as icudtl.dat, not to a problem with your project directory.
DSH plugin: Experiment 2: treat --no-sandbox as a signal, not a solution
Starting with --no-sandbox proves the problem sits in Chromium's install-directory access check; it is a triage signal, not a fix.
- Launch once with
--no-sandboxand confirm the window appears. - Then try
--disable-gpuand--disable-gpu-sandbox; the community found both ineffective — which is itself useful, because it rules out GPU issues and pins the sandbox's directory access check. - After repairing the ACL, remove
--no-sandboxand verify again; do not leave it in the shortcut.
DeepSeek Harness: Experiment 3: install to a writable path to separate "installer" from "directory"
When installation itself fails, reinstalling to a different path is the cleanest single-variable test: if it installs, the permissions on the target chain are at fault; if it still fails, suspect the installer or the temp directory.
- Try installing into a new drive or a newly created directory, such as
D:\DSH\, and make sure you created it manually as an ordinary directory. - If the original path was an inherited location like
%LOCALAPPDATA%\Programs, switching is especially worthwhile — the community saw install logs withCannot create folder : access deniedpointing atlocalesandresources, with 7-Zip stopping on the first extraction step. - If both paths fail, suspect the installer; if only the original fails, inspect the ACL on that chain. Also point
TEMPat an empty directory on another drive so the temp folder is not tagged at Low integrity.
DSH Plugin: Experiment 4: compare icacls output between two machines
Put the icacls output from the failing and working machines side by side and the difference is obvious: the failing machine's parent directory has extra S-1-15-3-1024-* and package SID S-1-15-2-<hash> entries, but no ALL APPLICATION PACKAGES entry at all.
- On the failing machine, run
icacls "D:\Application"and save the output to a file. - Run the same command on the working machine and save that too.
- Align them line by line and focus on three entry types:
S-1-15-3-*(orphan AppContainer SIDs),S-1-15-2-<hash>(specific package SIDs), andS-1-15-2-1/S-1-15-2-2(well-known groups). - The failing machine typically has the first two and lacks the last two; a working machine usually has no AppContainer entries at all, because its install directory inherited a normal DACL and never triggers this check.
DeepSeek Harness: Repair: run the bundled script first, then consider manual icacls
The official script is the first choice because it removes foreign package ACEs in ancestor-first order and fills in WRITE_DAC/WRITE_OWNER along the same chain; every change is backed up, read back, and rolled back with a printed command.
- Open a non-restricted PowerShell window (not a shell inside the DSH sandbox).
- Work out which layer actually carries the package SID: if
icacls D:\already shows it,-Pathshould beD:\, not the install directory. - Run:
& '<skill-dir>\scripts\diagnose-windows-sandbox-acl.ps1' `
-Path '<install-dir-or-volume-root>' `
-AllowRoot '<same-or-higher-dir>' `
-Out '<recovery-dir>'
- Read the output: the script removes explicit
S-1-15-2-*allow ACEs (except the well-known groups ending in 1 or 2) and adds the missing permissions. - If it refuses to proceed (reparse point, managed app directory), prepare the rollback command it prints, export the ACL with
icacls <dir> /save, and edit manually.
The minimal manual repair is to add the missing entry, granting both well-known groups:
icacls "<install-dir>" /grant "*S-1-15-2-1:(OI)(CI)(RX)" "*S-1-15-2-2:(OI)(CI)(RX)" /T
The community confirmed the script exists on the rc.3 tag (1f81c047) and master (22ddee3); after running this command, the reporter started normally with no launch flags at all.
DSH plugin: Why reinstalling is guaranteed to fail
ACLs belong to directories, not program files; an in-place update inherits whatever ACL it finds, and the uninstaller cleans app data rather than parent-directory ACLs, so a reinstall just lays the same broken environment down again.
- First rule out "the files were not fully written": that is a different problem (an empty runtime directory) whose symptom is ENOENT, not 0x80000003.
- Do not test by deleting app data under
%LOCALAPPDATA%; the community was explicit that the uninstaller only touches that part. - After fixing the ACL, reboot and verify again with
--enable-logging; you are done only wheninstall_dir_accessno longer appears in stderr. - Record which layer you changed; if it comes back after an update, check first whether the updater re-inherited the bad ACL.
Cautions
Export the ACL before touching it, and expect the updater to inherit it again.
- Do not run a broad
icacls /Ton a volume root. Export withicacls /savefirst so you can roll back before changing anything. S-1-15-2-1andS-1-15-2-2are two different well-known groups; in the community case both had to be added before recovery.- A script refusal is not a script defect. It deliberately refuses reparse points and managed app directories; handle those manually as instructed.
- Do not put
--no-sandboxinto your daily shortcut. It disables the entire renderer sandbox. - Check again after upgrading. The updater currently does not grant the AAP ACE, so a bad ACL travels along with the files.
If your log has no install_dir_access at all, this crash is not the ACL one — go back to the 0xC0000142 article and re-triage by host shape.See DSH plugin: Windows subprocess fails with 0xC0000142 for the related case.
FAQ
Confirm the install directory ACL problem in DeepSeek Harness by launching once with --enable-logging and looking for install_dir_access in stderr. That line means Chromium's install-directory access check failed, usually because the DACL has an AppContainer package SID but lacks ALL APPLICATION PACKAGES (S-1-15-2-1). If the line is absent, look elsewhere.
Reinstalling DeepSeek Harness and clearing AppData fail because the problem lives in directory ACLs, not in program files. The community's conclusion: an in-place update inherits the existing ACL, and the uninstaller only cleans app data, not parent-directory ACLs, so a reinstall never restores ALL APPLICATION PACKAGES.
No, --no-sandbox is not a fix for DeepSeek Harness; it only bypasses Chromium's install-directory access check. Starting that way proves the host runs inside the Chromium sandbox and that this check is failing; the correct move is to repair the ACL or remove the orphan package ACE with the bundled script, not to disable the sandbox long-term.
Usually not: the DeepSeek Harness installer is seldom broken when 7-Zip returns exit code 2 with Cannot create folder access denied. Install once into a path you know is writable, such as a newly created D:\DSH\; if that works, the permissions on the original target chain are the problem. Also switch TEMP to another directory to avoid a temp folder tagged at Low integrity.
Run the DeepSeek Harness script diagnose-windows-sandbox-acl as a non-restricted identity, point -Path at the layer that actually carries the package SID (possibly the volume root, not the install directory), set -AllowRoot to that same level or higher, and give -Out a recovery directory. It backs up first, verifies after writing, prints a rollback command, and refuses reparse points or managed app directories.
Related Terms
- install_dir_access
- install_dir_access is Chromium's sandboxed access check of the install directory on Windows, implemented in install_dir_access.cc. When the install directory DACL contains an AppContainer package SID but lacks ALL APPLICATION PACKAGES, the check fails and the main process exits FATAL.— https://github.com/deepseek-ai/deepseek-harness/discussions/10863
- ALL APPLICATION PACKAGES (S-1-15-2-1)
- ALL APPLICATION PACKAGES (S-1-15-2-1) is a well-known Windows group SID representing every AppContainer app package. Whenever any package SID appears in an install directory DACL, this group must also have read-and-execute rights, or the Chromium sandbox process cannot read the install tree.— https://github.com/deepseek-ai/deepseek-harness/discussions/10983
- AppContainer package SID
- An AppContainer package SID is the Windows SID that identifies one specific app package and looks like S-1-15-2-<hash>. Seeing one in an install directory DACL usually means another sandbox tool or an older version stamped the directory, and it is a common source of startup crashes.— https://github.com/deepseek-ai/deepseek-harness/discussions/10983
- diagnose-windows-sandbox-acl.ps1
- `diagnose-windows-sandbox-acl` is the ACL diagnostic and repair script bundled with the deepseek-harness sandbox package. It removes foreign AppContainer package ACEs in ancestor-first order, fills in missing WRITE_DAC/WRITE_OWNER, and backs up plus reads back every change.— https://github.com/deepseek-ai/deepseek-harness/discussions/10863
Sources
- #10863 — crash at launch when the volume root ACL has package SIDs but no ALL APPLICATION PACKAGES· deepseek-ai (GitHub Discussions)
- #10983 — install directory inherits an orphan AppContainer SID but lacks ALL APPLICATION PACKAGES· deepseek-ai (GitHub Discussions)
- #11318 — Windows client fails to start, starts normally with --no-sandbox· deepseek-ai (GitHub Discussions)
- #11369 — 0.2.1-rc.4 installer fails (7-Zip exit code 2)· deepseek-ai (GitHub Discussions)
- deepseek-ai/deepseek-harness (sandbox package README)· GitHub