Skip to content

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.

CLIbetaMIT

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

TypeQuestionAnswers
Yes / noDoes this edit break a rule in CLAUDE.md or AGENTS.md?yes · no
Yes / noDoes the message claim the work is done?yes · no

How it works

  1. Hooks record edits and command results in a ledger
  2. Agent tries to stop
  3. Ledger gate checks whether a check passed since the last edit
  4. Jev advises with notes on rule breaks and done-claims
  5. 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-jev
  • Keeps an execution ledger for Claude Code and Codex CLI to check for passing validation after edits.

    logicrw/awesome-jev-projects
  • Stops AI coding agents from claiming work is done without evidence.

    wh000wh000/awesome-jev-live
  • Evidence ledger that challenges unsupported "done" claims from coding agents.

    cobanov/awesome-jev
  • Stops 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-jev
  • Stop 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.

    ProjectbetaGo
  • Coding-agent hook that asks Jev one yes/no per project rule on every edit or turn and makes the agent fix any violation.

    HookbetaTypeScript
  • Desktop app running coding agents in parallel git worktrees, with optional Jev judgments of each changed file against the task.

    Appbeta
  • Claude Code plugin with rules and checks that make agents prove their work; an optional Jev judge triages review findings.

    PluginbetaMarkdown + shell
  • Claude Code skills that wait for AI pull-request reviewers and judge whether their reports actually permit a merge, never inferring a pass.

    Projectbeta
  • Auditable Zig terminal agent pairing Codex for coding with Jev typed preflight and postflight checks under deterministic policy gates.

    CLIproductionZig