claude-code - 💡(How to fix) Fix [BUG] Cowork sandbox VM bundle not found in Roaming path on Windows 10 Pro (Store/AppX install) — hardlink workaround

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

Claude Desktop Cowork sandbox fails to start with "Virtualization is not available" / "虚拟机不可用" error, even though WSL 2 and Virtual Machine Platform are working correctly.

Root Cause

Root cause: When Claude Desktop is installed as a Windows Store (AppX) package, the VM bundle file (claudevm.bundle) is stored under the per-user AppX package storage (%LOCALAPPDATA%\Packages\Claude_*\LocalCache\Local\Claude-3p\vm_bundles\). However, the sandbox initialization code looks for this bundle in the Roaming path (%APPDATA%\Claude-3p\vm_bundles\), which does not exist by default for Store-installed versions.

Fix Action

Fix / Workaround

Workaround: Hardlink Fix

Code Example

# Files exist at:
%LOCALAPPDATA%\Claude-3p\vm_bundles\claudevm.bundle
# But sandbox looks for:
%APPDATA%\Claude-3p\vm_bundles\claudevm.bundleNot found

---

# 1. Find the Claude package storage
$pkgDir = (Get-ChildItem "$env:LOCALAPPDATA\Packages" -Dir -Filter "Claude_*" | Select-Object -First 1).FullName
$src = "$pkgDir\LocalCache\Local\Claude-3p\vm_bundles\claudevm.bundle"
$dstDir = "$env:APPDATA\Claude-3p\vm_bundles"

# 2. Create destination directory
New-Item -ItemType Directory -Path $dstDir -Force -ErrorAction SilentlyContinue | Out-Null

# 3. Create hard links for each file
Get-ChildItem -Path (Split-Path $src) | ForEach-Object {
    $targetFile = Join-Path $dstDir $_.Name
    if (-not (Test-Path $targetFile)) {
        New-Item -ItemType HardLink -Path $targetFile -Target $_.FullName
    }
}
RAW_BUFFERClick to expand / collapse

Environment

  • OS: Microsoft Windows 10 Pro 10.0.19045 Build 19045
  • Claude Desktop: Store/AppX package version (Claude_pzs8sxrjxfjjc)
  • CPU: 12th Gen Intel Core i5-12400F
  • RAM: 32GB
  • GPU: NVIDIA GeForce RTX 5050
  • WSL: Ubuntu (Running, WSL 2)

Virtualization Feature Status

FeatureStatus
Microsoft-Hyper-VDisabled
VirtualMachinePlatformEnabled
HypervisorPlatformDisabled
Microsoft-Windows-Subsystem-LinuxEnabled

Note: WSL 2 works correctly, but full Hyper-V is not enabled.

Bug Description

Claude Desktop Cowork sandbox fails to start with "Virtualization is not available" / "虚拟机不可用" error, even though WSL 2 and Virtual Machine Platform are working correctly.

Root cause: When Claude Desktop is installed as a Windows Store (AppX) package, the VM bundle file (claudevm.bundle) is stored under the per-user AppX package storage (%LOCALAPPDATA%\Packages\Claude_*\LocalCache\Local\Claude-3p\vm_bundles\). However, the sandbox initialization code looks for this bundle in the Roaming path (%APPDATA%\Claude-3p\vm_bundles\), which does not exist by default for Store-installed versions.

# Files exist at:
%LOCALAPPDATA%\Claude-3p\vm_bundles\claudevm.bundle  ✓

# But sandbox looks for:
%APPDATA%\Claude-3p\vm_bundles\claudevm.bundle       ✗ Not found

Workaround: Hardlink Fix

The solution is to create hard links from the Local (package storage) to the Roaming path so the sandbox initialization finds the required files.

Run the following in an Administrator PowerShell:

# 1. Find the Claude package storage
$pkgDir = (Get-ChildItem "$env:LOCALAPPDATA\Packages" -Dir -Filter "Claude_*" | Select-Object -First 1).FullName
$src = "$pkgDir\LocalCache\Local\Claude-3p\vm_bundles\claudevm.bundle"
$dstDir = "$env:APPDATA\Claude-3p\vm_bundles"

# 2. Create destination directory
New-Item -ItemType Directory -Path $dstDir -Force -ErrorAction SilentlyContinue | Out-Null

# 3. Create hard links for each file
Get-ChildItem -Path (Split-Path $src) | ForEach-Object {
    $targetFile = Join-Path $dstDir $_.Name
    if (-not (Test-Path $targetFile)) {
        New-Item -ItemType HardLink -Path $targetFile -Target $_.FullName
    }
}

After running this, restart Claude Desktop. The sandbox should initialize correctly.

Notes

  • This fix is needed when Claude Desktop is installed via the Windows Store (AppX/MSIX packaging), which virtualizes the AppData paths
  • The mklink /J (junction) approach does NOT work — only hard links (or New-Item -ItemType HardLink) work correctly
  • This is different from the Win 11 24H2/25H2 VMP detection bug — this issue affects Win 10 Pro where virtualization features are partially enabled

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING