[BUG] Cowork: all tasks fail with retry loop then ECONNRESET — fails across networks incl. phone hotspot, survived clean reinstall, worked hours earlier same day (macOS 15.7.3, M3)

Status Open
Maintainer reply None cached
Activity 6 comments · opened Jun 12, 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?

Every Cowork task fails with "Server is busy. Retrying in Ns (attempt N of 10)" followed by API Error: Unable to connect to API (ECONNRESET). Regular Chat mode works perfectly on the same machine and session. Claude Code SDK inside the VM is v2.1.170.
Key facts that make this case unusual:

Cowork worked successfully earlier the same day (June 12) on a different network. It then failed identically that evening on two independent networks: home WiFi and an iPhone hotspot.
A similar episode occurred several weeks earlier on a different network in a different country (US; current failures are in Europe), so this is recurring, not a one-off.
The failure survived a full clean uninstall (via AppCleaner, including the ~13.7 GB Application Support folder and VM bundles) and fresh reinstall with fresh rootfs download.
Failure is independent of model (tested Fable and Opus) and task size (a trivial "reply with the word hello" task fails identically).
VM bootstrap is fully healthy. From coworkd.log: static IP configured (172.16.10.3/24), MTU lowered to 1400, 9 host CA certificates installed, MITM proxy started, reachability check to https://api.anthropic.com/ passes (status=404), SDK installed successfully.
main.log for a failed task shows had_first_response: true, seconds_to_outcome: 186, transcript_size_bytes: 21399, unhealthy_reason: 'api_error', error_message: 'API Error: Unable to connect to API (ECONNRESET)' — the task reached the API and exchanged data before the connection was reset.

Ruled out by testing:

Host connectivity: curl -I https://api.anthropic.com → HTTP/2 404 with cf-ray, on every network tested
VPN: none. macOS Application Firewall: off. No third-party network filters (Little Snitch/LuLu not installed)
System extensions: systemextensionsctl list (with sudo) → 0 extensions. Not MDM-enrolled (profiles status -type enrollment → No/No). No hosts-file blocking
Network-specific cause: fails on home WiFi AND iPhone hotspot the same evening; previously failed on a different network in another country
Local state/install: identical failure before and after complete clean reinstall
Server outage: status page showed no active incident at time of testing (resolved incidents Jun 9–11 only)
Note: macOS Screen Time content restrictions are enabled on this machine (used to block YouTube; always-on, unchanged config) — but they were equally active during the successful session earlier the same day

Possibly irrelevant but included for completeness: the entitlement dump of Claude.app shows com.apple.security.virtualization but no com.apple.vm.networking. The VM's reachability check passes, so this may not matter.

What Should Happen?

Cowork tasks should connect and complete, the same way Chat mode works without issues on the same machine.

Error Messages/Logs

UI: Server is busy. Retrying in 8s (attempt 6 of 10)
Final: API Error: Unable to connect to API (ECONNRESET)
main.log excerpt:
cli_session_id: '491a9ad6-ec59-4992-85e3-741ed4cd41d9',
user_message_uuid: '2e953991-bbf6-40d3-945e-de4c8aa8b311',
cycle_health: 'unhealthy',
had_first_response: true,
seconds_to_outcome: 186,
is_resume: false,
unhealthy_reason: 'api_error',
error_message: 'API Error: Unable to connect to API (ECONNRESET)',
transcript_size_bytes: 21399
coworkd.log (VM bootstrap, all healthy):
[coworkd] configuring static IP on enp0s1: 172.16.10.3/24 gateway=172.16.10.1 dns=172.16.10.1
[coworkd] lowered MTU from 1500 to 1400 on enp0s1
[coworkd] installed 9 host CA certificates
[coworkd] checking reachability https://api.anthropic.com/ (timeout=30s)
[coworkd] reachability check passed (status=404)
[coworkd] connected, waiting for commands
[coworkd] installed SDK binary v2.1.170 to /usr/local/bin/claude

Steps to Reproduce

  1. Open Claude Desktop 1.12603.1 on macOS 15.7.3, sign in (Max plan)
  2. Switch to Cowork tab, start any task — even "reply with the word hello"
  3. Task shows retry loop: "Server is busy. Retrying in Ns (attempt N of 10)"
  4. After 10 attempts, fails with: API Error: Unable to connect to API (ECONNRESET)
  5. Reproduces on home WiFi and iPhone hotspot; with Fable and Opus; before and after clean reinstall
  6. Chat mode works perfectly throughout

Claude Model

Not sure / Multiple models

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

Claude 1.12603.1 (3df4fd) 2026-06-11; SDK in VM v2.1.170

Platform

Other

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

_No response_

View original on GitHub ↗

5 Comments

amongmany · 2 months ago

I have also been encountering this issue for multiple days now. It's getting beyond frustrating. Have contacted support with zero response.

<img width="633" height="422" alt="Image" src="https://github.com/user-attachments/assets/878371da-a423-4aac-87fb-8d534c62a75d" />

anonymouslearnerintown · 2 months ago

Hello ,
I have been facing this for several weeks now and today . I switched to Hotspot and 2G WIFI and discovered that I dont get the Server is busy error and the above error connection message anymore . I have switched back and forth between my regular 5G and the aforementioned networks and I am able to replicate this error . Strangely , this is only a co-work problem and not a chat/code problem . I have also switched between Mac and Windows ( currently using Mac Pro M1 ) .

chudder-commits · 1 month ago

<p style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;">Adding another reproduction with evidence the OP's report doesn't have: host logs showing an<span class="Apple-converted-space"> </span><strong>API-sent<span class="Apple-converted-space"> </span><code>server_error</code>event preceding the retry loop</strong>, plus two independent HTTP 529 errors from Anthropic's auth service in the same period, with request IDs Anthropic can trace server-side.</p><h2 style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;">Environment</h2><ul style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;"><li>macOS (arm64, Apple Silicon)</li><li>Claude Desktop 1.18286.0 (Jul 5 failures) and 1.19367.0 (Jul 8 failure)</li><li>Claude Code SDK in VM: 2.1.197</li><li>Model: claude-fable-5</li><li>No VPN, no third-party firewall/network filters</li><li>Network: residential (Central California)</li></ul><h2 style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;">Failure signature</h2><p style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;">Three failed Cowork turns across two dates, all identical:</p>
Date/time (local) | seconds_to_outcome | had_first_response | transcript_size_bytes
-- | -- | -- | --
2026-07-05 02:36:05 | 179 | true | 75,252
2026-07-05 02:40:02 (resume of same task) | 192 | true | 80,683
2026-07-08 01:28:37 | 185 | true | 84,103

<p style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;">Sequence in every case: task starts and streams normally → API returns<span class="Apple-converted-space"> </span><code>server_error</code><span class="Apple-converted-space"> </span>mid-stream → UI shows "Server is busy. Retrying in Ns (attempt N of 10)" → all retries fail → final<span class="Apple-converted-space"> </span><code>ECONNRESET</code>. The consistent ~180–190s outcome time is the retry-exhaustion window, not a fixed network timeout.</p><pre style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;"><code>2026-07-05 02:36:05 [info] [APIError] Intermediate SDK error "server_error" for session local_2489793f-... — continuing to read stream
2026-07-05 02:36:05 [info] [Result] Turn failed for session local_2489793f-...: subtype=success, is_error=true
2026-07-05 02:36:05 [info] [CycleHealth] Unhealthy cycle: {
session_id: 'local_2489793f-67b7-4022-9460-f8c3fef2e490',
variant_key: 'marigold',
host_loop_mode: true,
model: 'claude-fable-5',
cycle_health: 'unhealthy',
had_first_response: true,
seconds_to_outcome: 179,
is_resume: false,
unhealthy_reason: 'api_error',
error_message: 'API Error: Unable to connect to API (ECONNRESET)',
transcript_size_bytes: 75252
}
</code></pre><pre style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;"><code>2026-07-08 01:28:37 [info] [APIError] Intermediate SDK error "server_error" for session local_66be0866-... — continuing to read stream
2026-07-08 01:28:37 [info] [CycleHealth] Unhealthy cycle: {
session_id: 'local_66be0866-136d-46fa-b0cd-2bdcf916a7e5',
model: 'claude-fable-5',
had_first_response: true,
seconds_to_outcome: 185,
unhealthy_reason: 'api_error',
error_message: 'API Error: Unable to connect to API (ECONNRESET)',
transcript_size_bytes: 84103
}
</code></pre><h2 style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;">VM/networking healthy at every failure</h2><p style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;">coworkd.log shows a clean bootstrap on every boot in this window — static IP, MTU 1400, ephemeral CA generated and installed, MITM proxy started, and reachability to https://api.anthropic.com passing every time:</p><pre style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;"><code>[coworkd] lowered MTU from 1500 to 1400 on enp0s1
[proxy] MITM proxy started on /var/run/mitm-proxy.sock
[coworkd] checking reachability https://api.anthropic.com/ (timeout=30s)
[coworkd] reachability check passed (status=404)
</code></pre><h2 style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;">Corroborating server-side errors (traceable request IDs)</h2><p style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;">Independently of Cowork tasks, the host app logged two HTTP 529 errors from Anthropic in the same period:</p><pre style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;"><code>2026-06-30 23:04:22 [error] [sessions-bridge] Poll error, backing off: Poll: Failed with status 529: Authentication service is temporarily unavailable. Retry the request. [request-id: req_011CcaqFRZgMwk6wbos2M72e]
2026-07-07 10:22:40 [error] [sessions-bridge] Poll error, backing off: Poll: Failed with status 529: Authentication service is temporarily unavailable. Retry the request. [request-id: req_011Cco5pxPvZnZSvnXWg6jaU]
</code></pre><h2 style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;">Why this matters for triage</h2><p style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;">The failure is episodic, not persistent: sessions run minutes after a failure (2026-07-05 02:41 and 02:54) completed without error. Combined with the API-sent<span class="Apple-converted-space"> </span><code>server_error</code><span class="Apple-converted-space"> </span>initiating each retry loop and the 529s from the auth service, this points at the API/edge side rather than client VM networking — the ECONNRESET appears to be the terminal symptom of retries against an already-unhealthy upstream, not the root cause. The two request IDs above should be traceable in Anthropic's logs.</p><p style="caret-color: rgb(255, 255, 255); color: rgb(255, 255, 255); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;">Happy to provide full main.log / coworkd.log excerpts on request.</p>

chudder-commits · 1 month ago

Follow-up to my comment above: the failure has now survived a complete clean reinstall (app removed, ~/Library/Application Support/Claude deleted, VM bundle re-downloaded fresh) and reproduced on 2026-07-15 with the same signature. New evidence below, including the mid-stream server_error that precedes the ECONNRESET.

The key finding: the ECONNRESET is the terminal symptom, not the root cause. The triggering event is a server-side server_error received mid-stream, and the failures cluster in a consistent ~180–210 second window — the OP's log shows seconds_to_outcome: 186; mine shows 208.

Environment

  • macOS, Mac Studio (Apple Silicon, 64 GB)
  • Claude Desktop, fresh install 2026-07-15
  • Model: claude-fable-5
  • Failure timestamp: 2026-07-15 15:51:40 (Pacific)

Identifiers for backend traceability

  • session_id: local_0b03b2dd-f6f7-4fde-954a-be841ef51601
  • cli_session_id: 53096442-8f70-4f78-8a28-21f4c7df25eb
  • vm_instance_id: 22841919-1903-493b-ad97-b27b46121271
  • user_message_uuid: 4d85acb2-5a84-404b-94f1-61eff05d8ef5

Log sequence at failure (main.log, 2026-07-15)

15:51:36 [remote-tools-device] socket closed: 1006
15:51:36 [remote-tools-device] reconnect #1 in 1000ms
15:51:37 [remote-tools-device] socket closed: 1006
15:51:37 [remote-tools-device] reconnect #2 in 1500ms
15:51:40 [APIError] Intermediate SDK error "server_error" for session
         local_0b03b2dd-... — continuing to read stream
15:51:40 [Result] Turn failed: subtype=success, is_error=true
15:51:40 [CycleHealth] Unhealthy cycle: {
  cycle_health: 'unhealthy',
  unhealthy_reason: 'api_error',
  error_message: 'API Error: Unable to connect to API (ECONNRESET)',
  had_first_response: true,
  seconds_to_outcome: 208,
  is_resume: true,
  transcript_size_bytes: 82283,
  host_loop_mode: true,
  permission_mode: 'auto'
}

Observations

  1. Not a connection-establishment failure. had_first_response: true — the session connected, streamed for 208 seconds, then died. Matches the OP's 186s. Across my July 5–15 failures the outcome consistently lands ~180–210s.
  2. The API sent a server_error mid-stream 4 seconds before the turn failed; the client kept reading and the connection was then reset. The UI reports only the ECONNRESET, which is likely why this bug is being filed under multiple different titles.
  3. A second, independent connection failed in the same window. The remote-tools-device websocket to bridge.claudeusercontent.com dropped twice with code 1006 (abnormal closure) at 15:51:36–37, seconds before the API stream died. Two separate connections to Anthropic infrastructure failing simultaneously is consistent with an upstream/edge event, not a local network fault.
  4. Local causes exhausted (corroborating the OP's ruling-out):
  • Host path clean: curl -v https://api.anthropic.com/v1/messages → TLS 1.3 OK, Cloudflare responds (expected 405)
  • systemextensionsctl list → 0 network system extensions; macOS firewall off; no VPN/proxy/DNS filtering active during repro
  • vmnet unified log during the repro window: empty (VM NAT healthy)
  • Identical failure before and after clean reinstall
  1. Session context: large MCP tool surface (~10 servers, one exposing 116 tools) and is_resume: true with an 82 KB transcript — i.e., long streaming turns that routinely extend past the ~3-minute mark where these failures cluster. May be relevant to why some users hit this constantly and others never do.

Happy to provide full main.log/coworkd.log excerpts or run an instrumented repro.

bondbuilds · 1 month ago

Has any resolution been offered for this? I am experiencing theexact same symptoms.

Showing cached comments. Read the full discussion on GitHub ↗