[BUG] Cowork on Linux reports "not supported on this device" when the user lacks access to /dev/vhost-vsock — no reason surfaced in UI or logs
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?
On Linux Mint 22.3 (Ubuntu 24.04 base) with a complete, working KVM stack, Cowork evaluated the device as unsupported and the shell tool returned "Workspace unavailable. The isolated Linux environment failed to start (not supported on this device)".
Every tool the support evaluator probes for was present and readable:
virtiofsdat/usr/libexec/virtiofsd(first probed path per #74605)qemu-system-x86_64at/usr/bin/qemu-system-x86_64- OVMF at
/usr/share/OVMF/OVMF_CODE_4M.fd(confirmed probed: greppingapp.asarshows both/usr/share/OVMF/OVMF_CODE.fdand/usr/share/OVMF/OVMF_CODE_4M.fd) /dev/kvmpresent, accessible via the logind uaccess ACL (crw-rw----+)
The actual gate was device permissions: the user account was not in the kvm group, and /dev/vhost-vsock — unlike /dev/kvm — gets no uaccess ACL on Ubuntu-based systems:
crw-rw----+ 1 root kvm 10, 232 jul 24 10:38 /dev/kvm
crw-rw---- 1 root kvm 10, 241 jul 24 10:38 /dev/vhost-vsock
This is inferred differentially rather than read from a log line (see next point): it was the only unsatisfied requirement we could find, and fixing it alone flipped the evaluation to supported.
Compounding issues, both echoing #74605:
- The failure reason is never surfaced.
~/.config/Claude/logs/cowork_vm_node.logonly records the consequence, never the cause. Novirtualization_tools_missing/virtualization_not_available/virtualization_entitlement_missingstring (all present in the bundle) was ever logged:
````
[cleanupVMBundleIfUnsupported] yukonSilver not supported (status=unsupported), checking for stale bundle...
[startVM] VM not supported (linux/x64), skipping
The (linux/x64) interpolation again reads like an architecture gate when it is a permissions gate.
cleanupVMBundleIfUnsupporteddeletes the VM bundle on every launch while status ≠ supported, so once fixed, the user re-downloads the full rootfs bundle.
This likely affects many default desktop installs: on Ubuntu/Mint, a user can have libvirt/QEMU fully working (via the libvirt group or ACLs) without ever being in kvm, and nothing on a stock desktop install grants vsock access.
What Should Happen?
What Should Happen?
- When the gate is device access, say so: the UI should distinguish "QEMU/OVMF/virtiofsd not found" from "no access to /dev/kvm or /dev/vhost-vsock", and in the latter case suggest the actual fix:
sudo usermod -aG kvm $USER+ re-login. - Log the concrete failure reason (which probe failed, on which path/device) in
cowork_vm_node.log. - Ideally, don't delete the downloaded bundle on unsupported status, or at least not repeatedly.
Error Messages/Logs
Steps to Reproduce
- Linux Mint 22.x / Ubuntu 24.04, official Claude Desktop
.deb, full KVM stack installed (qemu-system-x86,ovmf,virtiofsd). - User account not in the
kvmgroup (the default for accounts that never explicitly added it). - Launch Claude Desktop, start a Cowork session, trigger any shell command.
- Observe "not supported on this device", with all probed tool paths satisfied.
Fix that resolved it: sudo usermod -aG kvm $USER, reboot (or re-login). Next launch evaluated as supported, re-downloaded the bundle and the VM booted normally. An OVMF symlink (OVMF_CODE.fd → OVMF_CODE_4M.fd) created during triage was not the fix — the app already probes the _4M name.
Claude Model
Other
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
This is a Claude Desktop (Cowork) issue. Claude Desktop for Linux 1.24012.0
Platform
Other
Operating System
Ubuntu/Debian Linux
Terminal/Shell
Other
Additional Information
Environment
- Claude Desktop for Linux 1.24012.0, official
.debfrom Anthropic's apt repository (https://downloads.claude.ai/claude-desktop/apt/stable) - Linux Mint 22.3 (
ID=linuxmint,VERSION_ID="22.3"), kernel 6.17.0-35-generic, x86_64 - qemu-system-x86_64, OVMF (
ovmfpackage,_4Mvariants only, as shipped on noble), virtiofsd 2024-01-22 build at/usr/libexec/virtiofsd
Related
- #74605 — same opaque
[startVM] VM not supported (linux/x64)logging and bundle-cleanup behaviour; different root cause (there: virtiofsd path probe; here: vsock device permissions).
---
Written by Claude (Fable 5) running in Cowork, during the live debugging session with the affected user, who reviewed and submitted this report.
3 Comments
Confirmed on Ubuntu 24.04.4 LTS + Claude Desktop 1.24012.9 (official
.deb). Same root cause as described here.What matched
qemu-system-x86_64, OVMFOVMF_CODE_4M.fd, virtiofsd at/usr/libexec/virtiofsd)/dev/kvmalready had the loginduaccessACL (crw-rw----+) → accessible withoutkvmgroup membership/dev/vhost-vsockwasroot:kvm 0660with nouaccess→EACCESon the app'sR_OK|W_OKprobecowork_vm_node.logonly showed the consequence (yukonSilver not supported), never which device failedGrepping
app.asarconfirms the evaluator treats either device failing asno_permission/kvm_permission_denied, so the UI's "add yourself to the kvm group" hint is directionally right but incomplete: on Ubuntu/Mint the real gate is almost always vsock, because kvm already getsTAG+="uaccess"in70-uaccess.rulesand vsock does not.Extra nuance:
usermodfails for authd / Entra ID usersOn hosts using Ubuntu
authdwith Microsoft Entra ID, the account is not in/etc/passwd, so:does nothing.
gpasswd -a "$USER" kvmworks because it resolves the user via NSS.Workaround that fixed it immediately (no re-login required)
After a full quit/relaunch of Claude Desktop, the log flipped from
yukonSilver not supportedto[Bundle:status] rootfs.img missing(i.e. supported, proceeding to download the VM bundle).Suggestions for Anthropic / distro
kvm_permission_denied(and which device failed: kvm vs vsock) in the UI and incowork_vm_node.log.uaccessudev rule above, or ship it with the.deb./dev/vhost-vsockgetsTAG+="uaccess"in70-uaccess.rulesthe same way/dev/kvmalready does — that would fix stock Ubuntu/Mint installs without any user action.Signalement en complément : sur ma machine (Linux), Cowork a cessé de pouvoir se connecter à ses dossiers locaux après le 11 août 2026. Je ne peux pas affirmer de lien de cause à effet, mais ce jour-là j'ai installé Playwright + Chromium via
npx playwright install --with-deps chromiumdans une session Claude Code (paquets système ajoutés : xvfb, polices, libatk*), sur cette même machine. Depuis, plus moyen de me connecter aux dossiers locaux depuis Cowork. Je n'ai pas de message d'erreur précis à partager pour l'instant. Est-ce que ça pourrait être lié aux permissions décrites dans ce ticket ?Je crois qu'il s'agit probablement d'un mode de défaillance différent, mais c'est facile à distinguer.
Le bug décrit dans ce ticket est un blocage en amont du démarrage : la VM ne démarre jamais, toute commande shell renvoie « not supported on this device », et
cowork_vm_node.logaffiche[startVM] VM not supported (linux/x64), skipping. L'accès aux dossiers intervient à une étape ultérieure : c'est virtiofsd qui monte les répertoires partagés dans une VM qui, elle, a bien démarré. Première étape, donc : déterminer quelle phase échoue, en demandant à Claude d'exécuter n'importe quelle commande shell dans une session Cowork.Diagnostic :
ls -l /dev/kvm /dev/vhost-vsock; groups; lsmod | grep vhost_vsock
grep -iE "not supported|virtiofs|mount|denied|error" ~/.config/Claude/logs/cowork_vm_node.log | tail -40
df -h ~
Concernant Playwright :
--with-depsne fait qu'installer via apt des bibliothèques graphiques et des polices — je ne vois pas par quel mécanisme cela révoquerait l'accès à kvm/vsock, l'ACLuaccessétant réappliquée par logind à chaque ouverture de session. Deux explications plus banales collent mieux à la chronologie : l'espace disque consommé par l'installation de Chromium (Cowork demande ~10 Go libres pour l'image de la VM), ou une mise à jour de Claude Desktop sur la même période. Le journal devrait permettre de trancher.---
Rédigé par Claude ; relu et publié par l'auteur de ce ticket.