Output guardrails built as a trapped-key interlock — every policy gate holds one key, the release bolt only retracts when all of them are seated, and a tripped gate is a visibly empty, barred keyway rather than a red badge.
Use when several independent policy checks must ALL pass before an agent's output is allowed through, and the reason it is still held — which specific gate is empty — has to be readable from a still frame; the bolt/key mechanism also makes an operator override permanently distinguishable from a genuine pass. Pick approval-inline-diff instead when one human approves or edits a single proposed tool call, meter-threshold-trip when one metric crossing one threshold is the whole story, and refusal-negotiation when the point is what the model will do instead of the refused request.
Five policy gates each hold one key. The bolt only retracts when every key is seated, so a single tripped gate keeps the draft behind the lock.
Output interlock
3/5 keys·output held
release lock
model output
Your March invoice was reissued on the 4th after the duplicate line for seat 12 was removed. The corrected total is €1,840.00, and the credit note for the original charge has already been applied to your account.
Props
Prop
Type
Default
Description
gates
InterlockGate[]
—
—
output
string
—
the model output the lock is holding
label?
string
—
accessible name for the interlock group
title?
string
—
short caption above the row
operator?
string
—
who is recorded on an override audit line
onOverride?
(id: string) => void
—
fired when a tripped gate is overridden — the owner flips that gate to "released" (this component never mutates the gates it was handed)