All nodes/AI/Agents

Agent Plan

Todo list for the agent: plan and check off tasks via tools. Stream to the Extra panel — 'Stream to Extra panel'; the stream port is hidden by default, enable 'Explicit Extra stream port' for an edge to the Extra Section.

Agent PlanT▶S
Agent extensionsAgent extension
Set tasksStream
Tasks

Type in the graph: agent_plan

ToolExecStateful

An error output can be enabled to handle failures on their own path.

Try it

Minimal working scenario

Entry
Agent PlanT▶S
Exit▶
  • Execute + Data
  • Data
Press “Copy nodes”, open the editor and hit Ctrl+V on the canvas.

Runs as pasted

When to use it

Agent Plan earns its place when a turn takes several steps and it helps for the model to break the work down first and tick items off as it goes: triaging a long request, a multi-stage check, collecting data from several sources. Unlike Agent Memory — a dictionary of facts — this is an ordered list of tasks with statuses, which can also be shown to the user while the work happens.

How it works

The list is injected into the system prompt as lines like [ ] Check the payment, where [✓] means done and [✗] means failed. The model manages it with agent_todo_new, agent_todo_delete and agent_todo_set_status; each takes an array of tasks, so a whole plan is created in a single call. There are exactly three statuses: planned, completed, error.

Showing it in chat is on by default: after every change to the list a snapshot goes to the Extra panel — with no edge in the graph. “Stream snapshot before first LLM request” adds one more snapshot at the start of a turn, before the model has done anything.

To route the snapshot into a particular Extra Section, turn on Explicit Extra stream port: the Stream port appears. Mind the other half of that switch — the built-in display is then disabled, and only the drawn edge delivers anything.

Scope is the same as for memory: thread (the default) keeps the plan across chat messages, session lasts one execution, call starts empty every turn. Initial tasks are appended to the stored list and matched by declared id, or by title when no id was given, so the same seed is not duplicated turn after turn.

Common mistakes

  • Drawing an edge to an Extra Section without turning on Explicit Extra stream port. The port is hidden, so there is nothing to draw from.
  • Turning the port on and forgetting the edge. Both channels are then off and the plan is visible nowhere.
  • Leaving thread in a long conversation. Yesterday’s tasks stay in the prompt and the model keeps trying to close them. For a single-turn plan use call.
  • Looking for agent_todo_* calls in the tool-call stream. They are hidden by default (Suppress todo tools in Catch Tool Call), because the plan snapshot already shows them.
  • Expecting the plan in the scenario output. To hand the task list to the graph, turn on Tasks output and draw an edge from the Tasks port.

Inputs

PortWirePayloadNotes
Agent extensionstoolsExtensionlink_extension—

accepts many edges

Set taskstasks_inExecute + Dataexecute_dataarray

shown when overwrite_from_input = true

Outputs

PortWirePayloadNotes
Agent extensionoutputExtensionlink_extension—
StreamstreamStreamingstreaming—
Taskstasks_outDatadataarray

shown when expose_tasks_output = true

Configuration

FieldTypeDefaultDescription
Enabled toolsenabled_toolsarray<string>["new","delete","set_status"]

Which plan tools the model may call.

Explicit Extra stream portexpose_extra_stream_portbooleanfalse

When off (default): stream to the Extra panel without a graph wire; the stream port is hidden. When on: the stream port is shown — connect it to an Extra Section (or other allowed sink). Built-in self-streaming is disabled; only an explicit streaming edge sends output.

Tasks outputexpose_tasks_outputbooleanfalse

Show an output that hands the current task list on to the next step.

Expose Tools to LLMexpose_toolsbooleantrue

Allow the model to manage the plan itself (new, delete, set status).

Initial Tasksinitial_todosarray<object>[]

Optional seed tasks (id, title, status)

Set tasks from inputoverwrite_from_inputbooleanfalse

Show an input port that both runs this step and brings a value: what arrives fully replaces the stored task list. Also shows its Success output, which fires once the write is done.

Scopescopestringthread

thread: persists between chat messages · session: lives for one execution · call: fresh each time

Options: thread — Thread, call — Call, session — Session

Stream snapshot before first LLM requeststream_initialbooleanfalse

Emit one snapshot before the first LLM request in a turn (if stream_to_extra is on), even when stream_on_change is off.

Stream snapshot on todo tool changestream_on_changebooleantrue

Emit a snapshot after each todo tool mutates the list (if stream_to_extra is on).

Stream to Extra panelstream_to_extrabooleantrue

When enabled, todo snapshots are sent to the chat Extra panel (via built-in stream unless «Explicit Extra stream port» is on — then only the wired edge).

Suppress todo tools in Catch Tool Callsuppress_in_catchbooleantrue

When enabled, raw agent_todo_* calls are not duplicated in the Catch Tool Call stream (plan snapshot still updates Extra when configured).

Shared fields

Every node has these three — the platform adds them, not the node author.

  • expose_error_output — Show an output that runs if writing the tasks fails.