Canny
Stop hook for Claude Code and Codex that refuses 'done' until a check passes after the last edit; Jev advises but never causes a block.
Overview
Canny is a supervision layer for AI coding agents. It hooks into Claude Code and Codex CLI, keeps an append-only ledger of what the agent actually did, and will not let it finish on a claim alone. The README opens with a real case where Claude wrote a file, ran nothing and said done; on the next run Canny refused that "done" because no check had passed since the last edit.
Deterministic hooks decide; Jev advises. Pattern checks and the ledger gate are the only things that can block. Jev answers questions such as whether an edit breaks a rule in CLAUDE.md or AGENTS.md and whether a message claims to be done, and everything it says becomes a note; per the listing, Jev can relax a refusal but never cause one, and Canny still blocks with no API key. canny replay re-derives every stop verdict from recorded facts and Jev answers to check for mismatches. It has zero runtime dependencies and is installed by pasting a prompt to your agent.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Does this edit break a rule in CLAUDE.md or AGENTS.md? | yes · no |
| Yes / no | Does the message claim the work is done? | yes · no |
How it works
- Hooks record edits and command results in a ledger
- Agent tries to stop
- Ledger gate checks whether a check passed since the last edit
- Jev advises with notes on rule breaks and done-claims
- Block or allow; replay can re-derive verdicts
Strengths
- Deterministic blocking, works without a key
- Model advice can never cause a block
- Replayable verdicts
Caveats
- Not on npm; installed by prompting your agent
- Claude Code and Codex behave differently in places
Getting started
Paste the install prompt from the README into Claude Code or Codex.At a glance
- Type
- CLI
- Status
- beta
- Language
- TypeScript
- Runtime
- Claude Code / Codex CLI hooks
- Has code
- yes
- Has tests
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Agent verification: stops AI coding agents from claiming work is done without evidence by using deterministic hooks and TypeSafe's Jev advisor to evaluate test results, file diffs, and verification logs.
yibie/awesome-jevKeeps an execution ledger for Claude Code and Codex CLI to check for passing validation after edits.
logicrw/awesome-jev-projectsStops AI coding agents from claiming work is done without evidence.
wh000wh000/awesome-jev-liveEvidence ledger that challenges unsupported "done" claims from coding agents.
cobanov/awesome-jevStops AI coding agents from claiming work is done without evidence. Deterministic hooks decide, TypeSafe's Jev advises. Append-only ledger, zero runtime dependencies.
hellogumbo/awesome-jevStop hook for Claude Code and Codex CLI that refuses a "done" while no check has passed since the last edit. Jev can only relax that refusal and never cause one, and it still blocks with no API key at all.
MrJev/awesome-jev
Frequently asked questions
Can Jev block my agent?
No, only deterministic checks block; Jev's answers become notes.
Does it work without a TypeSafe key?
Yes, it still blocks unsupported done-claims.
How do I verify its decisions?
Run canny replay to re-derive every verdict from the ledger.
Related projects
Claude Code plugin that scores a turn's redacted diff on eight Jev risk axes at Stop and asks Claude to reinvestigate once if high.
ProjectbetaGoCoding-agent hook that asks Jev one yes/no per project rule on every edit or turn and makes the agent fix any violation.
HookbetaTypeScriptDesktop app running coding agents in parallel git worktrees, with optional Jev judgments of each changed file against the task.
AppbetaClaude Code plugin with rules and checks that make agents prove their work; an optional Jev judge triages review findings.
PluginbetaMarkdown + shellClaude Code skills that wait for AI pull-request reviewers and judge whether their reports actually permit a merge, never inferring a pass.
ProjectbetaAuditable Zig terminal agent pairing Codex for coding with Jev typed preflight and postflight checks under deterministic policy gates.
CLIproductionZig