Sawbuck
GitHub Install
Privacy

Nothing is collected. Here is exactly what moves, and where.

This covers the sawbuck CLI, the promptwheel and @promptwheel/logbook engines, the sawbuck-reins plugin for Claude Code (Codex untested), and this website. Last updated 2026-11-05.

No telemetry, no accounts, no analytics

None of the packages phone home. There is no usage reporting, no crash reporting, no account, and no identifier of any kind. The check runs on your machine and writes its record into the repo you attached it to: .sawbuck/ (verdicts, state, steer scores) and a cache of your repo's own git history (events.jsonl, LOGBOOK.md), which includes the commit author names already in your git log. All of it is kept out of git status and none of it is transmitted. sawbuck detach removes what it wired, the rules files stay because they are yours to review, and --purge deletes the record. To verify a change, the check runs your repo's own test or metric command (the one in promptwheel.config.json, or the detected test script) in throwaway git worktrees, exactly as you would run it yourself.

The only things that can leave your machine

  • The live steering readout (the live judge), on by default. The Claude Code plugin makes one small classify call per turn through Claude Code's own model API, on your own plan, containing the agent's last answer and your reply. It goes where your Claude Code traffic already goes, and nowhere else. It runs in repos where Sawbuck is attached and in sessions outside any repo, not in other repos. When a reply is scored as a steer, a few-word summary is kept in Claude Code's plugin store on your machine, with the repo name and date, and goes nowhere else. judge: off stops it.
  • Your rules, shape and audit, only when you run them. /sawbuck-reins:rules and /sawbuck-reins:shape gather what you typed to Claude Code on your machine, leave out copies and text that looks like a secret, and send it to the model once, through your own Claude Code session. /sawbuck-reins:shape also sends short excerpts of up to 120 past turns. The gathered messages, the excerpts and what the model wrote from them sit in ~/.sawbuck/ during the run and are deleted when the check finishes. What stays there: the totals of each shape run, the shape card, and the rules you chose to keep, in the file you chose. Secret filtering is by pattern and can miss one. /sawbuck-reins:audit reads your agent files the same way, once: CLAUDE.md, AGENTS.md, .cursorrules and ~/.claude/CLAUDE.md.
  • Scoring with your own model instead. This is optional, through the reins command line tool (@sawbuck/reins on npm). The same pair goes to the judge you configured with SAWBUCK_JUDGE: a local ollama model (nothing leaves your machine) or your own API key (to that provider).
  • What a judge call contains. Both modes send a bounded pair, never the whole conversation: at most the first 600 characters of the agent's last answer and the first 800 characters of your reply. Nothing else from the session goes with it.
  • The cue harvest, on demand only. reins wizard and reins cues read your own local Claude Code or Codex session transcripts on your machine to find the cues you keep giving. With a local ollama judge nothing leaves the machine; with a hosted judge each bounded pair goes to that provider, and the command asks for confirmation first. The result is a short list of cue phrases in .sawbuck/cues.json inside the repo, which you can read, edit, or delete.
  • npm. Installing or running through npx fetches the packages from the npm registry, like any npm package.

The check itself never calls a model and never makes a network request.

This website

Static pages with two small inline scripts for the theme and the mobile menu, no cookies, and no tracking scripts. The host (Vercel) keeps ordinary server request logs as part of serving the site; we do not add anything to them.

Questions

Open an issue at github.com/sawbuck-ai/sawbuck/issues. The source for every claim above is public: the plugin's README lists every program it runs, every file it writes, and every call it makes.