Skip to content

Confirmation

Before an action runs, you see exactly what it changes and who it reaches.

Use it when

  • The agent is about to do one thing outside the conversation: send, notify, rebuild or export.
  • People should see what it changes and who it reaches before it runs.

Don’t use it when

  • It changes the books. Use an AgentBlock proposal, so the entry can be edited before anyone posts it.
  • You want to offer “Always allow”. Each permission covers one run, so the next one asks again.

The rule it follows

  • An agent stops before anything that posts to the ledger.

    Check: Nothing reaches the books until a person presses Post.

All 3 principles

Before and after

AI · Awaiting confirmation

The variance summary is ready. H1 operating profit is ¥355m under budget, and exchange rates explain ¥317m of it.

Send the variance summary to the controller?

What changes
Nothing in the books. One message goes out.
Who it reaches
Kasane’s controller. No one else.
AI · Sent

The variance summary is ready. H1 operating profit is ¥355m under budget, and exchange rates explain ¥317m of it.

Send the variance summary to the controller?

What changes
Nothing in the books. One message goes out.
Who it reaches
Kasane’s controller. No one else.

Sent once, by you. The next send asks again.

Before it sends, you see what changes and who it reaches. Send summary sends it once.

Install

pnpm dlx shadcn@latest add https://tabularui.com/r/confirmation.json https://tabularui.com/r/agent-block.json

Usage

import { AgentBlock } from '@/components/tabular-ui/components/product/AgentBlock';import { Confirmation } from '@/components/tabular-ui/components/product/Confirmation'; <AgentBlock authorship="AI · Awaiting confirmation">  <Confirmation    title="Send the variance summary to the controller?"    changes="Nothing in the books. One message goes out, with the September summary."    reaches="The controller, by email. No one else."    confirmLabel="Send summary"    stopLabel="Don’t send"    onConfirm={send}    onStop={stop}    outcome={outcome}  /></AgentBlock>

Set up your app firstConfirmation in Storybook