[Desktop][macOS 26] Code tab crashes — rootfs.img redownload loop saturates disk writes
Claude Desktop — Code tab crashes on macOS 26 due to rootfs.img redownload loop
Summary
Opening the Code tab in Claude Desktop causes the app to be terminated by macOS within ~6 minutes due to exceeding the system disk-writes resource limit. Reproducible whenever any MCP connector is enabled. Disabling all connectors prevents the crash.
Environment
- Claude Desktop:
1.3883.0 - macOS:
26.5beta, build25F5053d(developer seed) - Hardware: MacBook Air M-series,
Mac16,13, 16 GB RAM, arm64 - Locale:
es-ES
Symptom
App process killed by macOS (jetsam / disk-writes limit). User-facing: the Claude app window disappears seconds to minutes after opening the Code tab. Repeats every time the tab is opened while any connector is enabled.
Evidence — crash reports
6 terminations logged between 2026-04-14 and 2026-04-22. Representative incident:
- Path:
/Library/Logs/DiagnosticReports/Claude_2026-04-22-114157_*.diag - Incident ID:
A949AA11-08EC-4E7E-9ABF-16EF0AABCDEE Event: disk writesWrites: 8589.95 MB of file backed memory dirtied over 394 seconds (21.81 MB/s average), exceeding limit of 99.42 KB/s over 86400sWrites limit: 8589.93 MB→ process terminated the moment the limit is hit- Heaviest stack:
````
thread_start → _pthread_start → uv_cancel → write (libsystem_kernel)
libuv synchronous write loop inside Electron Framework.
Root cause — infinite rootfs.img re-download loop
File: ~/Library/Logs/Claude/cowork_vm_node.log. Every ~9 seconds, indefinitely:
[info] [Bundle:status] rootfs.img missing
[info] [warm] No warm file found for rootfs.img at current version
[info] [cache] No cached compressed file for rootfs.img
[info] rootfs.img not found, downloading...
[info] Downloading rootfs.img...
[info] [VM] Loading @ant/claude-swift module...
[info] [VM] Module loaded successfully
[info] [Bundle:status] rootfs.img missing ← file marked missing again
[info] Downloading rootfs.img... ← restarts download
...
Something post-download invalidates rootfs.img (likely hash/version check), so the VM layer re-downloads it forever. Each pass writes the full image to disk, saturating the per-process write quota and triggering termination.
Side effect: ~/Library/Application Support/Claude/vm_bundles/claudevm.bundle/ grew to 8.8 GB of partial/duplicate fragments.
Trigger / workaround
- With any MCP connector enabled → crash within minutes of opening
Codetab. - With all connectors disabled → app stays stable, Code tab works.
Pattern suggests connector init inside the VM races with / invalidates the rootfs.img integrity check.
Suggested investigation paths
- Why is
rootfs.imgre-markedmissingafter a successful download? Inspect the hash/version validator incowork_vm_node. - Why does enabling a connector re-trigger the validator? Is the connector writing inside the bundle directory?
- Add a download-attempt counter with backoff + user-visible error instead of infinite retry that silently exhausts the jetsam budget.
- Validate on macOS 26 beta —
Virtualization.frameworkbehavior changed in this cycle.
Reproduction
- macOS 26.5 beta + Claude Desktop 1.3883.0.
- Enable at least one MCP connector.
- Open the
Codetab. - Within ~6 min the app is killed by the OS with "disk writes exceeded".
- Disable all connectors → issue gone.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗