[BUG] Cowork Linux: VM fails with vhost-user-fs "Read 0 instead of 12" under cowork-linux-helper, but identical qemu+virtiofsd boots standalone (Debian, QEMU 11.0.3)

Status Open
Maintainer reply None cached
Activity 0 comments · opened Aug 17, 2026

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?

The bundled virtiofsd 1.14.0 + system qemu-system-x86_64 11.0.3, invoked by hand with the same sandbox flags, memfd backend, and devices as cowork-linux-helper, boots the VM to a login prompt against the real shared folder — but the helper's own launch fails at vhost-user-fs … Read 0 instead of 12. The fault is in the helper's runtime context, not the host." Attach the working manual command + the failing helper log.

What Should Happen?

Cowork's workspace VM should boot successfully. The bundled virtiofsd (1.14.0) and
system qemu-system-x86_64 (11.0.3) are compatible: launched by hand with the same
-sandbox flags, memory-backend-memfd,share=on, kernel/initrd/rootfs, and the real
shared directory, the VM boots all the way to a login prompt and virtiofsd logs
"Client connected, servicing requests".

When cowork-linux-helper launches the same binaries, QEMU instead exits at startup:

qemu-system-x86_64: -device vhost-user-fs-pci,chardev=virtiofs0,tag=claudeshared:
Failed to read msg header. Read 0 instead of 12. Original request 0.
vhost_backend_init failed: Protocol error
-> qemu exited at startup: exit status 1 (all 3 retry attempts)

Since the identical invocation succeeds standalone, the fault appears to be in the
helper's runtime context (sandbox/rlimits/groups/env around the QEMU child), not the
host, the folder, or the binaries. Expected: the helper-launched VM should boot to the
same point the manual invocation reaches.

Error Messages/Logs

648:2026-08-17 08:32:48 [error] [VM:start] Startup failed: Error: qemu exited at startup: exit status 1
651:  [message]: 'qemu exited at startup: exit status 1',
656:2026-08-17 08:38:01 [info] [VM:start] Beginning startup, bundlePath=/home/tortho/.config/Claude/vm_bundles/claudevm.bundle
677:2026-08-17 08:38:01 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:01.651704 [virtiofsd] [2026-08-17T06:38:01Z INFO  virtiofsd] Client connected, servicing requests
679:2026-08-17 08:38:01 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:01.692302 [qemu] qemu-system-x86_64: -device vhost-user-fs-pci,chardev=virtiofs0,tag=claudeshared,bus=pcie.0,addr=0x6: Fail.
681:2026-08-17 08:38:01 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:01.720617 [vm] qemu exited at startup: exit status 1 (attempt 1)
693:2026-08-17 08:38:01 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:01.785604 [virtiofsd] [2026-08-17T06:38:01Z INFO  virtiofsd] Client connected, servicing requests
694:2026-08-17 08:38:01 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:01.830060 [qemu] qemu-system-x86_64: -device vhost-user-fs-pci,chardev=virtiofs0,tag=claudeshared,bus=pcie.0,addr=0x6: Fail.
696:2026-08-17 08:38:01 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:01.908747 [vm] qemu exited at startup: exit status 1 (attempt 2)
708:2026-08-17 08:38:01 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:01.975334 [virtiofsd] [2026-08-17T06:38:01Z INFO  virtiofsd] Client connected, servicing requests
709:2026-08-17 08:38:02 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:02.025922 [qemu] qemu-system-x86_64: -device vhost-user-fs-pci,chardev=virtiofs0,tag=claudeshared,bus=pcie.0,addr=0x6: Fail.
711:2026-08-17 08:38:02 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:02.052647 [vm] qemu exited at startup: exit status 1 (attempt 3)
712:2026-08-17 08:38:02 [error] [VM:start] VM boot failed: qemu exited at startup: exit status 1
713:2026-08-17 08:38:02 [info] Dispatching startup error: qemu exited at startup: exit status 1
714:2026-08-17 08:38:02 [error] [VM:start] Startup failed: Error: qemu exited at startup: exit status 1
717:  [message]: 'qemu exited at startup: exit status 1',
722:2026-08-17 08:38:45 [info] [VM:start] Beginning startup, bundlePath=/home/tortho/.config/Claude/vm_bundles/claudevm.bundle
743:2026-08-17 08:38:45 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:45.974034 [virtiofsd] [2026-08-17T06:38:45Z INFO  virtiofsd] Client connected, servicing requests
744:2026-08-17 08:38:46 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:46.022914 [qemu] qemu-system-x86_64: -device vhost-user-fs-pci,chardev=virtiofs0,tag=claudeshared,bus=pcie.0,addr=0x6: Fail.
746:2026-08-17 08:38:46 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:46.104659 [vm] qemu exited at startup: exit status 1 (attempt 1)
758:2026-08-17 08:38:46 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:46.169942 [virtiofsd] [2026-08-17T06:38:46Z INFO  virtiofsd] Client connected, servicing requests
759:2026-08-17 08:38:46 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:46.217938 [qemu] qemu-system-x86_64: -device vhost-user-fs-pci,chardev=virtiofs0,tag=claudeshared,bus=pcie.0,addr=0x6: Fail.
761:2026-08-17 08:38:46 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:46.244687 [vm] qemu exited at startup: exit status 1 (attempt 2)
773:2026-08-17 08:38:46 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:46.310184 [virtiofsd] [2026-08-17T06:38:46Z INFO  virtiofsd] Client connected, servicing requests
774:2026-08-17 08:38:46 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:46.357025 [qemu] qemu-system-x86_64: -device vhost-user-fs-pci,chardev=virtiofs0,tag=claudeshared,bus=pcie.0,addr=0x6: Fail.
776:2026-08-17 08:38:46 [info] [linux-vm-helper] [cowork-linux-helper] 2026/08/17 08:38:46.376764 [vm] qemu exited at startup: exit status 1 (attempt 3)
777:2026-08-17 08:38:46 [error] [VM:start] VM boot failed: qemu exited at startup: exit status 1
778:2026-08-17 08:38:46 [info] Dispatching startup error: qemu exited at startup: exit status 1
779:2026-08-17 08:38:46 [error] [VM:start] Startup failed: Error: qemu exited at startup: exit status 1
782:  [message]: 'qemu exited at startup: exit status 1',

Steps to Reproduce

  1. On a Debian/Ubuntu-family host with a working KVM stack (KVM enabled,

vhost_vsock loaded, user in the kvm group), install the official Claude
Desktop Linux .deb. Host QEMU is qemu-system-x86_64 11.0.3 (Debian
1:11.0.3+ds-2); bundled virtiofsd is 1.14.0.

  1. Open the Cowork tab and start any task (e.g. "list the files in this folder").

The helper downloads the VM bundle, then tries to boot the workspace VM.

  1. RESULT: the VM fails to start. cowork_vm_node.log shows, on all 3 retry

attempts:
virtiofsd: "Client connected, servicing requests"
qemu-system-x86_64: -device vhost-user-fs-pci,...,tag=claudeshared:
Failed to read msg header. Read 0 instead of 12. Original request 0.
vhost_backend_init failed: Protocol error
-> qemu exited at startup: exit status 1
The UI shows "Failed to start Claude's workspace / qemu exited at startup:
exit status 1". (The agent then falls back to reading files directly.)

  1. CONTROL / KEY REPRO: launch the SAME bundled virtiofsd and system qemu by

hand, with the same flags the helper uses
(-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny;
-machine q35,accel=kvm,memory-backend=mem0;
-object memory-backend-memfd,id=mem0,size=4096M,share=on;
-device vhost-user-fs-pci,chardev=virtiofs0,tag=claudeshared),
pointing virtiofsd (--sandbox none) at the same shared folder and using the
bundle's vmlinuz/initrd/rootfs.img.

  1. RESULT of step 4: the VM boots all the way to a login prompt

("Ubuntu 22.04.5 LTS claude ttyS0 / claude login:"), and virtiofsd logs
"servicing requests" normally. vhost-user works fine.

CONCLUSION: identical binaries + flags + shared folder succeed standalone but
fail under cowork-linux-helper, so the failure is in the helper's runtime
context around the QEMU child (sandbox/rlimits/groups/env), not the host,
the folder, or the binaries.

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

1.30096.5

Platform

Other

Operating System

Ubuntu/Debian Linux

Terminal/Shell

Other

Additional Information

NOTE: This is not a Claude Code / terminal issue. It's the Claude Desktop
Linux app (.deb) Cowork feature — the bundled cowork-linux-helper failing to
boot its QEMU workspace VM. The "terminal" field doesn't apply; I'm using the
GUI desktop app.

View original on GitHub ↗