KQ-762 · PERMISSION/ASK

Permission Ask

A risky tool call held at the gate. When the host opens the ask a card rises beneath the call row from 16px below on snap while the frame grows to a measured height on glide; Allow is disarmed as it arrives and a hairline fill runs along its foot on a linear tween for armDelay before the control enables. Deny sinks the card on the exit ease and greys the row; Allow lifts it away. It is an alert dialog: focus lands on Deny, Tab cycles the two answers, Escape denies, and focus returns to where it was.

KQ-762 · PERMISSION/ASK
write_fileops/rota-2026-w37.csvHeld

Idle · press ask

Install

One command — the source lands in your repo. Or copy it from the Code tab.

$ pnpm dlx shadcn@latest add @kinetiq/permission-ask

Props

open
boolean
default false
Raises the card. Close it from onAllow or onDeny.
tool
string
default
The tool's name, printed in mono on the row and the card.
target
string
default
What the call acts on, printed after the name.
reason
string
default
Why the call needs asking, in one sentence.
risk
"low" | "medium" | "high"
default "medium"
Risk level printed on the card's chip, by word and tone.
armDelay
number
default 700
Milliseconds before Allow can be pressed. 0 arms it at once.
decision
"allowed" | "denied"
default
The outcome, owned by the host; greys the row when denied.
onAllow
() => void
default
Fires from the armed Allow control.
onDeny
() => void
default
Fires from Deny or Escape.
onArmed
() => void
default
Fires once when the Allow control arms.
label
string
default
Names the frame for assistive technology.