[BUG] TUI rendering corruption during parallel sub-agent execution — garbled text, dropped characters, overlapping UI elements (v2.1.69)
Preflight
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code
What's Wrong?
When running multiple sub-agents in parallel (via the Task tool), the TUI rendering becomes severely corrupted. Characters are dropped mid-word, spinner status text bleeds into agent output, multiple input prompts appear simultaneously, and queued user messages render inline with agent status instead of staying in the input box.
This is happening on v2.1.69 — the version that includes "Fixed terminal flicker caused by animated elements at the scrollback boundary" and "Improved spinner performance by isolating the 50ms animation loop." These fixes did not resolve the issue.
Screenshot / Reproduction
Actual output during parallel sub-agent execution:
● Running 2 agents… (ctrl+o to expand)
├─ Fix John Day month offset · 43 tool uses · 64.7k tokens
│ ⎿ Done
└─ Check John Day drop timing · 13 tool uses · 56.2k tokens
● ⎿ Bash: Query May 2026 for di4ision 757 and all divisions with availability
Ch ck m rch3 target file for John Day detection details
· Philosophising… (2m 49s · ↓ 15.5k tokens)
* Philosophising… 8 9 9
─────────Bash──Get detailed first available poll from march3 John Day data ────────
❯
✶ Whisking… (3m 38s · ↓ 16.1k tokens)
ft+tab to cycle) · esc to interrupt
❯ John day drops 50% 4 months out [user's queued message rendered here]
───────────────────────────────────────────────────────────────────────────
❯ Press up to edit queued messages
───────────────────────────────────────────────────────────────────────────
⏵⏵ accept edits on (shift+tab to cycle) · esc to interrupt
Specific corruption visible:
"di4ision"— should be "division" (character substitution)"Ch ck m rch3"— should be "Check march3" (dropped characters)"ft+tab to cycle"— should be "shift+tab to cycle" (truncated)- Spinner text
"Philosophising…"and"Whisking…"overlapping with agent output and random numbers (8 9 9) - Multiple
❯prompts stacked vertically - User's queued message rendered inline with agent status display instead of in the input box
- Horizontal rule separators appearing in wrong positions
What Should Happen?
- Sub-agent status updates should render in their designated areas without corrupting adjacent text
- Spinner animations should not bleed into content
- Queued messages should remain in the input box, not render inline with agent output
- Characters should not be dropped or substituted during re-renders
- Only one input prompt should be visible at a time
Steps to Reproduce
- Start Claude Code v2.1.69
- Run a task that spawns 2+ parallel sub-agents via the Task tool
- While agents are running, type or queue a message
- Observe rendering corruption as agents update their status simultaneously
The corruption is more severe with:
- More concurrent agents (2+ reliably triggers it)
- Agents with high tool use counts (fast status updates)
- User typing/queuing messages during agent execution
- Long-running agents (3+ minutes)
Environment
- Claude Code Version: 2.1.69
- Platform: Windows 11
- Runtime: Node.js v24.14.0 (npm install, NOT native Bun binary)
- Terminal: Windows Terminal / PowerShell
- Is this a regression? Unknown — parallel sub-agents have always had rendering issues, but v2.1.69 specifically claimed to fix terminal flicker and spinner performance
Additional Context
This appears to be a race condition in the Ink TUI's render loop when multiple sub-agents trigger status updates simultaneously. The 50ms spinner animation loop (mentioned in the v2.1.69 changelog as being "isolated from the surrounding shell") may be competing with agent status update renders, causing partial overwrites and character corruption.
To anyone else seeing this — you're not alone, and it's not your terminal. It's the Ink framework struggling with concurrent updates. ❤️
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗