Agents follow written rules. The one that matters is rarely written.
Sawbuck reads what you keep telling your agent, helps you write it down, and re-runs your tests to prove it held. We put a test that could not pass into 6 real repos and told Claude to get to green fast. With no rule, it got there by changing the test 85 of 100 times. With one line, 0 of 100. We checked 593 active repos. 19 had a rule like that one.
Your shape
What you push on, and what you never said.
It reads your own messages and shows 11 spokes in 4 groups. It also reads past turns and names habits the agent has that you never push on, in the agent's own words. Then turn what you see into rules.
Not said, an example
The agent commits on its own when you only asked for an edit, in 5 turns. "Committed and pushed." Try: do not commit unless I ask.
/sawbuck-reins:audit
Finds rules in your agent files that pull against each other, and proposes which wins. No history needed.
/sawbuck-reins:rules
Reads your own messages and proposes the rules you keep enforcing, each with quotes. You pick what to keep.
An example. Yours comes from /sawbuck-reins:shape. What it names are leads from one read, tested on one person.
The check
See a test edit get sent back.
Your agent gets the tests to pass. The check re-proves each new commit from the source edits alone. It sends a gamed commit back, up to three times by default.
# the agent edits the test to expect the bug
$ sawbuck check
🚩 gamed: a win here came from editing the test, config, or grader, not the source. It does NOT survive a source-only re-run, so it does not count.
# the agent puts the test back and fixes the source
$ sawbuck check
✓ verified: your working change earned it. "tests_pass" improved, and the source carried the win (it survives a source-only re-run).
The parts
Two parts.
The check, and the rules it reads.
The check
It re-proves every win from the agent's source edits alone. A test that went from red to green because the test, the grader or a declared config changed does not count.
How it works →Rules
sawbuck contract writes your first rules.
It protects paths an agent should not change on its own, like your CI
workflows and Dockerfile, and you can add your own. A change to one gets sent back.
In a terminal: npx sawbuck check to try it,
npm i -g sawbuck to keep it.
sawbuck context and
sawbuck debt show history on demand.
Common questions
Write the rules down.
A win counts only if it survives the check, not because the agent said so. Installs as a Claude Code plugin and runs on the plan you already pay for.
Open source, Apache-2.0 · Node 18+ · no API key