[BUG] Cowork VM download infinite loop on Linux — checksum mismatch between compressed and uncompressed hashes
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?
What's Wrong?
On Linux (Fedora 42, claude-desktop 1.1.7714), Cowork gets stuck in an infinite download loop during VM initialization. The download reaches 99%+, then silently restarts from 0% — indefinitely.
Root cause: The app.asar manifest contains checksums for the uncompressed VM files (e.g., rootfs.vhdx), but the downloader appears to validate against the compressed .zst archive hash. Since these never match, the app deletes the downloaded file and retries.
Evidence from logs
[download:25] 99.3% (2203.3/2219.1 MB) avg 2.20 MB/s, ETA 7s
[download:26] Starting download from https://downloads.claude.ai/vms/linux/x64/.../rootfs.vhdx.zst
The download completes, but the checksum check fails:
[cache] Checksum mismatch for rootfs.vhdx:
expected a829fe446f24d5e49dcca7f4c61042cf79bc53197d06c582f3fac69282131410,
got 1d49e23b4cce8865412c201afa396df6112adb008b1476ec639df19b23c46be4
Manifest analysis
From the minified app.asar, the linux.x64 manifest expects:
rootfs.vhdx:a829fe44...(this is the hash of the uncompressed VHDX)- -
vmlinuz:9ab0e403... - - -
initrd:03221429...
The actually downloaded compressed rootfs.vhdx.zst has hash 1d49e23b... — which matches the win32.x64 entry in the same manifest. This confirms the mismatch is between compressed vs. uncompressed hashes, not corrupted data.
The same loop affects all three bundle files (rootfs.vhdx, vmlinuz, initrd).
What Should Happen?
The checksum validation should compare the hash of the uncompressed file after extraction, not the compressed .zst archive. Alternatively, the manifest should contain both compressed and uncompressed checksums.
Workaround
Manually download and decompress the VM files, bypassing the app's downloader entirely:
cd ~/.config/Claude/vm_bundles/claudevm.bundle
rm -rf wvm-*
# Download and extract each file
for f in rootfs.vhdx vmlinuz initrd; do
wget -q --show-progress "https://downloads.claude.ai/vms/linux/x64/fb30784dadb34104626c8cf6d8f90dd47cd393cc/${f}.zst"
zstd -d -f --rm "${f}.zst"
done
After this, restart Claude Desktop and Cowork boots immediately.
Environment
- OS: Fedora 42 (Linux 6.x, x86_64)
- - Claude Desktop: 1.1.7714 (RPM)
- - - Bundle version: fb30784dadb34104626c8cf6d8f90dd47cd393cc
Related issues
- #37699 — no resume mechanism for the ~10GB download (compounds this issue)
- - #37312 — similar signature verification failure on Windows
What Should Happen?
The Cowork VM should download and initialize successfully. The checksum validation should compare the hash of the uncompressed file after extraction, not the compressed .zst archive.
Error Messages/Logs
[cache] Checksum mismatch for rootfs.vhdx: expected a829fe446f24d5e49dcca7f4c61042cf79bc53197d06c582f3fac69282131410, got 1d49e23b4cce8865412c201afa396df6112adb008b1476ec639df19b23c46be4
[download:25] 99.3% (2203.3/2219.1 MB) avg 2.20 MB/s, ETA 7s
[download:26] Starting download from https://downloads.claude.ai/vms/linux/x64/.../rootfs.vhdx.zst
Steps to Reproduce
- Install Claude Desktop on Linux (Fedora 42, RPM package v1.1.7714)
- 2. Open Claude Desktop and click "Get started" to initialize Cowork
- 3. Observe the "Setting up Claude's workspace" progress bar
- 4. The download reaches ~99%, then silently restarts from 0%
- 5. This loop repeats indefinitely — the VM never successfully initializes
The root cause is visible in ~/.config/Claude/Logs/main.log:
- The download completes, but the checksum of the compressed
.zstfile is compared against the expected hash of the uncompressed file - - Since these never match, the app deletes the download and retries
Claude Model
None
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
1.1.7714 (Claude Desktop RPM, Fedora 42)
Platform
Anthropic API
Operating System
Other Linux
Terminal/Shell
Other
Additional Information
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗