Rewind picker deadlocks input when session loaded via `claude --resume` (no id, launch-time picker)
Summary
The Rewind picker (Esc Esc / /rewind) becomes completely unresponsive to keypresses — arrows, Enter, Esc, Ctrl+C all ignored — but only when the session was opened via claude --resume with no session id (the launch-time picker flow). The terminal must be killed entirely to recover; Rewind state is lost.
Repro
| Launch method | Rewind behavior |
|-|-|
| claude → /resume (picker from inside TUI) | Works normally |
| claude --resume <session-id> (direct id) | Works normally |
| claude --resume (no id, launch-time picker) | Input deadlocked |
Same underlying session file in all three cases. Only the bare-flag picker path breaks Rewind.
Steps
- Have a session long enough to show in the resume picker (multi-turn, several prompts).
- Exit.
- Run
claude --resume(no id argument). Select the session from the launch-time picker. - Press
Esc Esc(or run/rewind). - Rewind picker renders. Arrow keys, Enter, Esc, Ctrl+C all ignored. No input reaches the picker.
- Only recovery: kill the terminal process entirely.
Expected
Rewind should behave identically regardless of how the session was resumed.
Environment
- Claude Code: 2.1.118
- OS: Windows 10 (10.0.19045.6466)
- Terminal: VS Code integrated terminal (
TERM_PROGRAM=vscode) - Shell: bash (Git Bash)
Notes
- Not specific to long sessions in general — a fresh session of equivalent length works fine. The deadlock is tied to the
--resume-with-launch-picker startup path. - Rewind picker itself renders correctly (selection cursor visible), so the render path is fine; it's the input handler that's dead.
- Suspect the launch-time picker hydrates the session before the TUI input loop is fully wired, leaving the keypress handler in a bad state that only surfaces once Rewind is opened.
- Ctrl+C does not interrupt — the terminal itself has to be killed.
- Happens repeatedly, reproducible.
Workaround
Resume with an explicit id: claude --resume <session-id>, or launch bare claude and use /resume from inside.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗