
Most coding agents write from a reading they took minutes ago. Between the read and the write, a formatter rewrites the file, a second agent edits the same tree, or a pull moves the branch the path sat on. The write lands, the tool call reports success, and nobody gets an error, because nothing conflicted and the diff applies cleanly. Bob's tooling widens that gap rather than closing it. After an edit, Bob tells the agent it does not need to re-read the file and to proceed using the change as the new baseline. So the documented recovery from working on wrong context is for a person to notice and start a new task, which puts a person in the job of a mechanism. Countersign is that mechanism. It installs as a hook in front of every state-changing tool call Bob makes, and it holds one rule: no write may use repository evidence whose identity is no longer current. Before the call runs, it compares what the task recorded when it read the file (the SHA-256 digest, the recorded command results, the commit the path sat at) against the repository as it is right now. If they disagree the call does not run. Bob's agent gets exit 2, and the refusal prints the digest the task held, the digest on disk, the reason, and the four recovery steps. Every verdict writes a receipt, and each receipt stores the hash of the one before it, so the store can be replayed later and every verdict re-derived from the inputs it recorded. It is for developers running Bob on a repository they care about, and for teams who have to show afterwards that a write was checked rather than trusted. You install it with one command, and then it is invisible until it refuses something. When you want to see the work, the console shows which sessions were refused and admitted, every intercepted call with its verdict and latency, and the receipt chain tying them together. What separates Countersign from the tools around it is that it does not judge the edit. A linter and a reviewer ask whether the change is good. A rollback tool undoes one that already landed. Countersign asks whether the facts behind the change are still true of this repository, and answers before the write. In our own recorded session with Bob, four state-changing attempts came back refused with EVIDENCE_SUPERSEDED, and the file was left untouched.
27 Sep 2026