[BUG] Cowork VM fails to start: Plan9 share fails on non-NTFS/unmounted volumes (E_INVALIDARG 0x80070057)
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?
Summary
Cowork VM fails to start when any mounted drive letter on the host is non-standard (raw partition, EFI partition, unmounted VeraCrypt slot, or other non-NTFS volume). The VM service attempts to add a Plan9 share for every drive letter visible to SYSTEM, and fails fatally on the first one it cannot share, rather than skipping it gracefully.
Environment
- OS: Windows 11
- Claude Desktop version: 1.569.0.0
- CoworkVMService runs as: LocalSystem
Error Message
Failed to start Claude's workspace
failed to add Plan9 share 'd': HcsWaitForOperationResult failed with HRESULT 0x80070057: {"Error":-2147024809,"ErrorMessage":""}
Log Evidence
From %ProgramData%\Claude\Logs\cowork-service.log:
[VM] Adding Plan9 share via HcsModifyComputeSystem: name=d path=D:\ port=9903 flags=0x10 hasToken=true
[HCS] HcsModifyComputeSystem returned: hr=0x0, lastErr=The operation completed successfully.
[HCS] Modify result: {"Error":-2147024809,"ErrorMessage":""}
[VM] Failed to add Plan9 share 'd': HcsWaitForOperationResult failed with HRESULT 0x80070057
[VNet] Virtual network stopped
[RPC] Server stopped
The VM boots successfully (HcsCreateComputeSystem and HcsStartComputeSystem both return hr=0x0). The failure occurs during the post-boot Plan9 share enumeration phase.
Root Cause
CoworkVMService enumerates all drive letters visible to SYSTEM and attempts to add each as a Plan9 share. It fails fatally (and kills the VM) on the first drive that HCS cannot share. Non-fatal/skippable cases encountered:
- Raw/unformatted partition with an assigned drive letter (D: in first instance)
- Unmounted VeraCrypt reserved drive slot with no volume attached (Q: in second instance)
Neither of these is accessible or useful to share, but the service does not check volume type or accessibility before attempting — and does not handle the failure gracefully.
Why It's Hard to Work Around
CoworkVMService runs as LocalSystem, so drive visibility cannot be restricted via user-level ACLs. Removing the offending drive letters is the only workaround, but on complex systems (encrypted volumes, multiple partitions) this causes whack-a-mole across multiple drive letters.
Successful Recovery Steps
- Remove offending drive letter(s) from Disk Management
- Run as Admin:
net stop CoworkVMService
taskkill /F /IM claude.exe
taskkill /F /IM cowork-svc.exe
net stop vmcompute
Remove-Item -Recurse -Force "$env:APPDATA\Claude\claude-code-vm" -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force "$env:APPDATA\Claude\vm_bundles" -ErrorAction SilentlyContinue
net start vmcompute
net start CoworkVMService
- Relaunch Claude Desktop
Expected Behaviour
Cowork should either:
- Only share a user-selected workspace folder, not all drive letters; or
- Enumerate drive letters but skip any that are not standard local NTFS volumes without failing the entire VM boot
Additional Notes
This issue persists across app reinstalls and workspace reinstalls because the drive enumeration happens at runtime, not from a cached state. The stale drive letter reference also survives partial cleanup (stopping CoworkVMService alone is insufficient — vmcompute and the vm_bundles directory must both be reset).
What Should Happen?
Cowork should either:
- Only share a user-selected workspace folder, not all drive letters; or
- Enumerate drive letters but skip any that are not standard local NTFS volumes without failing the entire VM boot
Error Messages/Logs
Steps to Reproduce
Most recent claude windows app on a system with unmounted, encrypted drive(s).
Claude Model
Not sure / Multiple models
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.89 (Claude Code)
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Other
Additional Information
This info. was generated by claude chat, which was used to troubleshoot the problem and submitted by Cowork.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗