[BUG] Cowork: "Failed to create bridge sockets after 5 attempts" on every session — macOS 26.4.1, Desktop 1.3036.0

Resolved 💬 6 comments Opened Apr 16, 2026 by omrierlichGeoedge Closed Apr 17, 2026

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?

Preflight Checklist

  • [x] I have searched existing issues and the closest match (#23746) is for a different version
  • [x] This is a single bug report
  • [x] I am using the latest version of Claude Desktop

Environment

  • Claude Desktop: 1.3036.0 (cf521c) 2026-04-16T16:17:33.000Z
  • OS: macOS 26.4.1 (25E253)
  • Architecture: arm64 (Apple Silicon)
  • Embedded Claude Code SDK: 2.1.111
  • VM bundle: 5680b11bcdab215cccf07e0c0bd1bd9213b0c25d
  • socat: 1.8.1.1 installed at /opt/homebrew/bin/socat and symlinked to /usr/local/bin/socat
  • TMPDIR: exists, writable (/var/folders/hb/.../T/)

What's Wrong

Every Cowork session — both new and resumed — crashes immediately after spawn with exit code 1. The VM boots successfully, the guest connects, the API is reachable, the SDK installs, and the claude process spawns inside the VM. Then ~1 second later it dies with:

[vm-stderr] Error: Failed to create bridge sockets after 5 attempts
[Process] Exited, code=1, signal=null, duration=~1000ms, oom=false

The failure is 100% reproducible. Every spawn attempt fails identically.

Reproduction

  1. Open Claude Desktop 1.3036.0 on macOS 26.4.1 (Apple Silicon)
  2. Start any new Cowork session OR resume any existing session
  3. Send any message
  4. Session crashes within ~1 second with "Claude Code process exited with code 1" in the UI

Relevant log excerpt — cowork_vm_node.log

2026-04-16 21:55:41 [info] [VM:start] Beginning startup, bundlePath=.../vm_bundles/claudevm.bundle
2026-04-16 21:55:41 [info] [VM:start] Bundle version: 5680b11bcdab215cccf07e0c0bd1bd9213b0c25d
2026-04-16 21:55:41 [info] [VM:steps] vm_boot completed (101ms)
2026-04-16 21:55:45 [info] [VM:steps] guest_vsock_connect completed (4780ms)
2026-04-16 21:55:46 [info] [VM] Network status: CONNECTED
2026-04-16 21:55:47 [info] [VM] API reachability: REACHABLE
2026-04-16 21:55:47 [info] [VM:start] Startup complete, total time: 6137ms
2026-04-16 21:55:54 [info] [Spawn:create] id=0b751b7d-... name=practical-inspiring-allen cmd=/usr/local/bin/claude args=--output-format stream-json --verbose --input-format stream-json --max-thinking-tokens 31999 --effort medium --model claude-opus-4-7[1m] --permission-prompt-tool stdio ... cwd=/sessions/practical-inspiring-allen
2026-04-16 21:55:54 [info] [Spawn:vm] id=0b751b7d-... OAuth token approved with MITM proxy
2026-04-16 21:55:54 [info] [Spawn:vm] id=0b751b7d-... Spawn succeeded in 65ms
2026-04-16 21:55:55 [warn] [vm-stderr 0b751b7d] Error: Failed to create bridge sockets after 5 attempts
2026-04-16 21:55:55 [info] [Process:0b751b7d-...] Exited, code=1, signal=null, duration=971ms, oom=false

CycleHealth output (from main.log)

cycle_health: 'unhealthy',
had_first_response: false,
seconds_to_outcome: 2,
unhealthy_reason: 'system_error',
error_message: 'Claude Code process exited with code 1',
error_category: 'process_crashed'

Troubleshooting Already Attempted (none resolved the issue)

  • Full quit (Cmd+Q) and relaunch — multiple times
  • Started fresh new sessions (not just resumes)
  • Tried different working folders
  • Cleared ~/Library/Application Support/Claude/claude-code-vm and ~/Library/Application Support/Claude/vm_bundles (both re-downloaded cleanly)
  • Killed all Claude/claude-code/vzgvisor processes before relaunch
  • Installed socat 1.8.1.1 via Homebrew
  • Symlinked /opt/homebrew/bin/socat to /usr/local/bin/socat (since GUI apps don't inherit shell PATH and launchctl getenv PATH returns empty)
  • Verified TMPDIR exists and is writable
  • Checked for stale socket files in /tmp and $TMPDIR — none present that would conflict

Expected Behavior

Cowork sessions should spawn the guest claude process and respond to messages, as in previous Desktop versions.

Actual Behavior

Every spawn fails ~1 second after Spawn succeeded with Failed to create bridge sockets after 5 attempts from vm-stderr. The claude binary inside the guest VM appears unable to create its sandbox bridge sockets, regardless of host-side socat availability.

Possibly Related Issues

  • #23746 — same error signature after a Desktop auto-update; reporter's troubleshooting (socat install, TMPDIR cleanup, Mac restart) also did not resolve it
  • #19503 — same error on resume sessions, attributed to allowedDomains=0; in my case allowedDomains=24 and new sessions fail too
  • #11079 — same error on Linux due to TMPDIR; ruled out here (TMPDIR is fine)
  • #46029 — most recent Cowork "exited with code 1" regression on Windows (1.1617.0)

The pattern of Desktop updates introducing this exact failure mode appears to be recurring.

Notes

  • The Claude binary inside the guest VM (per vm-stderr) is the source of the failure, not host-side socat
  • 5-retry bridge socket creation should probably emit what it tried to create and why it failed (errno, path) rather than just the retry count, to make this debuggable

What Should Happen?

<img width="537" height="353" alt="Image" src="https://github.com/user-attachments/assets/6b20c73a-15dc-40ad-a504-18447bcc6b27" />

Error Messages/Logs

Steps to Reproduce

Preflight Checklist

  • [x] I have searched existing issues and the closest match (#23746) is for a different version
  • [x] This is a single bug report
  • [x] I am using the latest version of Claude Desktop

Environment

  • Claude Desktop: 1.3036.0 (cf521c) 2026-04-16T16:17:33.000Z
  • OS: macOS 26.4.1 (25E253)
  • Architecture: arm64 (Apple Silicon)
  • Embedded Claude Code SDK: 2.1.111
  • VM bundle: 5680b11bcdab215cccf07e0c0bd1bd9213b0c25d
  • socat: 1.8.1.1 installed at /opt/homebrew/bin/socat and symlinked to /usr/local/bin/socat
  • TMPDIR: exists, writable (/var/folders/hb/.../T/)

What's Wrong

Every Cowork session — both new and resumed — crashes immediately after spawn with exit code 1. The VM boots successfully, the guest connects, the API is reachable, the SDK installs, and the claude process spawns inside the VM. Then ~1 second later it dies with:

[vm-stderr] Error: Failed to create bridge sockets after 5 attempts
[Process] Exited, code=1, signal=null, duration=~1000ms, oom=false

The failure is 100% reproducible. Every spawn attempt fails identically.

Reproduction

  1. Open Claude Desktop 1.3036.0 on macOS 26.4.1 (Apple Silicon)
  2. Start any new Cowork session OR resume any existing session
  3. Send any message
  4. Session crashes within ~1 second with "Claude Code process exited with code 1" in the UI

Relevant log excerpt — cowork_vm_node.log

2026-04-16 21:55:41 [info] [VM:start] Beginning startup, bundlePath=.../vm_bundles/claudevm.bundle
2026-04-16 21:55:41 [info] [VM:start] Bundle version: 5680b11bcdab215cccf07e0c0bd1bd9213b0c25d
2026-04-16 21:55:41 [info] [VM:steps] vm_boot completed (101ms)
2026-04-16 21:55:45 [info] [VM:steps] guest_vsock_connect completed (4780ms)
2026-04-16 21:55:46 [info] [VM] Network status: CONNECTED
2026-04-16 21:55:47 [info] [VM] API reachability: REACHABLE
2026-04-16 21:55:47 [info] [VM:start] Startup complete, total time: 6137ms
2026-04-16 21:55:54 [info] [Spawn:create] id=0b751b7d-... name=practical-inspiring-allen cmd=/usr/local/bin/claude args=--output-format stream-json --verbose --input-format stream-json --max-thinking-tokens 31999 --effort medium --model claude-opus-4-7[1m] --permission-prompt-tool stdio ... cwd=/sessions/practical-inspiring-allen
2026-04-16 21:55:54 [info] [Spawn:vm] id=0b751b7d-... OAuth token approved with MITM proxy
2026-04-16 21:55:54 [info] [Spawn:vm] id=0b751b7d-... Spawn succeeded in 65ms
2026-04-16 21:55:55 [warn] [vm-stderr 0b751b7d] Error: Failed to create bridge sockets after 5 attempts
2026-04-16 21:55:55 [info] [Process:0b751b7d-...] Exited, code=1, signal=null, duration=971ms, oom=false

CycleHealth output (from main.log)

cycle_health: 'unhealthy',
had_first_response: false,
seconds_to_outcome: 2,
unhealthy_reason: 'system_error',
error_message: 'Claude Code process exited with code 1',
error_category: 'process_crashed'

Troubleshooting Already Attempted (none resolved the issue)

  • Full quit (Cmd+Q) and relaunch — multiple times
  • Started fresh new sessions (not just resumes)
  • Tried different working folders
  • Cleared ~/Library/Application Support/Claude/claude-code-vm and ~/Library/Application Support/Claude/vm_bundles (both re-downloaded cleanly)
  • Killed all Claude/claude-code/vzgvisor processes before relaunch
  • Installed socat 1.8.1.1 via Homebrew
  • Symlinked /opt/homebrew/bin/socat to /usr/local/bin/socat (since GUI apps don't inherit shell PATH and launchctl getenv PATH returns empty)
  • Verified TMPDIR exists and is writable
  • Checked for stale socket files in /tmp and $TMPDIR — none present that would conflict

Expected Behavior

Cowork sessions should spawn the guest claude process and respond to messages, as in previous Desktop versions.

Actual Behavior

Every spawn fails ~1 second after Spawn succeeded with Failed to create bridge sockets after 5 attempts from vm-stderr. The claude binary inside the guest VM appears unable to create its sandbox bridge sockets, regardless of host-side socat availability.

Possibly Related Issues

  • #23746 — same error signature after a Desktop auto-update; reporter's troubleshooting (socat install, TMPDIR cleanup, Mac restart) also did not resolve it
  • #19503 — same error on resume sessions, attributed to allowedDomains=0; in my case allowedDomains=24 and new sessions fail too
  • #11079 — same error on Linux due to TMPDIR; ruled out here (TMPDIR is fine)
  • #46029 — most recent Cowork "exited with code 1" regression on Windows (1.1617.0)

The pattern of Desktop updates introducing this exact failure mode appears to be recurring.

Notes

  • The Claude binary inside the guest VM (per vm-stderr) is the source of the failure, not host-side socat
  • 5-retry bridge socket creation should probably emit what it tried to create and why it failed (errno, path) rather than just the retry count, to make this debuggable

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

Claude 1.3036.0 (cf521c) 2026-04-16T16:17:33.000Z

Platform

Other

Operating System

macOS

Terminal/Shell

IntelliJ IDEA terminal

Additional Information

_No response_

View original on GitHub ↗

This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗