Stamp Approval
motion.devHuman sign-off for an agent's tool call. The decision lands as a rubber stamp.
Agent request · needs approvalHigh risk
Emails 41 refund rows to finance@example.com.
send_email(
| to | finance@example.com |
|---|---|
| subject | |
| attach | refunds-q3.csv · 41 rows |
)
Install
$ npx shadcn@latest add https://spotcheckui.com/r/stamp-approval.jsonAlso installs motion.
Usage
import { StampApproval } from "@/components/spotcheck/stamp-approval"
<StampApproval
call={{
name: "send_email",
args: { to: "finance@example.com", subject: "Q3 refund summary" },
resolved: "Emails 41 refund rows to finance@example.com.",
risk: "high",
}}
editable={["subject"]}
onApprove={(args) => release(args)}
onDeny={halt}
/>Show what the call will really do in resolved, not just its arguments, because people rubber-stamp a bare Approve button. Mark an argument editable so someone can fix it without denying the whole call.
Props
- call * Required
ToolCallDefault — - editable
string[]Default []Argument names a person may change before approving. - onApprove
(args: Args) => voidDefault —Runs with the final arguments, including any edits. - onDeny
() => voidDefault — - className
stringDefault —
Keyboard
| Tab | Move between arguments and buttons |
|---|---|
| Enter | Approve or deny |
Reduced motion
The stamp appears at once, and the card doesn't jolt.