[BUG]
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?
Title: Streaming stalls — token counter freezes mid-reply, captured locally as "error":"unknown" (40+ sessions, 2 machines)
Body:
Symptom
Claude Code stalls mid-stream. Token counter advances briefly, then freezes.
No error surfaces in the UI. Have to ESC and resubmit, often 3–5 times before
the reply completes. Persistent for ~1 month.
Environment
- Machine 1: Mac Mini M4 16GB, macOS, Claude Code 2.1.118
- Machine 2: MacBook Pro M5 Max, macOS, Claude Code 2.1.139
- Networks (all affected): Starlink home, iPhone cellular tether, wired Ethernet
Reproducibility
Reproduces across both machines on all three networks. Not network-dependent.
Not machine-dependent. Same Anthropic account on both.
Network path verified clean
curl -sS -o /dev/null -w "%{time_total}s %{http_code}\n"
-X POST -H "x-api-key: dummy" -H "anthropic-version: 2023-06-01"
-H "content-type: application/json" --max-time 10
https://api.anthropic.com/v1/messages -d '{}'
→ 0.229s 401
DNS, TLS, routing, MTU (1500) all healthy.
Local evidence — Claude Code is capturing the se
Grep against session transcripts:
for f in ~/.claude/projects/*/*.jsonl; do
c=$(grep -cE '"error":"unknown"|"error":\{"type"
[ "$c" -gt 0 ] && echo "$c $f"
done | sort -rn | head -20
Mac Mini (active session, single jsonl):
- 6 "error":"unknown" + 30 "error":{"type":null...
MacBook Pro (top 20 sessions affected):
- Peak session: 47 stalls
- Total across top 20: ~190 error markers
- 20+ distinct sessions show the marker
Sample timestamps (Mac Mini):
- 2026-04-29T03:03:00Z, 03:16:02Z, 03:25:40Z, 03:42:50Z
- 2026-05-06T02:34:36Z
- 2026-05-07T13:39:43Z
Asks
1. The local "error" payloads are "unknown" or "type":null — the underlying cause is being discarded. Is there a client-side bug
in Claude Code that's not surfacing the real error
2. The user-visible behavior should be either (a) a real error message or (b) the SSE stream completing — not a silent freeze with
no recovery path.
3. With --debug api --debug-file <path> I can capture an SSE-level trace on the next stall. Happy to share. What's the preferred
channel?
Workaround
ESC + resubmit, repeatedly. Has cost hours of prodfix.
### What Should Happen?
Title: Streaming stalls — token counter freezes mid-reply, captured locally as "error":"unknown" (40+ sessions, 2 machines)
Body:
## Symptom
Claude Code stalls mid-stream. Token counter advances briefly, then freezes.
No error surfaces in the UI. Have to ESC and resubmit, often 3–5 times before
the reply completes. Persistent for ~1 month.
## Environment
- Machine 1: Mac Mini M4 16GB, macOS, Claude Code 2.1.118
- Machine 2: MacBook Pro M5 Max, macOS, Claude Code 2.1.139
- Networks (all affected): Starlink home, iPhone cellular tether, wired Ethernet
## Reproducibility
Reproduces across both machines on all three networks. Not network-dependent.
Not machine-dependent. Same Anthropic account on both.
## Network path verified clean
curl -sS -o /dev/null -w "%{time_total}s %{http_code}\n"
-X POST -H "x-api-key: dummy" -H "anthropic-version: 2023-06-01"
-H "content-type: application/json" --max-time 10
https://api.anthropic.com/v1/messages -d '{}'
→ 0.229s 401
DNS, TLS, routing, MTU (1500) all healthy.
## Local evidence — Claude Code is capturing the se
Grep against session transcripts:
```bash
for f in ~/.claude/projects/*/*.jsonl; do
c=$(grep -cE '"error":"unknown"|"error":\{"type"
[ "$c" -gt 0 ] && echo "$c $f"
done | sort -rn | head -20
Mac Mini (active session, single jsonl):
- 6 "error":"unknown" + 30 "error":{"type":null...
MacBook Pro (top 20 sessions affected):
- Peak session: 47 stalls
- Total across top 20: ~190 error markers
- 20+ distinct sessions show the marker
Sample timestamps (Mac Mini):
- 2026-04-29T03:03:00Z, 03:16:02Z, 03:25:40Z, 03:42:50Z
- 2026-05-06T02:34:36Z
- 2026-05-07T13:39:43Z
Asks
1. The local "error" payloads are "unknown" or "type":null — the underlying cause is being discarded. Is there a client-side bug
in Claude Code that's not surfacing the real error
2. The user-visible behavior should be either (a) a real error message or (b) the SSE stream completing — not a silent freeze with
no recovery path.
3. With --debug api --debug-file <path> I can capture an SSE-level trace on the next stall. Happy to share. What's the preferred
channel?
Workaround
ESC + resubmit, repeatedly. Has cost hours of prodfix.
### Error Messages/Logs
```shell
Title: Streaming stalls — token counter freezes mid-reply, captured locally as "error":"unknown" (40+ sessions, 2 machines)
Body:
## Symptom
Claude Code stalls mid-stream. Token counter advances briefly, then freezes.
No error surfaces in the UI. Have to ESC and resubmit, often 3–5 times before
the reply completes. Persistent for ~1 month.
## Environment
- Machine 1: Mac Mini M4 16GB, macOS, Claude Code 2.1.118
- Machine 2: MacBook Pro M5 Max, macOS, Claude Code 2.1.139
- Networks (all affected): Starlink home, iPhone cellular tether, wired Ethernet
## Reproducibility
Reproduces across both machines on all three networks. Not network-dependent.
Not machine-dependent. Same Anthropic account on both.
## Network path verified clean
curl -sS -o /dev/null -w "%{time_total}s %{http_code}\n"
-X POST -H "x-api-key: dummy" -H "anthropic-version: 2023-06-01"
-H "content-type: application/json" --max-time 10
https://api.anthropic.com/v1/messages -d '{}'
→ 0.229s 401
DNS, TLS, routing, MTU (1500) all healthy.
## Local evidence — Claude Code is capturing the se
Grep against session transcripts:
for f in ~/.claude/projects/*/*.jsonl; do
c=$(grep -cE '"error":"unknown"|"error":\{"type"
[ "$c" -gt 0 ] && echo "$c $f"
done | sort -rn | head -20
Mac Mini (active session, single jsonl):
- 6 "error":"unknown" + 30 "error":{"type":null...
MacBook Pro (top 20 sessions affected):
- Peak session: 47 stalls
- Total across top 20: ~190 error markers
- 20+ distinct sessions show the marker
Sample timestamps (Mac Mini):
- 2026-04-29T03:03:00Z, 03:16:02Z, 03:25:40Z, 03:42:50Z
- 2026-05-06T02:34:36Z
- 2026-05-07T13:39:43Z
Asks
1. The local "error" payloads are "unknown" or "type":null — the underlying cause is being discarded. Is there a client-side bug
in Claude Code that's not surfacing the real error
2. The user-visible behavior should be either (a) a real error message or (b) the SSE stream completing — not a silent freeze with
no recovery path.
3. With --debug api --debug-file <path> I can capture an SSE-level trace on the next stall. Happy to share. What's the preferred
channel?
Workaround
ESC + resubmit, repeatedly. Has cost hours of prodfix.
Steps to Reproduce
Title: Streaming stalls — token counter freezes mid-reply, captured locally as "error":"unknown" (40+ sessions, 2 machines)
Body:
Symptom
Claude Code stalls mid-stream. Token counter advances briefly, then freezes.
No error surfaces in the UI. Have to ESC and resubmit, often 3–5 times before
the reply completes. Persistent for ~1 month.
Environment
- Machine 1: Mac Mini M4 16GB, macOS, Claude Code 2.1.118
- Machine 2: MacBook Pro M5 Max, macOS, Claude Code 2.1.139
- Networks (all affected): Starlink home, iPhone cellular tether, wired Ethernet
Reproducibility
Reproduces across both machines on all three networks. Not network-dependent.
Not machine-dependent. Same Anthropic account on both.
Network path verified clean
curl -sS -o /dev/null -w "%{time_total}s %{http_code}\n"
-X POST -H "x-api-key: dummy" -H "anthropic-version: 2023-06-01"
-H "content-type: application/json" --max-time 10
https://api.anthropic.com/v1/messages -d '{}'
→ 0.229s 401
DNS, TLS, routing, MTU (1500) all healthy.
Local evidence — Claude Code is capturing the se
Grep against session transcripts:
for f in ~/.claude/projects/*/*.jsonl; do
c=$(grep -cE '"error":"unknown"|"error":\{"type"
[ "$c" -gt 0 ] && echo "$c $f"
done | sort -rn | head -20
Mac Mini (active session, single jsonl):
- 6 "error":"unknown" + 30 "error":{"type":null...
MacBook Pro (top 20 sessions affected):
- Peak session: 47 stalls
- Total across top 20: ~190 error markers
- 20+ distinct sessions show the marker
Sample timestamps (Mac Mini):
- 2026-04-29T03:03:00Z, 03:16:02Z, 03:25:40Z, 03:42:50Z
- 2026-05-06T02:34:36Z
- 2026-05-07T13:39:43Z
Asks
1. The local "error" payloads are "unknown" or "type":null — the underlying cause is being discarded. Is there a client-side bug
in Claude Code that's not surfacing the real error
2. The user-visible behavior should be either (a) a real error message or (b) the SSE stream completing — not a silent freeze with
no recovery path.
3. With --debug api --debug-file <path> I can capture an SSE-level trace on the next stall. Happy to share. What's the preferred
channel?
Workaround
ESC + resubmit, repeatedly. Has cost hours of prodfix.
### Claude Model
Opus
### Is this a regression?
Yes, this worked in a previous version
### Last Working Version
_No response_
### Claude Code Version
fuck anthropic
### Platform
Anthropic API
### Operating System
macOS
### Terminal/Shell
Terminal.app (macOS)
### Additional Information
_No response_This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗