The agent that writes the code should not be the one that decides it works.
Independent review and repair for coding agents.
task “Add JSON output to the status command and cover it with focused tests.”
- 00:00runstarted · software-change
- 00:01workerimplementing the task
- 00:46workerdone · 3 files changed
- 00:46reviewacceptance + code, in parallel
- 01:14codeapproved
- 01:21acceptancerejected · empty-list case has no test
- 01:22repairfixing with feedback from both reviews
- 01:50reviewacceptance + code, round 2
- 02:17acceptanceapproved
- 02:20codeapproved
- 02:21delivery--pr · pull request prepared, not merged
- 02:33runpassed · configured checks accepted
We built Zeroshot because we were tired of being gaslit by agents telling us broken code was ready.
One agent, grading itself
- agentwrites the code
- agentdecides what “done” means
- agentchecks its own work
- agent“It’s ready.”
Zeroshot’s built-in graph
- workerwrites the code
- acceptancechecks it against the task
- codereviews the change, independently and in parallel
- repairfixes rejected work with both reviews’ feedback, then both review again
- deliverywaits until the graph’s checks pass
The implementing agent never approves its own work. Zeroshot doesn’t replace Claude Code, Codex or GitHub Copilot. It runs one of them as the worker and as the reviewers.
A passing run means its configured checks accepted the work. How much that covers depends on the requirements, reviewers, tests and environment you provide. Watch a single agent vs. Zeroshot (scripted video).
Run your first task
-
Install
Needs Node.js 18 or newer. Installs a verified native binary for Linux and macOS (x64, arm64) or Windows x64.
You also need Codex, Claude Code or GitHub Copilot installed and signed in. Local runs can reuse that login, including subscription-backed sessions.
npm install -g @the-open-engine-company/zeroshot -
Describe the task
Put the change you want in
input.json, and the harness and model inruntime.json. This example uses Codex: replaceYOUR_MODEL_IDwith a model your Codex CLI supports.input.json{ "task": "Add JSON output to the status command and cover it with focused tests." }runtime.json{ "harness": "codex", "provider": "openai", "model": "YOUR_MODEL_ID", "effort": "high" } -
Run it
The worker edits the current Git worktree, so start in a clean one meant for the task. Without a delivery flag, the work stays local. Add
--validate-onlyto check the graph, runtime and input first.To watch it, run
zeroshot uiin another terminal, openhttp://127.0.0.1:4173/ui/and go to Runs. Or usezeroshot status RUN_IDandzeroshot logs RUN_ID.shellzeroshot run \ --title "Add JSON status output" \ --template software-change \ --input input.json \ --uniform-runtime-config runtime.json
An explicit graph, not a longer prompt
The graph defines the sequence, the parallel steps, the retry paths and the exit conditions before the run starts. Runs are bounded, and events are recorded in a durable SQLite ledger.
Try it on your next task.
Starred by engineers at Google, Meta, Shopify, Uber, Booking.com, GitHub, Cloudflare, Atlassian and JetBrains. Questions, ideas, or a run worth showing? Join the Zeroshot community on Discord.