Keep every “later” Claude says.
A ToDo’s sidebar for Claude Code. Everything Claude defers, proposes or leaves open, across all your projects, in one list.
>/plugin marketplace add SamAct/todo-ledger>/plugin install todo-ledger@todo-ledgerFree and open source. Needs Claude Code 2.1.287 or later.
This is a working copy of the sidebar. Click around.
Claude writes it down. So can you.
Nothing to remember to do. Items arrive three ways, and each one lands in the same list.
Claude parks it as it goes
When Claude defers, postpones or proposes something you did not ask for, it records it on the spot, with two to four plain sentences on what the work is and why.
park_item { kind: "deferred", title: "Retry failed webhook deliveries", body: "Failed deliveries are dropped today, so a missed payment update never arrives…" }
A quick scan catches what slipped
After a long reply where Claude parked nothing, a short Haiku pass reads it for deferrals that went unrecorded. It also closes items the conversation just settled: approved, rejected, finished or duplicated, each with a note saying why.
note · done (seen by the end-of-turn scan) note · rejected by the user (seen by the end-of-turn scan)
You add your own
One line, from any session. Flags choose the kind: -d parked, -p proposal, -n discussion. Without one it is a to do.
> /todo add -p Move invoice emails to a background queue > /todo add Rotate the staging API key
Start from the card, not from scratch.
Open an item and press Start. The prompt is already written, with the title, the details, your notes and the project it came from.
- Send puts it in front of Claude now. If a reply is running it queues.
- Draft leaves it in your prompt box to edit first.
- Copy hands it to another session. In the terminal app, Terminal opens a fresh Claude in the project folder on Windows and copies the prompt elsewhere.
Work on this ledger item (id 20261012-0951-3c1f, deferred, from project billing-api):
Retry failed webhook deliveries
Failed webhook deliveries are dropped today, so a missed payment update never arrives. Retrying a few times would fix that. Left out so this fix stays small.
When finished, call update_item with id 20261012-0951-3c1f and status done.
Try Send, Draft or Copy.
Small decisions that matter by item forty.
- One list, every project
- Opens on the current project. One click widens it to everything. Each item keeps the project and session it came from, and sessions open side by side stay in sync within about ten seconds.
- Decisions come first
- Proposals sit at the top under “Needs decision”, then to dos, discussion and parked work. Approve or Reject in one press.
- Nothing is lost by accident
- Drop and Reject move an item to Done, where Reopen brings it back. Only dropped items can be deleted for good, in two steps. Agents cannot delete at all.
- Quiet about repeats
- The same thing mentioned twice stays one item. A task you closed in the last 30 days is not re-added by the scan.
- Desktop and terminal
- The same list in the Claude desktop app and in the CLI. In an open card, s start, d done, x drop, n note, a approve.
- Sees Claude’s own plans
- Task lists Claude writes with TodoWrite are mirrored, so a plan that never got finished is still on the books.
Your list stays on your machine.
Every item is a plain JSON file in one folder. No account, no server, no telemetry. The one thing that leaves is the end-of-turn scan, which asks Claude Haiku through your own Claude Code session, on your existing sign-in.
Two commands, then a new session.
Installs from this repository through Claude Code’s own plugin system. No build, no config file, no key.
Add the marketplace.
>/plugin marketplace add SamAct/todo-ledgerInstall the plugin.
>/plugin install todo-ledger@todo-ledgerStart a new session, or run /reload-plugins. A ToDo’s button appears at the right of the prompt footer. Press it, or type /todos.
Before you install.
Does anything leave my machine?
Items never do. The only network use is the end-of-turn scan: after a long reply it sends that reply to Claude Haiku through your own Claude Code session, the same way any request in that session goes. There is no analytics and no server of ours.
Does the scan use my Claude usage?
Yes, a small amount: one short Haiku request after replies of 400 characters or more where Claude parked nothing. There is no setting to switch it off yet. You can disable the whole plugin with /plugin disable todo-ledger@todo-ledger.
How is this different from Claude’s own to-do list?
That list is a scratchpad for the task in front of Claude and goes with the session. todo-ledger is permanent, spans every project, and holds the things that never made it onto a plan: the “we could also…” and the “not now”.
Does it work in the terminal and the desktop app?
Both. The sidebar draws in each, with the same list and the same files. macOS and Linux support is ported and unit-tested but has not yet run on real machines; Windows is the tested platform. Mods need Claude Code 2.1.287 or later; update first if the button does not appear.
How do I remove it?
/plugin uninstall todo-ledger@todo-ledger. Your items stay in ~/.claude/todo-ledger/items/ until you delete that folder.
Is this an official Anthropic project?
No. It is an independent, open-source mod by SamAct, built on Claude Code’s mod support. Claude and Claude Code are trademarks of Anthropic.
Tried it? Tell me what broke.
macOS and Linux are ported and unit-tested but have not run on real machines yet, so reports from there are the most useful. A star helps others find it.