[BUG]

Resolved 💬 3 comments Opened May 12, 2026 by gusthegoodbot-spec Closed May 16, 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?

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_

View original on GitHub ↗

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