Skip to content
Block Kit for React
Esc
↑↓navigate↵open⌘Jpreview
On this page

Plan

A collapsible, step-by-step agent plan, with a status per task.

plan groups a sequence of tasks under one shared goal, each with its own status. It’s a Slack block documented for agent surfaces, newer than the version of @slack/types this library depends on, so its TypeScript type is the field reference here. It’s read-only: expanding a plan doesn’t emit an action.

Your AppAPP

Click the pill to expand the plan and see each task’s details, output, and sources.

Fields

PropType
typestring

Always `plan`.

Typestring
titlestring

The plan's shared goal, shown in the collapsed pill.

Typestring
tasks?PlanTask[]

The steps, in order. An invalid or missing value renders an empty plan.

TypePlanTask[]

PlanTask

A plan’s tasks share the same shape as a standalone task card:

PropType
task_idstring

Identifies the task.

Typestring
titlestring

The task's one-line summary.

Typestring
status"pending" | "in_progress" | "complete" | "error"

The task's state. The status icon distinguishes `complete` and `in_progress`; `pending` and `error` currently render the same dashed-circle icon.

Type"pending" | "in_progress" | "complete" | "error"
details?RichTextBlock

What the task is doing, shown when the plan is expanded.

TypeRichTextBlock
output?RichTextBlock

The task's result, shown below `details`.

TypeRichTextBlock
sources?{ type: "url"; url: string; text?: string }[]

Links shown under the task. `text` defaults to the raw URL.

Type{ type: "url"; url: string; text?: string }[]

The plan’s own collapsed pill shows one aggregate icon: in_progress if any task is in progress, else pending if any task is pending, else complete.

Examples

Every task status

The preview above covers complete, in_progress, and pending in one plan, plus optional details, output, and sources on the first two tasks. All three fields are safe to omit, as the third task shows.

Was this page helpful?