/btw silently discards conversation — destroying the user's work is the wrong default
Summary
The /btw sidechain command intentionally discards both the question and the answer when the window closes. No flag to opt out, no copy-on-close prompt, no warning. For a product whose value prop is augmenting the user's work, silently destroying that work is the wrong default.
Repro
- Open a Claude Code session.
- Run
/btw, ask a non-trivial question, get a useful answer. - Close the /btw window.
- Grep the session jsonl at
~/.claude/projects/<project-path>/<session-id>.jsonlfor the question or answer.
Actual: Zero entries. The exchange never enters the transcript. There is no isSidechain: true record either — the data was never written.
Expected: Either (a) the exchange is persisted to the session jsonl with an ephemeral: true flag so it's available for grep/audit/recovery without polluting the LLM's next-turn context, or (b) the close action surfaces a \"copy answer before discarding?\" prompt.
Why this matters
- The cost argument (\"don't bloat history\") is decoupled from the destruction argument. You can keep the LLM's context clean without deleting the disk record. The two concerns conflate in the current design.
- Users discover the loss after they've already lost something. The user in my session asked a substantive question via
/btw, got an answer, and 5 minutes later wanted to refer back — at which point the only correct answer was \"it's gone, file it under CLAUDE.md next time.\" That is not a good story for a developer tool. - The mitigation guidance (\"add it to CLAUDE.md if it's important\") puts the burden on the user to predict in advance which answers will turn out to matter. Predicting that is the whole reason they wanted to ask casually in the first place.
Proposal
One of these would close the design gap:
- Persist with a flag. Write
/btwexchanges to the session jsonl exactly like normal turns, but mark themephemeral: true. The chat-renderer and the next-turn LLM context can both honour the flag (skip rendering / skip including in context). The data is then recoverable by grep, by audit, by post-session reference. - Copy-on-close. Before disposing the /btw window, prompt: \"Copy this exchange to clipboard?\" / \"Append summary to CLAUDE.md?\" / \"Discard\". One click for each.
- Opt-in ephemerality. Make persistence the default; require
/btw --ephemeralfor the destructive variant.
Option 1 is cheapest and silently fixes the data-loss surface without changing UX.
Related
- #54602 — /btw missing in the VS Code extension (sibling UX issue; the cross-window persistence problem is more acute when /btw works in some surfaces and not others).
Environment
- Claude Code 2.1.150
- macOS 25.4.0
- Verified by grepping both an active session's jsonl (25MB, mtime current) and a sibling persona's session jsonl — neither contained any
/btwentries despite a confirmed exchange in one of them.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗