v1.0.0 MIT Tested on Windows · macOS and Linux ported

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-ledger

Free and open source. Needs Claude Code 2.1.287 or later.

This is a working copy of the sidebar. Click around.

01 How it fills

Claude writes it down. So can you.

Nothing to remember to do. Items arrive three ways, and each one lands in the same list.

By Claude

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…"
}
By the scan

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)
By you

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
02 Closing the loop

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.
What Claude receivesbilling-api
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.

03 Made for a long list

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.
04 Private by construction

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.

05 Install

Two commands, then a new session.

Installs from this repository through Claude Code’s own plugin system. No build, no config file, no key.

Claude Code 2.1.287+ Desktop app or CLI Tested on Windows · macOS and Linux ported

Add the marketplace.

>/plugin marketplace add SamAct/todo-ledger

Install the plugin.

>/plugin install todo-ledger@todo-ledger

Start a new session, or run /reload-plugins. A ToDo’s button appears at the right of the prompt footer. Press it, or type /todos.

06 Questions

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.