Kanshō/Permission history

Permission history row

A row in the trust ledger. Every approve/deny/revoke decision is a single line — searchable, time-stamped, and revocable later.

Included in the single kansho full pack. Components are not offered as separate installs.

Recent decisions

Revoke and Undo are live; View is a static-preview callback
Write to /repo/appGrantedfilesystem:write

Implementing the run details panel.

Averyworkflow-agent2 min ago
Send email via GmailDeniedgmail:send

Draft was unfinished; will resend after review.

Averymail-agent11 min ago
Read encrypted secretsAlways allowvault:read

Needed for every deploy preview.

Averydeploy-agent2 days ago
Query production databaseRevokedpostgres:read

Inactive for 30 days — auto-revoked by policy.

systemautolord-merton6 hours ago

Error & recovery

Static preview: View and Re-request show host action placement without changing demo state
Send email via GmailDeniedgmail:send

With onReRequest — the denied row offers a way back.

Averymail-agent11 min ago
Send email via GmailDeniedgmail:send

Without onReRequest — only View is offered, no recovery.

Averymail-agent11 min ago

Empty case

Newly initialised agent
No permission decisions yet for this agent.

Included components

This page is the canonical destination for these components. All ship in the single Kansho pack.

Inline confirm button

components/ui/inline-confirm-button.tsx

Permission history row

components/agent/permission-history-row.tsx

Component documentation

Inline confirm button

components/ui/inline-confirm-button.tsx

Purpose

Requires a second activation before running a destructive inline action.

Appropriate use

Use for reversible-in-context destructive actions where a full confirmation dialog would be excessive.

Example

components/ui/inline-confirm-button.tsx has a representative live example in the "Recent decisions" section on /components/permission-history.

States

Supports idle and armed states, disabled state, Escape cancellation, automatic reset, and configurable size.

API and props

InlineConfirmButton accepts onConfirm, idleLabel, confirmLabel, size, className, aria-label, resetMs, and disabled.

Dependencies

React and Button.

Accessibility

Uses aria-pressed for the armed state, announces confirmation instructions assertively, and supports Escape to cancel.

Limitations

Confirmation resets after a timer and does not provide an undo or asynchronous loading state.

Source

Source: components/ui/inline-confirm-button.tsx.

Full pack

components/ui/inline-confirm-button.tsx is documented at /components/permission-history and installs only through the single Kansho full pack; no individual component install is offered.

Permission history row

components/agent/permission-history-row.tsx

Purpose

Records a permission decision with scope, actor, agent, time, rationale, and available follow-up actions.

Appropriate use

Use in a permissions audit list where granted access may be revoked or denied access requested again.

Example

components/agent/permission-history-row.tsx has a representative live example in the "Recent decisions" section on /components/permission-history.

States

Decisions are granted, denied, always, or revoked; revoke, view, and re-request actions render only when supplied and applicable.

API and props

PermissionHistoryRow accepts title, scope, decision, actor, agent, timestamp, rationale, action callbacks, and className.

Dependencies

Direct imports are React, Lucide icons, Tag, InlineConfirmButton, and cn.

Accessibility

Actions are native labelled buttons; revoke requires a second activation and supports Escape cancellation.

Limitations

Timestamp is a display string, and the component does not persist decisions, revoke access, or announce mutation results.

Source

Source: components/agent/permission-history-row.tsx.

Full pack

components/agent/permission-history-row.tsx is documented at /components/permission-history and installs only through the single Kansho full pack; no individual component install is offered.