[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)
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
- Open Claude Desktop 1.12603.1 on macOS 15.7.3, sign in (Max plan)
- Switch to Cowork tab, start any task — even "reply with the word hello"
- Task shows retry loop: "Server is busy. Retrying in Ns (attempt N of 10)"
- After 10 attempts, fails with: API Error: Unable to connect to API (ECONNRESET)
- Reproduces on home WiFi and iPhone hotspot; with Fable and Opus; before and after clean reinstall
- 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_
Showing cached comments. Read the full discussion on GitHub ↗
5 Comments
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" />
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 ) .
<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>
Follow-up to my comment above: the failure has now survived a complete clean reinstall (app removed,
~/Library/Application Support/Claudedeleted, VM bundle re-downloaded fresh) and reproduced on 2026-07-15 with the same signature. New evidence below, including the mid-streamserver_errorthat precedes the ECONNRESET.The key finding: the ECONNRESET is the terminal symptom, not the root cause. The triggering event is a server-side
server_errorreceived mid-stream, and the failures cluster in a consistent ~180–210 second window — the OP's log showsseconds_to_outcome: 186; mine shows 208.Environment
Identifiers for backend traceability
session_id:local_0b03b2dd-f6f7-4fde-954a-be841ef51601cli_session_id:53096442-8f70-4f78-8a28-21f4c7df25ebvm_instance_id:22841919-1903-493b-ad97-b27b46121271user_message_uuid:4d85acb2-5a84-404b-94f1-61eff05d8ef5Log sequence at failure (main.log, 2026-07-15)
Observations
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.server_errormid-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.remote-tools-devicewebsocket tobridge.claudeusercontent.comdropped 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.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 reprois_resume: truewith 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.
Has any resolution been offered for this? I am experiencing theexact same symptoms.