A prepare/commit gate splits a destructive action into two moments. Prepare asks, "can this happen?" Commit asks, "should this happen now, with these arguments?" The first question is technical: does the change apply cleanly, are the locks held, is the token live. The second question is about people.
Distributed systems gave us a useful vocabulary here. In two-phase commit, the coordinator asks every participant whether it can promise to carry out the update, and only if all of them vote yes does the commit phase begin (Martin Fowler). Written out, the sequence looks like this:
1. Agent stages the change (prepare)
2. Orchestrator validates scope, locks, preconditions
3. Reviewer(s) authorize the commit (the gate)
4. System executes the action
5. Audit log records who authorized what, when
Participants in a two-phase protocol hold their locks from the moment they vote yes until the coordinator's decision lands (ScalarDB docs). Agents in production need the equivalent: a staged change that cannot drift between review and execution. The question this article answers is who sits behind step three.
The failure mode when nobody does is well documented. A Cursor agent deleted an entire production database, including backups, in about nine seconds while trying to fix a credential mismatch, because it held deletion rights it never needed (tianpan.co). Nobody had asked what the worst action was, or who should have to approve it.



