claude-code - 💡(How to fix) Fix Cowork: gvisor network daemon stalls at AcceptBess on every VM boot, causing immediate keepalive failure and session termination

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Every Cowork session fails to initialize. The VM boots and connects successfully, OAuth is approved, the SDK installs, and Claude spawns inside the VM — but within ~5 seconds of spawn, all keepalive pings begin timing out and never recover. The session is eventually killed with SIGTERM then SIGKILL.

This affects both resumed and brand-new sessions equally. App restarts do not resolve it. The failure has been 100% reproducible across all attempts starting the evening of April 20, 2026.

Root Cause

Root Cause (Identified)

Code Example

time="2026-04-20T20:45:23-04:00" level=info msg="usernet: starting with sockFD=97"
time="2026-04-20T20:45:23-04:00" level=info msg="usernet: vmMAC=36:e7:c2:62:11:b9"
time="2026-04-20T20:45:23-04:00" level=info msg="usernet: virtual network created successfully"
time="2026-04-20T20:45:23-04:00" level=info msg="usernet: net.Conn created from socket, type=*net.UnixConn"
time="2026-04-20T20:45:23-04:00" level=info msg="usernet: network stack started successfully"
time="2026-04-20T20:45:23-04:00" level=info msg="usernet: calling AcceptBess..."

---

[VM:start] Startup complete, total time: ~8500ms
[VM] API reachability: REACHABLE
[Keepalive] Starting (interval=2000ms)
[Spawn:vm] OAuth token approved with MITM proxy
[Spawn:vm] Spawn succeeded in ~50ms
[Keepalive] Ping failed: Keep-alive ping timed out   ← starts ~5s after spawn
[Keepalive] Ping failed: Keep-alive ping timed out   ← repeats every 7s indefinitely
[CoworkVMProcess] kill called with signal: SIGTERM
[CoworkVMProcess] waitForVmProcessExit: exit not observed within 5000ms, sending SIGKILL
RAW_BUFFERClick to expand / collapse

Environment

  • Claude Desktop version: 1.3561.0
  • macOS version: 26.0.1 (Build 25A362)
  • Architecture: Apple Silicon (ARM64)
  • Memory: 16 GB (healthy — green pressure bar, 0 bytes swap, ~5 GB cached files free)

Summary

Every Cowork session fails to initialize. The VM boots and connects successfully, OAuth is approved, the SDK installs, and Claude spawns inside the VM — but within ~5 seconds of spawn, all keepalive pings begin timing out and never recover. The session is eventually killed with SIGTERM then SIGKILL.

This affects both resumed and brand-new sessions equally. App restarts do not resolve it. The failure has been 100% reproducible across all attempts starting the evening of April 20, 2026.

Root Cause (Identified)

The gvisor userspace network daemon (vzgvisor) starts successfully but permanently stalls at AcceptBess on every VM boot. The log always ends at the same line and never progresses further:

time="2026-04-20T20:45:23-04:00" level=info msg="usernet: starting with sockFD=97"
time="2026-04-20T20:45:23-04:00" level=info msg="usernet: vmMAC=36:e7:c2:62:11:b9"
time="2026-04-20T20:45:23-04:00" level=info msg="usernet: virtual network created successfully"
time="2026-04-20T20:45:23-04:00" level=info msg="usernet: net.Conn created from socket, type=*net.UnixConn"
time="2026-04-20T20:45:23-04:00" level=info msg="usernet: network stack started successfully"
time="2026-04-20T20:45:23-04:00" level=info msg="usernet: calling AcceptBess..."

This log is identical across multiple VM restarts — the daemon always stalls at the same point. There are no further log entries after calling AcceptBess... regardless of how long it runs.

Because the gvisor network stack never advances past AcceptBess, Claude running inside the VM cannot establish outbound connections to the Anthropic API. The process spawns, attempts network calls, hangs, and the coworkd keepalive vsock channel becomes unresponsive, triggering the desktop app's kill sequence.

Observed Symptom Sequence (from logs)

From cowork_vm_node.log, this pattern repeats identically every attempt:

[VM:start] Startup complete, total time: ~8500ms
[VM] API reachability: REACHABLE
[Keepalive] Starting (interval=2000ms)
[Spawn:vm] OAuth token approved with MITM proxy
[Spawn:vm] Spawn succeeded in ~50ms
[Keepalive] Ping failed: Keep-alive ping timed out   ← starts ~5s after spawn
[Keepalive] Ping failed: Keep-alive ping timed out   ← repeats every 7s indefinitely
[CoworkVMProcess] kill called with signal: SIGTERM
[CoworkVMProcess] waitForVmProcessExit: exit not observed within 5000ms, sending SIGKILL

The Claude process inside the VM does not respond to SIGTERM (it is hung waiting on network I/O) and must be force-killed with SIGKILL every time.

What Works / What Doesn't

StepStatus
VM boot✅ Succeeds
vsock guest connection✅ Succeeds
Static IP assignment✅ Succeeds
CA certificate installation✅ Succeeds
SDK install✅ Succeeds
API reachability check✅ Passes
OAuth token approval (MITM proxy)✅ Succeeds
Claude process spawn✅ Succeeds
gvisor AcceptBess completion❌ Never completes
Keepalive pings post-spawn❌ All timeout
Claude session initialization❌ Hangs, killed

Note: The "API reachability: REACHABLE" check apparently uses a path that does not go through gvisor, so it passes even when gvisor is broken.

Additional Context

  • The Anthropic status page recorded Cowork-related incidents on April 15, 17, 19, and 20, 2026
  • The desktop renderer process reports "coworkKappa":{"status":"unavailable"} in its feature flags at startup
  • The issue reproduces for both resumed sessions and newly created sessions
  • sessiondata.img (6.1 GB) and rootfs.img (10 GB) are present in vm_bundles/claudevm.bundle/ — the VM bundle appears intact
  • No errors appear in coworkd.log inside the VM; the VM reaches the Ubuntu login prompt normally

Steps to Reproduce

  1. Open Claude Desktop (v1.3561.0) on macOS 26.0.1 (Apple Silicon)
  2. Start any Cowork session (new or resumed)
  3. Observe session hang at "Starting up..." or "Working through a complex response..."
  4. Check ~/Library/Logs/Claude/vzgvisor.log — will always end at calling AcceptBess...
  5. Check ~/Library/Logs/Claude/cowork_vm_node.log — will show continuous keepalive ping timeouts starting ~5 seconds after spawn

Expected Behavior

gvisor should complete AcceptBess, begin handling network traffic from within the VM, and keepalive pings should succeed indefinitely while a session is active.

extent analysis

TL;DR

The most likely fix is to investigate and resolve the issue with the gvisor userspace network daemon (vzgvisor) stalling at AcceptBess, which is preventing the Claude session from initializing.

Guidance

  1. Verify the gvisor logs: Check the vzgvisor.log file to confirm that it always ends at the same line (calling AcceptBess...) and never progresses further.
  2. Investigate gvisor configuration: Review the gvisor configuration to ensure that it is correctly set up and that there are no issues with the network stack.
  3. Check for dependencies and updates: Verify that all dependencies required by gvisor are up-to-date and functioning correctly.
  4. Test network connectivity: Perform network connectivity tests within the VM to ensure that the issue is isolated to the gvisor daemon.
  5. Debug gvisor: Attempt to debug the gvisor daemon to determine why it is stalling at AcceptBess and identify potential solutions.

Example

No code snippet is provided as the issue is related to a specific daemon and its configuration, which requires further investigation.

Notes

The issue seems to be specific to the gvisor userspace network daemon and its failure to complete the AcceptBess step. The fact that the API reachability check passes suggests that the issue is isolated to the gvisor daemon. Further investigation is required to determine the root cause and identify a solution.

Recommendation

Apply a workaround by investigating alternative network configurations or debugging the gvisor daemon to resolve the issue, as the root cause is not immediately apparent and may require further analysis.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix Cowork: gvisor network daemon stalls at AcceptBess on every VM boot, causing immediate keepalive failure and session termination