FREE · LOCAL · MIT · FOR CODING AGENTS

“Done” needs a receipt.

DoneLatch refuses acceptance of a coding agent’s “done” until human-approved check definitions produce fresh passing checks and detect a configured behavioral fault.

Did the check run after the last edit? Would it actually catch the missing behavior? Keep the answer in a local receipt.

Claude Code · Codex · Gemini CLI · Cursor. Node.js 24+. No AI subscription or API key required.

Check the result. Then check the check.

01

A fresh baseline

Execute the configured acceptance checks and bind the result to watched files, configuration, and Git HEAD.

02

A deliberate fault

Skip a persisted write or flip a boundary in a temporary copy. Require the declared assertion to detect it.

03

A current receipt

Read locally signed evidence. An edit, a later failure, or a weak negative control means completion is refused.

Run the demo first

Clone the reviewed release. The demo runs in a disposable copy and leaves its shipped source unchanged.

git clone --branch v0.1.2 --depth 1 https://github.com/alidaram99/donelatch.git
cd donelatch
npm ci
npm run demo

Use it in your project

Initialize and edit the template to define your actual result and a meaningful negative control.

npx --yes github:alidaram99/donelatch#v0.1.2 init
# Review and configure receipts.yml before running commands.
# HUMAN ONLY: inspect and approve the displayed definitions.
npx --yes github:alidaram99/donelatch#v0.1.2 trust
npx --yes github:alidaram99/donelatch#v0.1.2 run
npx --yes github:alidaram99/donelatch#v0.1.2 faultcheck
npx --yes github:alidaram99/donelatch#v0.1.2 verify-done

Install the Gemini CLI extension

gemini extensions install https://github.com/alidaram99/donelatch --ref v0.1.2

Includes the local CLI, acceptance-receipt skill, and a bounded AfterAgent check. Configure your project's acceptance contract first and review extension hook permissions. Gallery discovery is eligible through the public tagged repository; listing and search rankings are not guaranteed.

Claude and Codex plugin commands · All four hook configurations · Release v0.1.2

Know what the receipt means

Hooks request correction; they are cooperative guardrails. A host can stop an UNVERIFIED turn after the retry cap. The CLI still refuses acceptance. Temporary copies are not a sandbox, and a signature from your own local key is not independent review.

Check definitions need human approval in a user-level store outside the repo. If they change, the hook requests human review and gives no instruction to execute them. Approval does not pin referenced script contents, PATH or environment; same-user filesystem access can bypass it. Read the approval guide.

The guarantee covers your configured watched scope and declared faults. It does not cover excluded files, malicious same-user processes, or every user requirement. Read the security boundaries.

Why this problem matters

In Stack Overflow’s 2025 developer survey, 66% of respondents to the AI-frustrations question reported almost-correct solutions. That motivates verification; it does not establish a failure rate for this tool or any individual agent. Primary survey source.

Guide: how to stop coding agents claiming “done” without evidence, with the agent bug reports and the three requirements (fresh, recorded, sensitive).

DoneLatch complements Stryker’s broader mutation analysis, Checkly’s production monitoring, and ordinary CI. Its focus is a small outcome contract connected to current completion evidence.

Common questions

How do I check a coding agent’s done claim?

Configure an acceptance assertion and meaningful fault in receipts.yml, have a human review them with DoneLatch trust, run approved checks and faultcheck after the last edit, then use verify-done. It accepts only matching current evidence.

Does DoneLatch hard-block Claude Code, Codex or Cursor?

Hooks are cooperative guardrails. Ordinary evidence correction is capped at one turn; unapproved definitions require human review. Hosts can still stop UNVERIFIED work. Use verify-done in a separately controlled acceptance step when its nonzero exit must be enforced.

Does DoneLatch upload code or charge per check?

Version 0.1.2 is local, MIT-licensed and free, with no telemetry or hosted service. Configured project commands can independently use the network.

Can green tests still miss bugs?

Yes. The included demo removes a persisted write: a weak return-value check stays green while a fresh reader catches the defect. A configured negative control covers that particular outcome, not all possible defects.