Cowork workspace disk ships with ~6GB of unused system files, leaving <2GB usable space on a 9.7GB disk
Summary
The Cowork workspace VM ships with a 9.7GB virtual disk, but approximately 7.6GB is pre-filled with system files that serve no purpose in a sandboxed dev environment. Users are left with less than 2GB of usable working space, and cannot clean it because sessions run without sudo access.
Disk breakdown
| Path | Size | Needed? |
|------|------|---------|
| /snap (LXD 727M, core20 391M, snapd 277M) | ~1.4GB | No |
| /var/lib/snapd | ~551MB | No |
| /usr/lib/firmware (hardware firmware blobs) | ~1.2GB | No — VM has no real hardware |
| /usr/lib/modules (kernel modules) | ~591MB | Partially |
| /usr/local/lib/python3.10 | ~572MB | Maybe |
| /usr/lib/libreoffice | ~302MB | No — dev workspace |
| /var/lib/apt (package cache) | ~283MB | No |
| /usr/local/lib/node_modules_global | ~186MB | Maybe |
| /var/log/journal | ~137MB | No |
Why users can't self-serve
Sessions run as a non-root user with no sudo. All the large system directories are root-owned. The only user-level cleanup available is ~52MB of npm cache — not meaningful.
Impact
Any project that installs dependencies (Node, Python, etc.) hits the wall almost immediately. The "workspace disk nearly full" warning appears with normal dev usage.
Suggested fixes
- Slim the base image — remove firmware blobs, snap packages, LibreOffice. These have no place in a sandboxed dev VM.
- Increase default disk size — 10GB is too small even with a clean image.
- Give users a resize option — either via UI or by documenting the
truncate+resize2fsapproach. - Or give users sudo — so they can clean their own workspace.
Workaround (manual, outside the VM)
# 1. Quit Claude Code
# 2. Extend the disk image:
truncate -s 30G ~/Library/Application\ Support/Claude/vm_bundles/claudevm.bundle/sessiondata.img
# 3. Restart Claude Code, then inside Cowork:
lsblk # find device name (e.g. /dev/vdb)
resize2fs /dev/vdb # expand filesystem to fill new spaceThis issue has 4 comments on GitHub. Read the full discussion on GitHub ↗