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.
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
- Execute + Data
- Data
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
threadin a long conversation. Yesterday’s tasks stay in the prompt and the model keeps trying to close them. For a single-turn plan usecall. - 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
| Port | Wire | Payload | Notes |
|---|---|---|---|
Toolstools | Extensionlink_extension | — | accepts many edges |
Set taskstasks_in | Execute + Dataexecute_data | array | shown when overwrite_from_input = true |
Outputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
Agentoutput | Extensionlink_extension | — | |
Streamstream | Streamingstreaming | — | |
Taskstasks_out | Datadata | array | shown when expose_tasks_output = true |
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
Enabled Toolsenabled_tools | array<string> | ["new","delete","set_status"] | Which plan tools the model may call. |
Explicit Extra stream portexpose_extra_stream_port | boolean | false | 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_output | boolean | false | Show a data output port that emits the current task list. |
Expose Tools to LLMexpose_tools | boolean | true | Allow the model to manage the plan itself (new, delete, set status). |
Initial Tasksinitial_todos | array<object> | [] | Optional seed tasks (id, title, status) |
Set tasks from inputoverwrite_from_input | boolean | false | Show a tasks (ED) input port whose firing fully replaces the stored task list, plus a 'History set' exec output that fires once written. |
Scopescope | string | thread | thread: persists between chat messages · session: lives for one execution · call: fresh each time Options: |
Stream snapshot before first LLM requeststream_initial | boolean | false | 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_change | boolean | true | Emit a snapshot after each todo tool mutates the list (if stream_to_extra is on). |
Stream to Extra panelstream_to_extra | boolean | true | 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_catch | boolean | true | 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.