ns-ui

Guardrail Interlock Keys

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.

Install

npx shadcn add https://design.helpmarq.com/r/guardrail-interlock-keys.json
View source and playground

ns-ui / guardrail-interlock-keys — output guardrails

support-agent · reply to invoice #4471

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

PropTypeDefaultDescription
gatesInterlockGate[]
outputstringthe model output the lock is holding
label?stringaccessible name for the interlock group
title?stringshort caption above the row
operator?stringwho is recorded on an override audit line
onOverride?(id: string) => voidfired when a tripped gate is overridden — the owner flips that gate to "released" (this component never mutates the gates it was handed)
className?string