Sawbuck
GitHub Install

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.

No model in the check Apache-2.0 Node 18+ No API key

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.

CorrectnessProofHonestyScopeAutonomyVoiceNamingVisualSimplicityProcessSafety

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 parts

Two parts.

The check, and the rules it reads.

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

01

What does it catch?

A test that went from red to green only because a test, a grader or a declared config changed, and not the source. The check page lists what it cannot catch.

02

Does it call a model?

The check does not. It runs offline and free. Three commands use a model: /sawbuck-reins:rules, /sawbuck-reins:shape and /sawbuck-reins:audit. Each uses it once when you run it, through your own Claude Code session. The live steering readout is on by default, with one Sonnet call per turn on your plan. To stop it, run /plugin configure sawbuck-reins@sawbuck and set judge to off.

03

Is it free?

Yes. Apache-2.0, Node 18 or newer, no API key.

04

What is a protected path?

A path the agent must not change on its own. sawbuck contract protects seven groups by default, like your CI workflows and Dockerfile, and you can add your own. A change to one gets sent back.

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