Skip to content

The plan preview

How to show the model's intent before it spends your time.

12 min

The plan preview is the single highest-leverage surface in agentic UX. It's the place where the model tells you what it's about to do, in order, with enough specificity that you can interrupt, edit, or approve. Get this right and you can hand the model a mandate for ten steps. Get it wrong and you'll spend the session babysitting every tool call.

Most products skip this entirely. The model announces the plan in prose ("First I'll read the docs, then I'll summarize them, then I'll post to Slack") and just starts running. Prose is not a plan preview. A plan preview is a contract.

"An agent that tells you what it's about to do earns the right to do five more things after."
The pattern

A checklist the user can edit.

A good plan preview is a vertical list of concrete steps. Each step is a verb plus an object. Each step has a checkbox or toggle. Each step that touches the outside world — an email, a Slack post, a file write, a payment — is flagged inline.

The user can uncheck any step before the agent runs. They can re-order. They can click into a step and edit its target. The whole list is one approve button away from execution. This is the move.

A plan preview for 'review 5 PRDs and post a summary'
Uncheck destructive steps · approve to see the mock run
Plan preview

Review 5 PRDs and post a summary

  1. 01
    Read all PRDs in /product/q2/
    Will run
  2. 02
    Extract scope statements and success metrics
    Will run
  3. 03
    Cross-reference against OKR doc

    ⓵ External · External read: okrs.internal.notion

    Will run
  4. 04
    Draft a summary memo with risks flagged
    Will run
  5. 05
    Send memo to #product-leads

    ⚠ Destructive · Posts to Slack · reversible within 60 minutes

    Will run
Four inline signals

What the preview has to tell you.

  • External reads. Which steps will touch a system outside this session. The user's Notion, their Gmail, an internal API. Inline, compact.
  • Destructive writes. Any step that creates, sends, or modifies anything. A different color. A different word. "Destructive," not "will do."
  • Reversibility window. When an action can be undone for some time, say so. "Reversible within 60 minutes." "Permanent after send."
  • Cost estimate. For anything that costs money or time at scale — API calls, model spend, seat invites — show the estimate in the step itself.

The why

Mandates, not commands.

The real reason plan previews work is economic. They shift the unit of user attention from "every tool call" to "every task." The user reviews once, approves once, and then sips coffee for ten minutes while the agent does what it said it would. That's the whole value of agentic UX. Without the preview, the user has to supervise each step, which means the agent has bought them nothing.

A preview also changes the model's incentives. When an agent is forced to pre-commit to its plan in human-readable steps, it generates better plans. The preview surface does the work of a prompt template, for free, in UI.

Failure modes

What this pattern gets wrong when it gets wrong.

Runaway agent
An agent that loops, spends, or edits past the user's intent with no visible cap.
Phantom tool
A visible tool call that didn't happen, or happened but with different arguments than shown.
Confidence theater
Language or typography that performs certainty beyond what the model actually has.
Seen in the wild

Three shipping variants worth copying.

  • A checkbox list the user can edit before run
  • Inline warnings on destructive or external steps
  • A diff-like preview of what would change