Rewind menu (Esc-Esc, /rewind) ignores keyboard input after resuming via `claude -r` picker

Resolved 💬 2 comments Opened Apr 25, 2026 by jlarnal Closed Apr 25, 2026

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.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗