[BUG] /rewind to before the first user prompt hydrates a degraded harness: SessionStart hook output replayed stale (not re-fired), skills listing dropped entirely

Status Open
Reported on v2.1.226
Maintainer reply None cached
Activity 1 comment · opened Aug 10, 2026

Summary

Using /rewind to jump back to before the first user prompt of a session hydrates the replacement conversation with less context than a brand-new session, and with a silently degraded harness: the user-invocable skills listing is gone entirely, and SessionStart hook output is replayed verbatim-stale instead of being re-fired.

Environment

  • Claude Code CLI 2.1.226
  • macOS (Darwin 25.6.0)
  • Session with SessionStart hooks configured and ~120 skills installed under ~/.claude/skills/

Repro

  1. Start a session in a project with SessionStart hooks (that inject dynamic state) and installed skills.
  2. Work for a while (so the hook-injected state changes — e.g. new items appear in whatever the hook reports).
  3. /rewind and select the very first user prompt as the target (discarding the entire thread).
  4. Submit a new prompt.
  5. Observe the hydrated context.

Observed

  1. SessionStart hooks are NOT re-fired — their original output is replayed verbatim. Concrete proof from our session: post-rewind, a SessionStart hook injection read "Deferrals: 3 active · top: ddf_255bc488", but ground truth at rewind time was 4 active with a different ticket (filed mid-thread, i.e. after session start) on top. The injection predated that ticket, so it was the preserved original, not a fresh hook run. Any hook-injected dynamic state (counts, reminders, mode banners) can be silently stale.
  2. The user-invocable skills listing is entirely absent post-rewind. ~120 skills installed; zero listed in context; the Skill tool's own guidance still referenced a listing that didn't exist. Description-triggered skill invocation is therefore dead — name-only invocation at best. The listing appears to ride with the first user prompt turn, which the rewind discarded, and it is never regenerated for the replacement prompt.
  3. Everything else survives: system prompt, CLAUDE.md files, git status, agent-type roster, MCP instructions, deferred-tools list. UserPromptSubmit hooks DO fire fresh per prompt (timestamps/banners were current).

Net effect: total post-hydration context was smaller than a fresh "hello" session (~30K baseline here). Reproduced across multiple sessions when rewinding to before the first prompt.

Expected

Either:

  • re-fire session-start hooks and regenerate the skills listing when a rewind discards the turn(s) that carried them, or
  • document the degradation (and ideally warn in the rewind picker when the selected target is the first prompt).

Why it matters

A "rewind to the top" looks like a clean fresh start but is strictly worse than one: the agent silently loses skill discoverability and trusts stale hook-injected state, with no indication anything is missing.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗