TUI rendering corruption when multiple Task agents run in parallel
Description
When multiple Task (subagent) tool calls run concurrently, the TUI status area at the top of the screen renders incorrectly — text from different tasks overlaps and interleaves, producing garbled output.
This has been observed to happen specifically when scrolling while the UI transitions between a tool call display and a permission prompt. It may be a race condition in the rendering pipeline during that transition. Possibly related to running inside tmux.
Screenshots
Screenshot 1 — Garbled task status lines
The top status area shows fragments from multiple tasks overlapping:
- "Find dirty git repos · 2 tool uses · 15.0k tokens" bleeds into "po and print only dirty ones"
- "Sca" (truncated "Scan downloads...") shows "Done" misaligned
- "Audit dev tool versions · 36 tool uses · 47.5k tokens" has column text from other rows (
-sdk-python/.git \,Ruby version) bleeding in - Bash command paths from agents are overlapping below the status area
Screenshot 2 — Multiple Bash permission prompts overlap
- Two Bash command prompts render simultaneously (one for
CIS530_HW06/.git, one forrag-poisoning-architecture-bench/.git) - A permission approval dialog for
java --versionappears below both - The task status area at top has the same interleaving corruption
Reproduction
- Ask Claude Code to spawn 3 Task agents in parallel
- While agents are running concurrently, scroll as the UI transitions between tool call output and a permission prompt
- Text from different agents' status lines overlaps and corrupts the display
- Has reproduced multiple times in the same session
Possible trigger
The corruption seems to coincide with scrolling during a transition between tool call display and permission prompt UI. May be a rendering race condition.
Environment
- Claude Code CLI
- Model: claude-opus-4-6
- iTerm2 on macOS 15 (Darwin 25.3.0)
- Running inside tmux (may be relevant)
Related
See #29181 for a separate issue with parallel Task agent emission/visibility.
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗