[BUG] Cowork VM cannot read SDK binary - MSIX Application Protected encryption blocks virtiofs access
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 workspace fails to start with input/output error when the VM tries to read the SDK binary via virtiofs. The root cause is that Windows MSIX packaging automatically applies Application Protected encryption to files in the Store app's LocalCache\Roaming path. The virtiofs filesystem inside the Cowork VM cannot read these encrypted files.
What Should Happen?
Root Cause Analysis
The SDK binary is stored at:
C:\Users\<user>\AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude-code-vm\2.1.78\claude
Running cipher /c on this file shows:
E claude
Compatibility Level:
Application Protected
This is not user-initiated EFS encryption — it is automatically applied by Windows to files within the MSIX LocalCache\Roaming path. The VM shares C:\Users\<user> as the virtiofs root, but virtiofs cannot read Application Protected files, resulting in input/output error.
Additional evidence: Copy-Item from the Store path to AppData\Roaming\Claude fails with The specified file could not be encrypted, and all skill downloads fail with EXDEV: cross-device link not permitted (cross-device rename between Store sandbox and Roaming paths).
Error Messages/Logs
RPC error -1: failed to open SDK binary: open /mnt/.virtiofs-root/shared/AppData/Local/Packages/Claude_pzs8sxrjxfjjc/LocalCache/Roaming/Claude/claude-code-vm/2.1.78/claude: input/output error
## Root Cause Analysis
The SDK binary is stored at:
C:\Users\<user>\AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude-code-vm\2.1.78\claude
Running `cipher /c` on this file shows:
E claude
Compatibility Level:
Application Protected
This is **not** user-initiated EFS encryption — it is automatically applied by Windows to files within the MSIX `LocalCache\Roaming` path. The VM shares `C:\Users\<user>` as the virtiofs root, but virtiofs cannot read Application Protected files, resulting in `input/output error`.
Additional evidence: `Copy-Item` from the Store path to `AppData\Roaming\Claude` fails with `The specified file could not be encrypted`, and all skill downloads fail with `EXDEV: cross-device link not permitted` (cross-device rename between Store sandbox and Roaming paths)
Steps to Reproduce
Steps to Reproduce
- Install Claude Desktop via the MSIX installer from claude.com/download on a Windows 11 Pro machine
- Log in and start Cowork
- VM boots successfully, network connects, API is reachable
- SDK install step fails with virtiofs I/O error
Claude Model
Not sure / Multiple models
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
2.1.78
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
Expected Behavior
Cowork workspace should start successfully. The SDK binary should be readable by the VM via virtiofs.
Attempted Fixes (none resolved the issue)
- Cleared SDK cache (
claude-code-vmfolder) and restarted — SDK re-downloads but gets re-encrypted - Cleared
vm_bundlesand restarted — VM rebuilds but same error - Ran
cipher /d /s:on the Store path — files cannot be decrypted (Store sandbox prevents it,The parameter is incorrect) - Ran
cipher /d /s:onAppData\Roaming\Claude— decrypted Roaming path but SDK is in Store path - Copied SDK binary to
AppData\Roaming\Claude\claude-code-vmvia robocopy/EFSRAW— file copies but VM hardcodes the Store subpath - Full uninstall and reinstall of Claude Desktop — same issue
- Complete PC reboot between attempts
Suggested Fix
The VM's postConnect SDK install resolves the SDK path via getVMStorageSubpath which maps to the Store sandbox path:
[VM] getVMStorageSubpath: home=C:\Users\saman, vmStorageDir=C:\Users\saman\AppData\Roaming\Claude\claude-code-vm, subpath=AppData/Local/Packages/Claude_pzs8sxrjxfjjc/LocalCache/Roaming/Claude/claude-code-vm
Possible fixes:
- Store the SDK binary outside the MSIX
LocalCachepath (e.g., directly inAppData\Roaming\Claude\claude-code-vm) - Use the Roaming path for
vmStorageDirandsubpathinstead of the Store-redirected path - Copy the SDK binary to a non-encrypted location before passing the path to the VM
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗