Overview
Todo tools enable agents to plan and track multi-step work with persistent task lists. Designed to mirror the Claude Agent SDK TodoWrite/TodoRead API, todos are saved toworkspace/tasks.json and survive across tool iterations.
Tools
todo_write
Create or update the task list. Replaces ALL existing todos with the provided list.Complete replacement list of all todos. Each todo must have:
id(string): Short unique identifier (e.g. “1”, “task-2”)content(string): Description of what needs to be donestatus(string): Current status (pending, in_progress, completed, cancelled)priority(string, optional): Priority level (low, medium, high)
todo_read
Read the current task list. Returns all todos with their statuses and priorities. Example:○— pending◑— in_progress●— completed✗— cancelled
Workflow Patterns
Initial Planning
Progress Tracking
Task Cancellation
Validation
Valid Statuses
Only these values are accepted:pending— Task not yet startedin_progress— Task currently being worked oncompleted— Task finished successfullycancelled— Task skipped or abandoned
Valid Priorities
Only these values are accepted (optional field):lowmediumhigh
Persistence
Todos are saved toworkspace/tasks.json as a JSON array:
Best Practices
- Use for tasks with 3 or more steps — simpler tasks don’t need tracking
- Set status to in_progress before starting — makes progress visible
- Mark completed immediately — keeps the list accurate
- Include the full list on every write — the tool replaces, not merges
- Use priority to guide execution order — focus on high priority first
- Read before writing to avoid overwriting concurrent changes (if multiple agents)
- Keep IDs simple — “1”, “2”, “3” works well for sequential tasks
Use Cases
Multi-Step Analysis
Incremental Processing
Resumable Workflows
Limitations
- No task IDs auto-generation — you must provide unique IDs
- No subtasks — flat list only (no nested todos)
- No timestamps — status changes are not timestamped
- No history — previous versions are overwritten
- Single file — all todos in one
tasks.jsonfile
Implementation
Defined ingrip/tools/todo.py. Uses:
- JSON serialization to
workspace/tasks.json - Validation against
VALID_STATUSESandVALID_PRIORITIESsets - Status icon mapping for readable output
- Atomic writes to prevent corruption