[BUG] Fullscreen TUI: stale spinner rows + statusline vertical desync under nested/parallel subagent load (WSL2, v2.1.178)
Status Fixed / completed
Reported on v2.1.178
Maintainer reply None cached
Activity 4 comments · opened Jun 16, 2026 · closed Jun 17, 2026
Preflight Checklist
- [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 (v2.1.178)
Environment
- Claude Code: 2.1.178 (latest)
- OS: WSL2 (Linux 6.12 kernel) on Windows
- Terminal: Windows Terminal —
WT_SESSIONis set (e.g.fbd66005-…), confirming WT; noteTERM_PROGRAMis unset despite this (WT setsWT_SESSIONbut notTERM_PROGRAM) - Shell: bash, running as root via
sudo -i, with sudoDefaults !use_pty(defaultuse_ptydisabled — see discriminators) - TERM:
xterm-256color;COLORTERMunset - Setting:
"tui": "fullscreen"
What's Wrong?
With "tui": "fullscreen", the no-flicker differential renderer leaves stale cells and overlapping lines when the agent-progress region grows/shrinks rapidly under heavy nested/parallel subagent load. Concrete artifacts (see screenshot):
- spinnerVerbs rows (e.g.
Newspapering…) multiply and are never cleared — old frames' rows linger on screen - the statusline renders in the middle of the screen instead of pinned to the bottom (vertical position desync)
- the prompt/composer input line is drawn over content from above
- bottom-row garbage fragments left behind (e.g.
ns,2,20, a doubled), strayes) - a hint line (
…without interrupting Claude's current work) collides on top of a data row - token/label text merges, e.g.
Running 3 claude◆agents… es,claud (+2),claude(+3)) - after all agents complete, the screen mostly self-recovers without Ctrl+L (a steady-state repaint cleans most stale cells)
Reproduction
- Set
"tui": "fullscreen"in~/.claude/settings.json. - From the main conversation, spawn many concurrent + nested subagents. I used 12 total = 3 parallel chains, each nesting 4 levels deep via the Task/Agent tool (each agent spawns exactly one
haikuchild; recursive nesting added in 2.1.172). The progress tree + agent list (shown with(+N)nesting badges) grows and shrinks quickly. - Watch the fullscreen TUI during the run.
- Observe: stale spinner rows, mid-screen statusline, input-line overdraw, bottom-row garbage.
- After agents finish, the screen mostly self-heals.
What Should Happen
The fullscreen differential renderer should clear vacated rows when the agent-progress region shrinks, keep the statusline pinned to the bottom, and not overdraw the input line — i.e. no stale cells or overlapping lines during or after the run.
Key discriminators (already triaged)
- Not a pty issue: by default sudo's
Defaults use_ptyinserts an intermediate pty (a secondpts) between the login shell and Claude Code. We setDefaults !use_pty, collapsing the chain to a singlepts(verified:bash → sudo → bash → claudeall on the samepts). The corruption is unchanged with the single pts, so the intermediate pty is not the cause. /tui defaultdoes NOT corrupt; only/tui fullscreendoes → the bug is in the fullscreen no-flicker renderer, not the terminal/WSL layer.
Possibly related
- #21690 (closed/completed) — TUI corruption with 18 parallel Task subagents (macOS); same trigger and similar text-merging artifacts, but marked fixed — we still reproduce similar corruption at v2.1.178 in fullscreen + WSL2 + nested agents.
- #59750 (open) — agent-view vertical position desync on Windows Terminal/PowerShell (differs: fully unresponsive / dead input loop).
- #17025 (closed/not_planned) — progress lines fail to update in place (line-clear / ANSI positioning failure).
_Screenshot of the corruption attached below._
4 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
<img width="1467" height="630" alt="Image" src="https://github.com/user-attachments/assets/59bf7bf2-ccb3-4d36-8e49-609d12ed9d8a" />
Thanks for the triage — but I don't think this duplicates the three linked issues; it adds information none of them contain.
**The three matches are the flat-parallel, default-renderer family, and all are already closed:**
What this report adds (none of the above have it):
"tui": "fullscreen"but/tui defaultdoes NOT corrupt. That localizes it to the no-flicker fullscreen differential renderer — a different code path from the scrollback-renderer reports above. None of the three mention this discriminator.(+N)badge / agent-list view. All three cited issues describe only flat parallel agents.pts(sudoDefaults !use_pty, so no intermediate pty).Ctrl+L— not reported in the others.Happy to consolidate if maintainers prefer — e.g. reopen #21690 and track the fullscreen + nested path here. But it shouldn't be auto-closed against three older, closed, default-renderer reports.
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.