Desktop Code tab: assistant text between tool calls is hidden in the transcript but still read aloud by Listen

Status Open
Reported on v2.1.280
Maintainer reply None cached
Activity 0 comments · opened Oct 3, 2026

What happens

In the desktop app's Code tab, when an assistant turn interleaves text and tool calls, some of the assistant's text blocks are folded into the Ran N commands › summary row and never rendered. The Listen (text-to-speech) button reads those same blocks aloud, so you hear whole paragraphs that aren't anywhere on screen. That mismatch is how I noticed: the audio was a superset of the transcript.

It is not the thinking blocks being read — the missing audio matches text content blocks exactly.

Inconsistent, not all-or-nothing. In one turn, six text blocks were emitted between tool-call groups. The 1st and 6th rendered; blocks 2–5 did not, and all six were spoken. Example of a hidden one that mattered: "Decisive: the video's own embedded English track is identical to the millisecond to the library's external file." — the finding the whole task turned on, audible but invisible.

Reproduce

  1. Desktop app, Code tab, a task where the assistant narrates between tool calls (several Bash calls with short text blocks between them).
  2. Read the rendered transcript; note the Ran N commands › rows.
  3. Press Listen on the same response.
  4. The audio contains text that the transcript doesn't show. Expanding the › row reveals it.

Expected: either render every assistant text block, or exclude the collapsed ones from Listen. The two views should not disagree about what was said.

Verification: the hidden text is present in the session JSONL under ~/.claude/projects/<project>/<session>.jsonl as ordinary {"type":"text"} blocks in assistant messages, so this is a rendering/TTS mismatch, not lost content.

Environment: Claude Code 2.1.280, desktop app (Claude.app), macOS 27.0.1 (26A434), Apple silicon.

View original on GitHub ↗