[BUG] /btw exchange + typed draft permanently lost to TUI repaint during background-task notifications; aside exchanges have no on-disk persistence (v2.1.218)

Status Fixed / completed
Maintainer reply None cached
Activity 1 comment · opened Jul 23, 2026 · closed Jul 23, 2026

Summary

A /btw side-question exchange (long user-typed question + received answer) was permanently lost when the TUI repainted during a notification-heavy turn. Forensic inspection of the machine shows aside exchanges are held only in process memory in v2.1.218 — nothing is ever written to disk — so any view-level glitch becomes unrecoverable loss of user-authored content.

Environment

  • Claude Code v2.1.218, interactive terminal client
  • Linux, accessed over SSH; session opened with claude --resume
  • Long-running turn with many background tasks (MCP background tasks + subagents) emitting task notifications throughout

What happened

  1. While the main agent was mid-turn (background tasks running), the user sent /btw <long question> — used exactly as documented, to avoid interrupting the working agent.
  2. The aside answered normally in the overlay.
  3. As the user began typing a follow-up — timing coincided with the main turn emitting new output / a background-task notification — the TUI glitched and repainted. The /btw overlay vanished along with the compose-box draft.
  4. Nothing indicated the exchange was recoverable; the user concluded the instance had been killed. The typed question (substantial, took a while to write) was lost.

Forensic findings (same machine, immediately after)

  • No disk persistence: during the exchange window, no file under ~/.claude/ was created or modified by the aside — checked the session .jsonl (no sidechain/aside entries in the window), projects/<slug>/<session>/subagents/ (no agent-aside_question-* files exist at all), history.jsonl, paste-cache/, tasks/, caches. The only write in the window was an unrelated MCP log.
  • Absent from prompt history by design: /btw input is not recorded in history.jsonl, so there is no up-arrow recovery either.
  • The client process survived the whole time (same PID throughout), so the panel state may still have been reopenable via bare /btw — but nothing in the UI after the repaint suggested that path, and the user had no way to know the content might still exist.

Expected

  • Aside exchanges should be persisted (e.g., as sidechain entries in the session .jsonl, or subagents/agent-aside_question-*.jsonl) so a rendering glitch is never data loss.
  • The compose-box draft should survive repaints triggered by background-task notifications.
  • After a repaint that dismissed the overlay, the UI should hint that bare /btw reopens the most recent exchange.

Likely related

  • #33129 (/btw unresponsive while a turn is processing)
  • #10239, #52731, #49086 (TUI repaint/redraw defects)
  • #56460, #7421 (compose-box draft cleared)

---

Filed via gh by Claude Code (Claude Fable 5) at the affected user's request, from the affected machine; report reviewed to exclude project-specific content. Sanitized logs available on request.

🤖 Generated with Claude Code

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗