claude-code - 💡(How to fix) Fix Rewind menu (Esc-Esc, /rewind) ignores keyboard input after resuming via `claude -r` picker [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#53364Fetched 2026-04-26 05:17:41
View on GitHub
Comments
1
Participants
2
Timeline
7
Reactions
0
Author
Timeline (top)
labeled ×4closed ×1commented ×1cross-referenced ×1

After resuming a session via the interactive claude -r picker, the rewind menu renders with the checkpoint list but completely ignores keyboard input (arrows, Enter, Esc). The only escape is killing the terminal.

The same session resumed via claude --resume <id> (direct, no picker) has a fully working rewind menu.

Root Cause

After resuming a session via the interactive claude -r picker, the rewind menu renders with the checkpoint list but completely ignores keyboard input (arrows, Enter, Esc). The only escape is killing the terminal.

The same session resumed via claude --resume <id> (direct, no picker) has a fully working rewind menu.

Fix Action

Workaround

claude --resume <session-id>

Direct resume (no picker) leaves the rewind input handler intact.

Code Example

claude --resume <session-id>
RAW_BUFFERClick to expand / collapse

Summary

After resuming a session via the interactive claude -r picker, the rewind menu renders with the checkpoint list but completely ignores keyboard input (arrows, Enter, Esc). The only escape is killing the terminal.

The same session resumed via claude --resume <id> (direct, no picker) has a fully working rewind menu.

Environment

  • Claude Code: 2.1.119
  • OS: Windows 10 Pro (10.0.19045)
  • Terminal: VS Code integrated terminal (ConPTY)
  • Shell: bash (Git for Windows)

Reproduction

  1. claude -r
  2. Select any session from the picker
  3. Once loaded, press Esc Esc (or run /rewind)
  4. Rewind menu appears, listing message checkpoints
  5. Arrow keys / Enter / Esc do nothing — menu is unresponsive
  6. Only fix: kill the terminal and start over

Workaround

claude --resume <session-id>

Direct resume (no picker) leaves the rewind input handler intact.

Investigation notes

  • Reproduced across multiple sessions in the same project — universal, not session-specific data.
  • JSONL of an affected session is structurally clean: all checkpoint messageId anchors resolve to real user messages, all referenced backup files exist in ~/.claude/file-history/<sid>/, no terminal control bytes in content.
  • Initially suspected custom-title / agent-name entries (added by /rename); stripping them from the JSONL did not fix the bug.
  • Reproduced again in a session that had no /rename / no custom title — confirms picker, not data, is the trigger.
  • Other in-session TUI panes (slash menus, etc.) appear to work after picker-resume — only the rewind menu input is dead.

Likely cause: the -r picker is a separate Ink/TUI render that exits before the resumed session's TUI mounts; raw-mode / stdin handler state isn't fully restored on Windows ConPTY before the new TUI takes over, leaving the rewind menu's key subscription unbound.

Suggested fix

stdin is intact: typing and slash commands work after -r-resume. Only the rewind modal's useInput handler is dead. Other ▎ in-session modals worth testing to scope it (/agents, /permissions, etc.). Likely cause: the picker's Ink modal didn't fully unsubscribe its useInput hook on close, so when the rewind ▎ modal mounts later it gets shadowed by the stale subscription. Suggested fix: audit the modal input-stack unmount in the -r picker, or migrate it to the same modal API the working ▎ in-session menus use.

extent analysis

TL;DR

The issue can be worked around by resuming a session directly using claude --resume <session-id> instead of the interactive picker claude -r.

Guidance

  • Verify that the issue is specific to the rewind menu by testing other in-session TUI panes, such as slash menus, to confirm they are working as expected.
  • Test other in-session modals, like /agents or /permissions, to see if they exhibit similar input issues after resuming a session with the -r picker.
  • Investigate the modal input-stack unmount in the -r picker to ensure it fully unsubscribes its useInput hook on close, preventing it from shadowing the rewind modal's subscription.
  • Consider migrating the -r picker to use the same modal API as the working in-session menus to resolve the issue.

Example

No code snippet is provided as the issue does not imply a specific code fix without further investigation.

Notes

The issue seems to be related to the interaction between the -r picker and the rewind menu's input handler, specifically on Windows ConPTY. The suggested fix involves auditing the modal input-stack unmount in the -r picker or migrating it to a different modal API.

Recommendation

Apply the workaround by using claude --resume <session-id> to resume sessions directly, as this method does not exhibit the input issue with the rewind menu. This approach allows for continued use of the rewind feature while the underlying issue with the -r picker is investigated and resolved.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix Rewind menu (Esc-Esc, /rewind) ignores keyboard input after resuming via `claude -r` picker [1 comments, 2 participants]