[BUG] TodoWrite Tool Overwrites Entire Todo List Instead of Updating Individual Items

Resolved 💬 10 comments Opened Jun 18, 2025 by DwayneSmurdon Closed Jan 8, 2026

Summary: The TodoWrite tool consistently overwrites the entire todo list when making
updates, causing loss of existing todos that users may not know how to recover.

Impact: Critical - Users lose work tracking data and may not know how to locate/restore
the JSON file

Steps to Reproduce:

  1. Have an existing todo list with multiple items
  2. Use TodoWrite to mark one item as completed or add a new item
  3. Tool overwrites entire list instead of updating specific items
  4. Previous todos are lost unless user manually restores from JSON file

Expected Behavior:

  • TodoWrite should update only specific items being modified
  • Should preserve all existing todos
  • Should append new items without affecting existing ones

Actual Behavior:

  • Entire todo list gets replaced with limited subset
  • Existing todos are lost
  • Users must manually restore from JSON file at ~/.claude/todos/[session-id].json

User Impact:

  • Many users may not know how to find the todo JSON file to restore lost todos
  • Critical workflow tracking information gets lost
  • Reduces confidence in using the todo system for important work

Suggested Fix:

  • Modify TodoWrite to accept partial updates (specific item changes)
  • Add an updateTodos() method that preserves existing items
  • Add clear documentation about todo recovery if this happens

Recovery Information for Users:
If you experience this bug, your todos may be recoverable from:
~/.claude/todos/[session-id]-agent-[agent-id].json

This bug has been observed multiple times during parameter chain tracking and
documentation work, indicating it's a systematic issue with the TodoWrite tool
implementation.

View original on GitHub ↗

This issue has 10 comments on GitHub. Read the full discussion on GitHub ↗