[BUG] Cowork fails on Crostini (Debian Bookworm 12.14) despite all dependencies present and verified
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?
Environment:
Device: Chromebook (Crostini/Linux container)
Distro: Debian Bookworm 12.14
Architecture: amd64
Claude Desktop: 1.18286.0 (official Anthropic apt repo)
Also tested: claude-desktop-unofficial (same result)
Problem:
Clicking the Cowork tab shows the error: "Cowork runs in a secure local virtual machine. Cowork requires QEMU. Install it with 'sudo apt install qemu-system-x86 ovmf virtiofsd', then restart Claude."
All dependencies are present and verified:
qemu-system-x86 1:7.2+dfsg-7+deb12u18+b2 — installed
ovmf 2022.11-6+deb12u2 — installed
/dev/kvm — exists
User is in kvm group — confirmed via groups
virtiofsd — present at /usr/lib/qemu/virtiofsd (v1.13.2) AND /usr/lib/claude-desktop/resources/virtiofsd (v1.13.2), both executable
Symlink created at /usr/bin/virtiofsd pointing to bundled binary — no effect
Note on virtiofsd:
apt-cache show virtiofsd returns "purely virtual" — the package name exists as a dependency reference but has no installable candidate in Crostini's repos. However the binary itself is present and functional at both paths above.
Conclusion:
Claude Desktop's dependency check appears to be checking for virtiofsd as an APT package rather than checking for the binary, causing it to report missing dependencies despite everything being installed and functional. The --doctor flag is not implemented in the official package.
What Should Happen?
Cowork should launch successfully. All required components are present and functional — QEMU, OVMF, KVM device access, kvm group membership, and virtiofsd binary in both the system path and Claude Desktop's own bundled resources. The dependency check should verify that the required binaries exist and are executable, not that they are installable as APT packages. A binary that is present, executable, and returning a valid version string satisfies the dependency regardless of its APT package status.
Error Messages/Logs
log && cat /tmp/claude-bug-report.log
2026-07-05 11:44:01 [warn] MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 $eipc_message$_877cbbb7-3ce1-4fc0-a036-b1945a1ba86d_$_claude.web_$_LocalAgentModeSessions_$_sessionsBridgeStatus_$store$_update listeners added. Use emitter.setMaxListeners() to increase limit
2026-07-05 11:44:02 [warn] Deprecated API for given entry type.
2026-07-05 11:44:04 [warn] MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 $eipc_message$_877cbbb7-3ce1-4fc0-a036-b1945a1ba86d_$_claude.web_$_AutoUpdater_$_updaterState_$store$_update listeners added. Use emitter.setMaxListeners() to increase limit
2026-07-05 11:45:19 [warn] Deprecated API for given entry type.
2026-07-05 11:45:22 [warn] MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 $eipc_message$_877cbbb7-3ce1-4fc0-a036-b1945a1ba86d_$_claude.web_$_AutoUpdater_$_updaterState_$store$_update listeners added. Use emitter.setMaxListeners() to increase limit
2026-07-05 11:45:43 [warn] MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 $eipc_message$_877cbbb7-3ce1-4fc0-a036-b1945a1ba86d_$_claude.web_$_LocalAgentModeSessions_$_sessionsBridgeStatus_$store$_update listeners added. Use emitter.setMaxListeners() to increase limit
2026-07-05 11:45:49 [warn] ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.
2026-07-05 12:34:53 [warn] MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 $eipc_message$_877cbbb7-3ce1-4fc0-a036-b1945a1ba86d_$_claude.settings_$_AppPreferences_$_preferencesChanged listeners added. Use emitter.setMaxListeners() to increase limit
Steps to Reproduce
- Start the desktop.
- Hover over the Cowork tab.
- Note the error produced, requesting installation of the libraries confirmed in this bug report to already be installed.
Claude Model
Sonnet (default)
Is this a regression?
Yes, this worked in a previous version
Last Working Version
1.18286.0
Claude Code Version
2.1.197
Platform
Anthropic API
Operating System
Other Linux
Terminal/Shell
Other
Additional Information
-rwxr-xr-x 1 root root 2675512 Jul 2 00:35 /usr/lib/claude-desktop/resources/virtiofsd
-rwxr-xr-x 1 root root 812104 May 7 14:11 /usr/lib/qemu/virtiofsd
-rwxr-xr-x 1 root root 812104 May 7 14:11 /usr/lib/qemu/virtiofsd
The Cowork failure produces no entries in ~/.config/Claude/logs/claude.ai-web.log, indicating the dependency check is blocking launch before the logging system is even reached. This suggests the check is a preflight binary written outside the main app rather than logic inside Claude Desktop itself.
The virtiofsd binary is present at two locations — bundled with Claude Desktop at /usr/lib/claude-desktop/resources/virtiofsd and installed by QEMU at /usr/lib/qemu/virtiofsd — both executable and returning version 1.13.2. A symlink was also created at /usr/bin/virtiofsd with no effect. APT reports virtiofsd as "purely virtual" in Crostini's package environment, which suggests the preflight check is querying APT package status rather than binary existence.