TodoWrite vs Tasks API
The old and new task management systems
PDF editions Β· Guide v3.44.1 Β· Updated
v2.1.233: on Opus 4.8, Sonnet 5, Fable 5, Mythos 5, and newer models, both TodoWrite AND the Tasks API are disabled by default. Re-enable with
CLAUDE_CODE_ENABLE_TODO_TOOLS=1.
Direct comparison
| Criterion | TodoWrite (legacy) | Tasks API (v2.1.16+) |
|---|---|---|
| Persistence | Session only | Disk (~/.claude/tasks/) |
| Multi-session | Lost on close | Survives restarts |
| Dependencies | Manual ordering | Native blockedBy |
| Coordination | Single agent | Multi-agent, broadcast |
| Statuses | pending / in_progress / completed | pending / in_progress / completed |
| Context summary | Lost on /compact | Intact after compaction |
When to stay on TodoWrite
TodoWrite remains relevant for simple cases: a linear list that wraps up in under ten minutes, with no complex dependencies, in a single continuous session. The Tasks API setup represents an investment that only pays off if the project extends over time.
When to migrate to Tasks API
Work across multiple sessions β Tasks API requiredDependencies between tasks β native blockedByMulti-terminal or multi-agents β real-time broadcastResume after /compact β guaranteed persistenceEnable and disable
# Enable task tools on newer modelsCLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude
# Force fallback to TodoWrite (rare)CLAUDE_CODE_ENABLE_TODO_TOOLS=1 CLAUDE_CODE_ENABLE_TASKS=0 claude
# Check current configurationenv | grep CLAUDE_CODE_ENABLE_TASKSMigrating an existing TodoWrite list
Here is a typical transformation from a flat list to a Tasks API hierarchy.
Before (TodoWrite):
- [ ] Add user authentication- [ ] Hash passwords- [ ] Write testsAfter (Tasks API):
export CLAUDE_CODE_TASK_LIST_ID="my-project-auth"# Then inside Claude:# TaskCreate parent + children with blockedByUpdate CLAUDE.md
When you migrate, update your project instructions so Claude automatically uses the right system. Specifying the expected list ID in CLAUDE.md prevents it from being forgotten between sessions.
Note on the future of TodoWrite
TodoWrite will continue to work, but Anthropicβs direction is clearly toward the Tasks API. New multi-agent coordination features are built exclusively on the Tasks API. Migrating now avoids a forced refactor later, on larger projects.
Automatic activation
The Tasks API became the default task system in v2.1.142. From v2.1.233, newer models disable both systems unless CLAUDE_CODE_ENABLE_TODO_TOOLS=1 is set. After opting in, CLAUDE_CODE_ENABLE_TASKS=0 selects legacy TodoWrite.
Enter your email to read the full card and get the complete PDF bundle.
All content is free and open-source. We just ask for your email.