Tools · Planning and checking
todo
Can wait for approvalMaintain a live, replace-on-write checklist of tasks for a multi-step job so progress is observable. Pass the full updated list each call; mark exactly one item in_progress and flip items to completed as you finish them.
When to use: Use a checklist for work with three or more distinct steps; skip it for a single, simple change or a question and just do the work. Write all the steps first, keep exactly one 'in_progress', and mark each 'completed' as soon as it is done. An item is a step, not a file: for one change made across many files, update the list when the step is done, not after each file. Each call replaces the whole list, so pass every item as {content, status}, status being 'pending', 'in_progress' or 'completed'.
Example
Run for real by scripts/tool-examples.py in a small demo project, with Haiku 5.5 where the tool calls a model. The output is exactly what the tool returned.
The call
{
"tool": "todo",
"arguments": {
"todos": [
{
"content": "Read the pricing module",
"status": "completed"
},
{
"content": "Add the enterprise plan",
"status": "in_progress"
},
{
"content": "Write a test for it",
"status": "pending"
}
]
}
}Real output
☑ Read the pricing module ▶ Add the enterprise plan ☐ Write a test for it (1/3 completed, 1 in progress, 1 pending)
Parameters
| Name | Type | Description |
|---|---|---|
| todos* | array | The FULL updated checklist. Replaces any previous list. |
* required
More in Planning and checking
Plan the work, weigh options, and check results before answering.