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.