[BUG] Cowork Windows: MSIX container applies EFS encryption to vm_bundles folder on every launch, copyfile for smol-bin.vhdx permanently fails
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Cowork permanently fails to start on Windows 11 because the Claude Desktop MSIX process applies EFS (Encrypting File System) encryption attributes to the vm_bundles\claudevm.bundle directory every time it creates or recreates the folder. The app's startup flow attempts to copy smol-bin.x64.vhdx from the WindowsApps installation directory into this encrypted folder, which fails. The app aborts before ever sending a configure or startVM command to the cowork-svc service.
This is a distinct root cause from the DNS/API reachability issues in #24918, #24962, #24974, #25088, #25155, and #25206. The workspace never reaches the VM boot stage — it fails during initial file preparation.
<html>
<body>
<!--StartFragment--><h2 class="text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold">Root Cause Analysis</h2>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">The Claude Desktop MSIX app container applies NTFS EFS encryption attributes to the <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">vm_bundles\claudevm.bundle</code> directory when it creates it. This was confirmed via <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">cipher</code> showing "E" (encrypted) on the folder. The parent folders (<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">AppData\Roaming</code> and <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">AppData\Roaming\Claude</code>) are <strong>not</strong> encrypted — the encryption is introduced specifically by the MSIX process context when creating the subfolder tree.</p>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">When the app attempts to copy <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">smol-bin.x64.vhdx</code> from WindowsApps into this encrypted folder, Windows tries to encrypt the destination file during the copy, which fails because the necessary EFS certificate context is not available. This copy runs on <strong>every launch</strong> as part of the app's startup flow, meaning manual workarounds are undone each time.</p>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Additionally, the <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">cldflt</code> (Windows Cloud Files / OneDrive) filesystem filter driver was found to be loaded system-wide (confirmed via <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">fltmc</code>), which may be contributing to the encryption behavior or interfering with file operations, even when OneDrive is not syncing the affected folders.</p>
<h3 class="text-text-100 mt-2 -mb-1 text-base font-bold">Why manual fixes don't persist</h3>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Through extensive testing, we confirmed that the app deletes and recreates <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">vm_bundles</code> on each launch. The MSIX container re-applies EFS encryption to the new folder, and the copyfile operation for <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">smol-bin.x64.vhdx</code> fails again. This makes all manual interventions (decryption, file pre-staging, junctions) temporary at best.</p>
<h3 class="text-text-100 mt-2 -mb-1 text-base font-bold">Service starts fine — app never configures it</h3>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">By manually launching <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">cowork-svc.exe</code> via PsExec, we confirmed the VM service starts successfully, initializes HCS/HCN, detects the NAT network, and listens on the named pipe. When Claude Desktop connects, it exchanges <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">isGuestConnected</code> and <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">subscribeEvents</code> calls but <strong>never sends a <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">configure</code> or <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">startVM</code> command</strong>. The service log shows:</p>
<div class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg"><div class="sticky opacity-0 group-hover/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"><div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"><button class="inline-flex
items-center
justify-center
relative
shrink-0
can-focus
select-none
disabled:pointer-events-none
disabled:opacity-50
disabled:shadow-none
disabled:drop-shadow-none border-transparent
transition
font-base
duration-300
ease-[cubic-bezier(0.165,0.85,0.45,1)] h-8 w-8 rounded-md active:scale-95 backdrop-blur-md Button_ghost__BUAoh" type="button" aria-label="Copy to clipboard" data-state="closed"><div class="relative"><div class="transition-all opacity-100 scale-100" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-100 scale-100" aria-hidden="true" style="flex-shrink: 0;"><path d="M12.5 3C13.3284 3 14 3.67157 14 4.5V6H15.5C16.3284 6 17 6.67157 17 7.5V15.5C17 16.3284 16.3284 17 15.5 17H7.5C6.67157 17 6 16.3284 6 15.5V14H4.5C3.67157 14 3 13.3284 3 12.5V4.5C3 3.67157 3.67157 3 4.5 3H12.5ZM14 12.5C14 13.3284 13.3284 14 12.5 14H7V15.5C7 15.7761 7.22386 16 7.5 16H15.5C15.7761 16 16 15.7761 16 15.5V7.5C16 7.22386 15.7761 7 15.5 7H14V12.5ZM4.5 4C4.22386 4 4 4.22386 4 4.5V12.5C4 12.7761 4.22386 13 4.5 13H12.5C12.7761 13 13 12.7761 13 12.5V4.5C13 4.22386 12.7761 4 12.5 4H4.5Z"></path></svg></div><div class="absolute inset-0 flex items-center justify-center"><div class="transition-all opacity-0 scale-50" style="width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;"><svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="transition-all opacity-0 scale-50" aria-hidden="true" style="flex-shrink: 0;"><path d="M15.1883 5.10908C15.3699 4.96398 15.6346 4.96153 15.8202 5.11592C16.0056 5.27067 16.0504 5.53125 15.9403 5.73605L15.8836 5.82003L8.38354 14.8202C8.29361 14.9279 8.16242 14.9925 8.02221 14.9989C7.88203 15.0051 7.74545 14.9526 7.64622 14.8534L4.14617 11.3533L4.08172 11.2752C3.95384 11.0811 3.97542 10.817 4.14617 10.6463C4.31693 10.4755 4.58105 10.4539 4.77509 10.5818L4.85321 10.6463L7.96556 13.7586L15.1161 5.1794L15.1883 5.10908Z"></path></svg></div></div></div></button></div></div><div class="overflow-x-auto"><pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5" style="color: rgb(234, 236, 240); background: transparent; font-family: var(--font-mono);"><code style="color: rgb(234, 236, 240); background: transparent; font-family: var(--font-mono); white-space: pre-wrap;"><span><span>Waiting for configuration from app via 'configure' method...</span></span></code></pre></div></div>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">This confirms the app's own startup code aborts at the file preparation stage (the smol-bin copyfile) before it ever reaches VM configuration. The service itself is not the problem.</p>
<h2 class="text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold">Extensive Troubleshooting Performed</h2>
<h3 class="text-text-100 mt-2 -mb-1 text-base font-bold">Phase 1: Identifying EFS encryption as the cause</h3>
<div class="overflow-x-auto w-full px-2 mb-6">
Step | Result
Checked AppData\Roaming and AppData\Roaming\Claude with cipher | Both showed "U" (unencrypted)
Checked vm_bundles\claudevm.bundle with cipher | Showed "E" (encrypted) — this was the source of the problem
Manual copy via Command Prompt | Failed: "file could not be encrypted"
Copy as SYSTEM via PsExec (PsExec64.exe -s cmd /c copy) | Failed: same encryption error
robocopy /B /COPY:D (backup mode, data only) | Succeeded — stripped encryption attributes during copy. File copied successfully (36 MB)
Manually decrypting folder via cipher /d then creating sessiondata.vhdx via New-VHD | Initially failed with 0x80071772 (encrypted), succeeded after cipher /d
</div>
<html>
<body>
<!--StartFragment--><h3 class="text-text-100 mt-2 -mb-1 text-base font-bold">Phase 2: Attempting to make the fix permanent</h3>
<div class="overflow-x-auto w-full px-2 mb-6">
Step | Result
cipher /d on destination folders before launch | Claude Desktop recreated folders with encryption on next launch
Pre-creating folder structure and marking unencrypted before launch | Claude Desktop still recreated with encryption
fsutil behavior set disableencryption 1 + full reboot | Did not prevent MSIX container from applying EFS
Junction vm_bundles to AppData\Local to bypass cldflt filter driver | Download succeeded, but MSIX still applied EFS to the junction target. Errors shifted from "could not be encrypted" to "Access Denied"
Uninstall + reinstall with junction pre-staged | Same result — EFS applied to junction target
Copying smol-bin to intermediate C:\Temp via robocopy, then to destination | Intermediate copy succeeded, but copy from temp to destination failed with Access Denied even after takeown and icacls /grant
WSL2 cp from temp to destination | Permission denied
Windows Explorer drag-and-drop from temp to destination | Access Denied
</div>
<html>
<body>
<!--StartFragment--><h3 class="text-text-100 mt-2 -mb-1 text-base font-bold">Phase 3: Confirming the service is not the problem</h3>
<div class="overflow-x-auto w-full px-2 mb-6">
Step | Result
Manually launched cowork-svc.exe via PsExec64.exe -s | Service started successfully, HCS/HCN initialized, named pipe listening
Opened Claude Desktop with service pre-started | App connected, exchanged isGuestConnected/subscribeEvents calls, but never sent configure or startVM
Checked cowork_vm_node.log | Log shows "Module loaded successfully" and then nothing — no [VM:start] Configuring Windows VM service... line ever appears
</div><!--EndFragment-->
</body>
</html>
</body>
</html>
<h3 class="text-text-100 mt-2 -mb-1 text-base font-bold">Additional observations</h3>
<ul class="[li_&]:mb-0 [li_&]:mt-1 [li_&]:gap-1 [&:not(:last-child)_ul]:pb-1 [&:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3">
<li class="whitespace-normal break-words pl-2">The app logs "All files ready" even when <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">smol-bin.vhdx</code> and <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">sessiondata.vhdx</code> are missing from the bundle directory</li>
<li class="whitespace-normal break-words pl-2">The app never creates <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">sessiondata.vhdx</code> (known issue from #24962 and #24974)</li>
<li class="whitespace-normal break-words pl-2"><code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">fltmc</code> shows <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">cldflt</code> (OneDrive Cloud Files filter) loaded system-wide, even though OneDrive is only syncing <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">C:\Users\<user>\OneDrive</code></li>
<li class="whitespace-normal break-words pl-2">After disabling EFS and using junctions, errors shifted from encryption-related to Access Denied, suggesting a secondary MSIX container filesystem virtualization issue</li></ul><!--EndFragment-->
</body>
</html>
What Should Happen?
Expected Behavior
The MSIX app container should create vm_bundles without EFS encryption attributes
The copyfile operation for smol-bin.x64.vhdx should succeed
sessiondata.vhdx should be created automatically
The app should proceed to send configure and startVM to the cowork-svc service
Suggested Fix
The MSIX package or the app's folder creation logic should explicitly prevent EFS encryption on the vm_bundles folder. Possible approaches:
Call DecryptFile() or SetFileAttributes() to clear encryption after folder creation
Use CreateDirectory with attributes that exclude EFS inheritance
Copy smol-bin.vhdx using raw byte streams rather than filesystem copy (bypasses EFS)
Add cipher /d as a step in the workspace setup pipeline
Detect EFS on the target folder and handle it gracefully
Error Messages/Logs
Failed to start Claude's workspace
UNKNOWN: unknown error, copyfile
'C:\Program Files\WindowsApps\Claude_1.1.3189.0_x64__pzs8sxrjxfjjc\app\resources\smol-bin.x64.vhdx'
-> 'C:\Users\<user>\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\smol-bin.vhdx'
Steps to Reproduce
- Install Claude Desktop v1.1.3189.0 from Microsoft Store (MSIX) on Windows 11
- Ensure Hyper-V is enabled
- Open Claude Desktop and switch to the Cowork tab
- Observe "Failed to start Claude's workspace" copyfile error
Claude Model
Opus
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
Claude Desktop v1.1.3189.0
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
WSL (Windows Subsystem for Linux)
Additional Information
<html>
<body>
<!--StartFragment--><h2 class="text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold">Environment</h2>
<ul class="[li_&]:mb-0 [li_&]:mt-1 [li_&]:gap-1 [&:not(:last-child)_ul]:pb-1 [&:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3">
<li class="whitespace-normal break-words pl-2"><strong>OS:</strong> Windows 11 (Build available on request)</li>
<li class="whitespace-normal break-words pl-2"><strong>Claude Desktop Version:</strong> v1.1.3189.0 (Microsoft Store / MSIX)</li>
<li class="whitespace-normal break-words pl-2"><strong>Architecture:</strong> x64</li>
<li class="whitespace-normal break-words pl-2"><strong>Hyper-V:</strong> Enabled, vmcompute and vmms services running</li>
<li class="whitespace-normal break-words pl-2"><strong>OneDrive:</strong> Installed, syncing only <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">C:\Users\<user>\OneDrive</code>, but <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">cldflt</code> filter driver loaded system-wide</li>
<li class="whitespace-normal break-words pl-2"><strong>EFS:</strong> Attempted system-wide disable via <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">fsutil behavior set disableencryption 1</code> — did not prevent MSIX from applying encryption</li>
<li class="whitespace-normal break-words pl-2"><strong>VPN:</strong> None</li>
<li class="whitespace-normal break-words pl-2"><strong>Antivirus:</strong> Windows Defender only (no McAfee or third-party AV)</li>
</ul>
<h2 class="text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold">Tools Used During Investigation</h2>
<div class="overflow-x-auto w-full px-2 mb-6">
Tool | Purpose
cipher | Check/remove EFS encryption attributes
PsExec64.exe (Sysinternals) | Run commands and cowork-svc.exe as SYSTEM
robocopy /B /COPY:D | Copy files bypassing ACLs and stripping encryption
New-VHD (Hyper-V PowerShell) | Create dynamic VHDX for VM session disk
fsutil behavior set disableencryption 1 | Attempt system-wide EFS disable
fltmc | Identify filesystem filter drivers
mklink /J | Create NTFS junction to redirect vm_bundles
compact /u /s /a /i | Remove NTFS compression attributes
</div>
<hr class="border-border-200 border-t-0.5 my-3 mx-1.5">
</body>
</html>
This issue has 7 comments on GitHub. Read the full discussion on GitHub ↗