Cursor’s lifecycle hooks did not, in my implementation, reliably tell Savepoints which work had finished, whether that work was its own review follow-up, or which repository the work changed. Those distinctions mattered: a hook firing showed that an event was observed, but not that the review workflow had completed.
This is an account of my implementation and probes, not a claim about every Cursor version or setup. The central lesson was to establish scaffolding identity, event correlation, and repository-local impact separately instead of inferring them from event order.
As an Amazon Associate I earn from qualifying purchases.
The review workflow needed a clear end state
Savepoints observes agent activity, evaluates whether completed work is worth retaining, and can emit a learning—or explicitly record no_capture when there is nothing to keep. In four substantial agent sessions, observe hooks indicated activity, but the review skill was consulted inconsistently and emit-learning did not run. I could not tell whether a review had found nothing or had never happened.
Free tools Windows power users keep installed
One-click scans. No signup required.
I added a review opportunity after observed work and a mark-reviewed closure after that opportunity was handled. Observation remained separate from semantic judgment: a hook could report activity, but it could not decide whether that activity merited a lasting learning.
#1 Best Overall
Three boundaries the hooks did not establish for me
1. Was this source work or Savepoints scaffolding?
A stop after ordinary work could trigger a review follow-up. But that follow-up could itself end with a stop, creating the possibility of recursively opening another review. Prompt-origin metadata available at beforeSubmitPrompt did not reliably identify the generated review in my probes.
I marked review follow-ups explicitly with SAVEPOINTS_CAPTURE_REVIEW_V1 opportunity_id=<uuid> and ignored prompts carrying that marker when registering source work. This made the system-generated scaffolding identifiable without relying on uncertain origin metadata.
2. Did the evidence and stop belong to the same generation?
I first tried suppressing the next stop after opening a review, assuming it would belong to that review. In one case, no review stop arrived; a later, unrelated stop was swallowed by the stale guard roughly 100 seconds afterward. Expected event order was not a safe substitute for identity.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesgeneration_id offered a stronger way to connect events from one agent generation. In the Desktop path I tested, event IDs linked the start, repository evidence, and stop. In Cloud, the ID observed at start and during evidence collection did not reliably match the one at stop. I therefore did not infer a match from timing, conversation_id, or ID-normalization heuristics.
Rank #3
3. Did the work affect this repository?
A generation can touch multiple repositories in a multi-root workspace, while session-wide hooks can run for repositories the agent did not edit. I counted an afterFileEdit as evidence only when its file_path resolved under that repository’s repoRoot.
Shell and MCP activity did not satisfy this repository-local gate in my implementation because I could not reliably tie that activity to a specific repository. That choice favors a narrower, attributable review opportunity over a broader inference that might associate work with the wrong repository.
Rank #4
What the Desktop and Cloud results mean
In the tested Desktop path, the IDs connected generation start, repository evidence, and stop. In Cloud, that relationship did not hold reliably at stop. These are implementation findings from my probes, not a universal characterization of Cursor Desktop or Cloud; they do not establish behavior across all versions or environments.
For that reason, the Savepoints adapter treats lifecycle-hook-only capture review as unsupported in Cloud rather than guessing at event correlation. This does not mean Savepoints cannot run in Cloud: the agent-owned learning path remains possible. What is unavailable through this adapter path is the independent assurance that the review occurred.
Best Value
A practical way to reason about lifecycle hooks
When designing a workflow around coding-agent events, check each relationship it depends on instead of treating a hook as proof of completion:
- Identify scaffolding: use an explicit marker for system-generated follow-ups if the host does not reliably identify their origin.
- Verify correlation: use an event identifier only after confirming that it connects start, evidence, and completion in the host and environment you support.
- Establish local impact: require evidence that resolves to the target repository before opening a repository-specific review opportunity.
- Fail honestly: if the evidence chain cannot be established, report the automated path as unsupported rather than acting on an inferred relationship.
An agent host can expose lifecycle events without exposing the lifecycle boundaries your system needs.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




