Skip to content

jev-belay

Claude Code Stop hook that blocks an unverified done: one four-question Jev call only when files changed and no check passed.

PluginbetaMIT

Overview

jev-belay is a Claude Code Stop hook that checks whether anything actually ran before Claude's done, tests pass message is allowed to stand. It reads the turn's transcript locally and, only when files changed and no check has passed since, spends one Jev call with four questions on whether the closing message is an unverified done. If so, the turn does not end and Claude gets the reason and goes back to run the suite; every other stop costs nothing, and every error path lets the turn end.

The README reports, on 100 labelled stops from a real corpus, AUROC 0.976 at separating false dones from honest ones, versus 0.777 for judging the wording alone, with 8 blocks in 100 turns, 7 correct, at a median 346 ms and about $0.00005 per call. It cites a prior calibration run of a simpler rule that scored AUROC 0.50, and argues the missing variable is whether evidence of a passing check exists. A demo shows Claude claiming a rename was done without running anything, being blocked, then running tests and finding a real bug. It installs as a Claude Code plugin and is MIT licensed.

What the decision model decides

TypeQuestionAnswers
Yes / noDoes the closing message report the task as done?yes · no
Yes / noWould a test or check apply to this change?yes · no
Yes / noDoes the message claim a check ran?yes · no

How it works

  1. Claude tries to end a turn
  2. Hook reads the transcript locally for changes and passing checks
  3. If files changed with no passing check, ask Jev four questions
  4. Block an unverified done and return the reason; otherwise allow

Strengths

  • README reports AUROC 0.976 on 100 labelled stops
  • Costs nothing on most stops
  • Fails open on every error

Caveats

  • Evaluation set of 100 stops
  • Some false blocks (1 of 8 in the reported sample)

Getting started

`/plugin marketplace add valentynkit/jev-belay` then `/plugin install jev-belay@jev-belay`.

At a glance

Type
Plugin
Status
beta
Language
TypeScript
Runtime
Claude Code plugin (Stop hook)
Has code
yes
Has tests
yes
License
MIT

Use cases and integrations

How curated lists describe it

  • Coding agents: Claude Code Stop hook that reads the transcript for evidence and spends one four-question Jev call only when files changed with no passing check since, failing open on any error.

    yibie/awesome-jev
  • Claude Code Stop hook that checks the transcript for evidence before trusting a "done" claim, spending one four-question Jev call only when files changed with no passing check since, and failing open on every error path.

    AnotiaWang/awesome-decision-models
  • A Claude Code Stop hook that reads the turn transcript locally and calls Jev only when files changed and no check has passed, blocking an unverified “done”.

    logicrw/awesome-jev-projects
  • Claude Code Stop hook that checks the transcript for evidence before trusting a "done" claim, spending one four-question Jev call only when files changed with no passing check since, and failing open on every error path.

    cobanov/awesome-jev
  • Claude Code Stop hook that blocks an unverified done: reads the transcript for evidence, asks Jev once, fails open on everything else.

    hellogumbo/awesome-jev
  • Claude Code Stop hook that checks the transcript for evidence before letting a "done" through, and spends one four-question Jev call only when files changed with no passing check since. Fails open on every error path.

    MrJev/awesome-jev

Frequently asked questions

When does jev-belay call Jev?

Only when files changed and no check has passed since; other stops cost nothing.

How accurate is it?

The README reports AUROC 0.976 on 100 labelled stops.

What if Jev fails?

Every error path lets the turn end.

Related projects

  • Claude Code plugin where Claude plans phased work with checks and, at each stop, Jev judges whether the work is really done.

    PluginbetaTypeScript
  • Stop hook for coding agents where Jev checks each attempted stop against plain-language rules and sends the agent back if one is violated.

    HookbetaPython
  • Claude Code Stop hook that uses Jev to catch turns ending half-done: no action, broken promises, unwatched work or wrong language.

    HookbetaPython
  • GitHub Action where an AI agent turns an issue into a PR behind guards, checks, a reviewer and a Jev gate that escalates when unsure.

    ProjectprototypeTypeScript
  • Software-factory supervisor where Jev independently judges coding agents' completion, test sufficiency, progress and need for a human.

    ProjectbetaPython
  • Asynchronous System-1 supervisory plugin for Hermes Agent with typed Jev decisions, ranking, verification and an opt-in tool gate.

    ProjectbetaPython