[MODEL] Opus 4.8 (1M) frequently returns thinking-only turns (no text/tool_use, stop_reason=end_turn) — session silently stops

Status Open
Reported on v2.1.219
Maintainer reply None cached
Activity 0 comments · opened Jul 24, 2026

Preflight Checklist

  • [x] I have searched existing issues for similar behavior reports (see Related below — this extends the same regression with fresh data and a sharper structural fingerprint).
  • [x] This report does NOT contain sensitive information.

Type of Behavior Issue

Other unexpected behavior — the model ends a turn producing no user-visible output (no text, no tool_use), so the session silently stops as if finished.

What You Asked Claude to Do

Ordinary work in a long, high-reasoning-effort agentic session (e.g. "continue implementing the next operator"). No special prompt is required — it recurs across many different prompts.

What Claude Actually Did

The assistant turn contains a single thinking block and nothing else — no text, no tool_use — with stop_reason=end_turn, yet output_tokens is in the thousands. The turn ends "cleanly", so from the user's side the CLI shows thinking tokens tick up to a few thousand and then just stops with nothing printed, as if the assistant had finished. Claude Code then either ends the turn silently or injects the built-in "please continue" (#70422), which produces another empty turn — chaining into a run of dead turns.

Sharper structural detail (from the session .jsonl, not speculation): the thinking block's thinking text is an empty string (0 chars) — only a signature remains:

{
  "role": "assistant",
  "model": "claude-opus-4-8",
  "stop_reason": "end_turn",
  "content": [
    { "type": "thinking", "thinking": "", "signature": "Eog0Cok...(10 KB)" }
    //  ^ no "text" block, no "tool_use" block; the thinking content itself is empty
  ],
  "usage": { "input_tokens": 2, "cache_read_input_tokens": 24106, "output_tokens": 3624 }
}

So the model spends thousands of output tokens, the thinking content is empty, and nothing actionable is emitted.

Expected Behavior

The model should not return stop_reason=end_turn (or tool_use) when its content is a thinking-only block with no text and no tool_use. A completed turn must contain user-facing text or at least one tool call. (Secondarily: Claude Code could detect a thinking-only turn and re-issue the user's actual request instead of the vague built-in "please continue" — but the root cause is model-side.)

Files Affected

Not applicable — no files are modified. This is an empty/no-output response, not an unwanted edit.

Permission Mode

I don't know / Not sure (irrelevant — no edits are attempted).

Can You Reproduce This?

Sometimes (intermittent) — but very frequent in long, high-effort sessions (see frequency data below).

Steps to Reproduce

  1. Run a long agentic session with Opus 4.8 (1M) at high reasoning effort.
  2. Over the session, a growing fraction of turns come back as thinking-only (thinking block, empty text, no text/tool_use, stop_reason=end_turn).
  3. Independent of context size — it reproduces even at very low context (see cache_read column).

Claude Model

Opus (claude-opus-4-8[1m] — Opus 4.8, 1M context)

Relevant Conversation

An application-layer probe scanning the session .jsonl files (grouping by message.id, flagging stop_reason=end_turn with 0 text characters) logged 107 empty turns overall and 55 thinking-only end_turn responses in a single session. Representative cluster — 5 empty turns within 5 minutes on 2026-07-25:

| local time | output_tokens | cache_read_input_tokens | content blocks | stop_reason |
|---|---|---|---|---|
| 07:07:36 | 1594 | 0 | [thinking] | end_turn |
| 07:08:56 | 4664 | 24106 | [thinking] | end_turn |
| 07:10:16 | 3624 | 24106 | [thinking] | end_turn |
| 07:10:56 | 2990 | 24106 | [thinking] | end_turn |
| 07:11:56 | 2147 | 24106 | [thinking] | end_turn |

Observed output_tokens for these empty turns ranges from 246 to 18512. cache_read_input_tokens of 0 and 24106 confirms this is not max_tokens truncation or context exhaustion.

Impact

High — this severely disrupts everyday use. It is not a rare edge case: in an active session it can fire many times within a single hour (the probe logged 5 empty turns in a 5-minute window, and 55 in one session), so any long or high-effort workflow on Opus 4.8 keeps stalling. Each dead turn burns hundreds to ~18k output tokens with zero output, and the built-in retry ("please continue") tends to trigger further empty turns, compounding the disruption.

Claude Code Version

2.1.219 (Claude Code)

Platform

Anthropic API

Additional Context

  • Still occurring on 2026-07-25 on native Linux (x86_64, Ubuntu 26.04), high reasoning effort.
  • Vanishes when switching off 4.8, consistent with a 4.8 extended-thinking/tool-call regression.
  • Related (same underlying regression):
  • #68591 — Opus 4.8 returns thinking-only responses without tool_use or text blocks ("fingerprint B"). This report adds: stop_reason=end_turn specifically, a much wider output_tokens range (246–18512 vs 800–1400), the empty-thinking-text + signature-only structure, low-context reproduction, high-frequency data, and a fresh 2026-07-25 native-Linux occurrence (that issue is currently marked stale, but the behavior is not).
  • #68352 — Opus 4.8 (1M) recurring unusable assistant outputs (the malformed-tool-call sibling of the same regression).
  • #68529 — "fingerprint A" (stop_reason=stop_sequence, empty output).
  • #70422 — built-in "please continue" injection, which amplifies this into chained empty turns.

View original on GitHub ↗