You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Linux x64 VM bundle manifest checksums injected by patch_cowork_linux() (Patch 4 in build.sh) become stale when Anthropic updates the VM files on their CDN. This causes Cowork to enter an infinite download retry loop:
[Bundle:status] rootfs.vhdx missing
rootfs.vhdx not found, downloading...
Downloading rootfs.vhdx...
[download] VM download failed: Checksum mismatch for rootfs.vhdx.zst:
expected a829fe446f24..., got 1d49e23b4cce...
The app downloads the file successfully but rejects it because the hardcoded checksum doesn't match. This repeats for each file (rootfs.vhdx, vmlinuz, initrd) and the app never reaches the startVM/isGuestConnected stage.
Root cause
Patch 4 in build.sh computes SHA-256 checksums of the VM bundle files at build time and injects them into the app.asar manifest. When Anthropic updates the files on downloads.claude.ai, the checksums in the already-built .deb become stale.
Current workaround
Manually replacing the checksums in app.asar using sed:
sudo chattr -i /usr/lib/claude-desktop/node_modules/electron/dist/resources/app.asar
# For each mismatched file (rootfs.vhdx, vmlinuz, initrd):
sudo sed -i 's/OLD_CHECKSUM/NEW_CHECKSUM/g' \
/usr/lib/claude-desktop/node_modules/electron/dist/resources/app.asar
sudo chattr +i /usr/lib/claude-desktop/node_modules/electron/dist/resources/app.asar
The actual checksums from CDN errors can be found in ~/.config/Claude/logs/cowork_vm_node.log.
Suggested fixes
For bwrap users (default backend): The bwrap backend doesn't use rootfs.vhdx/vmlinuz/initrd at all. The manifest could inject an empty files array for Linux so no download is attempted. The download happens unconditionally in the app-side code before the daemon backend is even selected.
For all users: The build script could fetch the current checksums from the CDN at build time rather than computing them from local files that may be from a different version. Alternatively, a post-install hook or launcher wrapper could verify and update checksums on launch.
Problem
The Linux x64 VM bundle manifest checksums injected by
patch_cowork_linux()(Patch 4 inbuild.sh) become stale when Anthropic updates the VM files on their CDN. This causes Cowork to enter an infinite download retry loop:The app downloads the file successfully but rejects it because the hardcoded checksum doesn't match. This repeats for each file (rootfs.vhdx, vmlinuz, initrd) and the app never reaches the
startVM/isGuestConnectedstage.Root cause
Patch 4 in
build.shcomputes SHA-256 checksums of the VM bundle files at build time and injects them into the app.asar manifest. When Anthropic updates the files ondownloads.claude.ai, the checksums in the already-built .deb become stale.Current workaround
Manually replacing the checksums in app.asar using
sed:The actual checksums from CDN errors can be found in
~/.config/Claude/logs/cowork_vm_node.log.Suggested fixes
For bwrap users (default backend): The bwrap backend doesn't use rootfs.vhdx/vmlinuz/initrd at all. The manifest could inject an empty files array for Linux so no download is attempted. The download happens unconditionally in the app-side code before the daemon backend is even selected.
For all users: The build script could fetch the current checksums from the CDN at build time rather than computing them from local files that may be from a different version. Alternatively, a post-install hook or launcher wrapper could verify and update checksums on launch.
Nightly rebuild: PR fix: disable GPU compositing for XRDP/VNC sessions + nightly update scripts #320 proposes nightly rebuilds which would naturally pick up new checksums, but doesn't solve the problem between rebuilds.
Environment