Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchPC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
cliffhanger is a free, MIT-licensed Claude Code plugin that uses a Stop hook and a skill to catch certain signs that requested work remains. It can ask Claude Code to continue when its checks find an unfinished task, but it does not verify that tests actually ran or that their results match the current code. Treat it as a bounded completion reminder, not proof that a coding task is finished.
What cliffhanger does
cliffhanger combines a Claude Code Stop hook with a skill. Its intended use is to notice when Claude Code is about to end a turn even though its task state or final response suggests there is still work to do. The project is free and MIT-licensed; its developer says it has no paid tier.
According to the project README, the hook first tries to rebuild a checklist from task-tool state or Markdown checkboxes. If it finds no checklist, it checks the final assistant message for defined early-stop language. It handles both Stop and SubagentStop events. These are the project’s documented checks, not a general assessment of whether the code is correct.
The project documents several cases in which a stop is allowed through: an explicit BLOCKED: or NEEDS-YOU: line, active background work, plan mode, or reaching the continuation cap. The documented default cap is three automatic continuations per user turn.
#1 Best Overall
How the Stop hook works
Claude Code’s Stop event is an extension point that fires just before Claude concludes its response and returns control to the user. In Claude Code’s hook behavior, a Stop hook that exits with code 2 can send its standard error as a system message, allowing Claude to continue. Exit code 0 suppresses standard output and standard error for this event. Anthropic’s hooks guide also uses a Stop hook to check whether requested tasks are complete.
That platform mechanism is separate from cliffhanger’s checklist extraction, message-pattern checks, allow-through cases, and continuation cap. The Claude Code hook reference describes a stop_hook_active input for identifying when a Stop hook is already causing continuation—a consideration for preventing loops in custom hooks.
What cliffhanger checks—and what it does not
Checks it documents
- Task state represented by task tools or Markdown checkboxes.
- Defined early-stop language in the final assistant message when no checklist is found.
- Conditions that should allow a stop, such as a stated blocker or active background work.
Checks it does not claim to perform
The developer says the hook inspects the final response and task state, not tool results or whether a test result corresponds to the current code revision. A checklist can appear complete while being wrong, and a completion message can be internally consistent without proving that tests ran successfully against the final working tree. Use separate test commands, review, or other verification appropriate to the task.
Rank #2
The repository says the hook uses Python’s standard library, makes no model calls, records decision data locally, and fails open on an internal error. Those are project claims and have not been independently audited here. It also documents an observe mode that records cases it would block without actually blocking.
Install and try it cautiously
The repository’s documented plugin quickstart is:
- Add the project marketplace:
claude plugin marketplace add Arthur031221/cliffhanger. - Install the plugin:
claude plugin install cliffhanger@cliffhanger.
The hook requires Python 3.8 or newer available as python3, according to the project README. The repository also documents a global Agent Skills installation, cloning the repository and running cliffhanger/bin/cliffhanger install to set up a settings-based hook, and a one-session option: claude --plugin-dir ./cliffhanger. Plugin metadata was identified as version 0.1.0 in the repository material reviewed; repository contents and version can change, so check the project’s current instructions before installing.
Rank #3
A cautious rollout is to enable observe mode first, inspect cliffhanger stats, and only then decide whether blocking fits your workflow. The project also documents cliffhanger off and an environment variable for pausing or observing behavior; consult the current README for the variable name and supported configuration.
How it compares with a general completion prompt
Claude Code supports Stop hooks independently of cliffhanger. Its hooks guide includes a prompt-based example that asks whether requested tasks are complete. That gives users a way to add a completion gate without adopting this project. The choice is less about whether one approach guarantees completion—it does not—and more about how the check is expressed and bounded.
| Approach | Completion signal | Scope | Model call | Loop controls and blockers |
|---|---|---|---|---|
| cliffhanger | Checklist-first task-state checks, then defined final-message patterns if no checklist is present | Plugin or settings-based hook; the project also documents a one-session plugin-directory option | The project says its hook makes no model calls | Documented allow-through conditions and a default cap of three automatic continuations per user turn |
| Claude Code prompt-based Stop hook example | A prompt asks whether requested tasks are complete | Configured as a Claude Code hook; exact scope depends on the user’s configuration | Prompt-based; the guide’s example uses a completion prompt | Implementation-dependent; configure suitable blocker handling and bounds for the workflow |
This comparison follows the project’s description of its own design and Claude Code’s hooks guide. It does not establish that cliffhanger is more reliable or suitable for every project.
Rank #4
What the public benchmark shows
In a developer-run benchmark dated September 30, 2026, the cliffhanger repository reports tests on Claude Code 2.1.284 with Sonnet 5.5, using a MacBook Air M5, one small WSGI-app fixture, and 12 tasks. The results were:
| Reported outcome | Benchmark result | What the figure applies to |
|---|---|---|
| Runs stopping before a green test run | 6 of 12 baseline runs | Baseline arm in the reported benchmark |
| Runs stopping before a green test run with cliffhanger | 0 of 12 runs | Blocking hook plus skill arm in the reported benchmark |
| Additional cost | About 4% | Reported for the hook-plus-skill treatment in that setup |
| Additional cost when every needed test command was allowed | About 13% | Reported when both arms completed all 12 tasks |
These figures are the project’s own results, not an independent or broad evaluation. The repository describes one model, one fixture, and one run per task and arm. It also says advice for handling a refused command was added after the same failure appeared in earlier runs, so the benchmark was not held out. When every needed command was allowed, both arms finished all 12 tasks. The benchmark illustrates a possible failure mode and mitigation under that particular setup; it cannot establish general improvements in completion rates or cost.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
When a completion hook helps—and when it cannot
A completion gate is most useful when the work has explicit deliverables and checkable criteria: for example, named files to change, a test command to run, or a task list whose items can be marked complete. If requirements are vague or dependencies are ambiguous, the hook has less reliable signals to inspect.
Best Value
It cannot provide missing credentials, approvals, requirements, or other external inputs. The developer recommends marking such work as blocked and reporting what is needed rather than repeatedly attempting it. The developer also acknowledges that an agent may claim progress without changing anything. A continuation cap helps bound retries, but users should stop runs when consecutive attempts make no file or task-state changes.
For unattended work, decide in advance what counts as a blocker, what evidence counts as completion, and how many automatic continuations are acceptable. Keep verification separate from the hook’s completion signal, especially for tests and code changes that may have occurred after a test result was produced.
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.

