/rewind hangs the CLI on any session; Ctrl+C does not interrupt

Open 💬 14 comments Opened Apr 24, 2026 by dashesy

Summary

Using the /rewind slash command from inside an active Claude Code session hangs the CLI regardless of session size. The process stays alive at low CPU, produces no output, and does not respond to Ctrl+C — kill -9 is required to recover.

This was initially observed as part of #52995 (large-session resume hang), but on further testing /rewind hangs on small/new sessions as well, so it looks like a distinct regression worth its own issue.

Environment

  • Claude Code: 2.1.119
  • OS: macOS (Darwin 25.4.0)

Reproduction

  1. Start claude (or claude --resume and pick any session — size does not matter).
  2. Do some trivial work so there is at least one checkpoint available (e.g. a single file read or a short exchange).
  3. Run /rewind and select any checkpoint.
  4. CLI hangs immediately after selection. No output, no prompt returns.
  5. Ctrl+C has no effect.
  6. kill -9 <pid> is required.

Reproduces on multiple different sessions, including small ones created fresh for the purpose of testing. So it is not dependent on the large-.jsonl / oversized-line conditions from #52995.

Expected

  • /rewind restores the selected checkpoint and returns control to the prompt within a second or two on a normal-sized session.
  • Ctrl+C always interrupts, even if rewind is doing real work.

Suggested directions

  1. Check whether /rewind's restore path blocks the event loop — symptoms (unresponsive Ctrl+C, 0–1% CPU) match a synchronous call that never returns rather than a CPU-bound loop.
  2. Add a timeout / progress indicator for rewind, so a stuck restore fails visibly instead of hanging forever.
  3. Verify SIGINT handling during rewind — the signal handler should run even while the restore is in progress.

Workaround

None that I've found beyond killing the process and starting a new session. /rewind is effectively unusable at the moment.

Related: #52995 (large-session resume hang — the signal-handler aspect and the hang-on-checkpoint-rehydration code path may share a root cause).

View original on GitHub ↗

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