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 PlanTS
ToolsAgent
Set tasksStream
Tasks

Type in the graph: agent_plan

ToolExecStateful

An error branch can be enabled (expose_error_output) to handle failures on their own path.

Try it

Minimal working workflow

Entry
Agent PlanTS
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 workflow output. To hand the task list to the graph, turn on Tasks output and draw an edge from the Tasks port.

Inputs

PortWirePayloadNotes
ToolstoolsExtensionlink_extension

accepts many edges

Set taskstasks_inExecute + Dataexecute_dataarray

shown when overwrite_from_input = true

Outputs

PortWirePayloadNotes
AgentoutputExtensionlink_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 a data output port that emits the current task list.

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 a tasks (ED) input port whose firing fully replaces the stored task list, plus a 'History set' exec output that fires once written.

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 — When enabled, show an execution output to connect nodes that run if this step fails.