Ideas for later
Park the idea. Keep the heading.
A thought for later turns up mid-task. Type it with idea: or todo: in front and it is parked on this machine's homework list: by the prompt hook where one is wired, by the model's own todo_add everywhere else. The session says “noted” and the work in hand carries on. Later, any connected assistant can list it, mark it taken and close it with a note.
You type
An aside, mid-task, with one of six prefixes in front of it.
The prompt hook
Files the rest of the prompt as homework #N and skips recall for it. The model reads one line: not for now.
One list on this machine
Every connected assistant reads it over MCP, and each item moves one way only.
todo_add. Homework is not a memory and not a work claim: it is something to do, later.Three moves
File. Claim. Close.
One short lifecycle: open, then claimed, then done. There is no edit and no delete; an item you no longer want is closed with a note saying why.
File
Start a prompt with idea:, todo:, homework:, later:, идея: or за после:. A colon, a hyphen or an em dash all work as the separator, and case does not matter. A session can also file one itself with todo_add(text, topics, project).
Claim
todo_claim(id) marks an item taken. It stays on the open list, shown as “claimed by” that session's id, so the others can see someone has it.
Close
todo_done(id, note) closes it with a note of what was done, or why it was dropped. Done items stay listable for 7 days, then fall away.
Who files it
One list, wired per assistant.
Every assistant wired to Captain Memo's MCP server gets the same four tools: todo_add, todo_list, todo_claim and todo_done. What differs is who files the aside: a prompt hook where the CLI has one, the model everywhere else.
The hook files it before the model acts on it. The session banner shows the open count and up to three items, each cut to 70 characters.
Filed by the same hook where connect installed the native hooks. There is no session banner here; the model sees the list only when it calls todo_list(). If no filed line appears, the skill tells the model to file it with todo_add.
No prompt hook. The captain-memo skill that connect places tells the model to file the aside with todo_add and say so. Since v0.44.4 a new Claude Code session refreshes that copy after an update; without Claude Code, run captain-memo connect again.
No hook and no skill copy. The todo_add tool description itself says when to use it.
Three kinds of note
Known, now, later.
Captain Memo keeps three different things for your sessions, and homework is only one of them.
A memory is known
remember saves a fact worth recalling. Recall brings it back when a prompt needs it.
A work claim is now
work_set says what a session is doing right now, on a lease that expires by itself. The work board warns when two sessions overlap.
Homework is later
Something to do that waits for a session, with its own lifecycle: open, then claimed, then done.
Topics work the same way
todo_add takes up to five topics, normalised like work_set topics: lowercase, with anything outside a–z and 0–9 turned into a hyphen, so tags in other scripts are dropped. Items the prompt hook files carry none.
What the session sees
One line in front of the model.
The prompt still reaches the model, so it can answer; recall is skipped for it, because an aside is not a question about the code. The item texts and session ids below are illustrative; the lines around them are the ones Captain Memo prints.
# you type, mid-task idea: cache the embedder warm-up across restarts # the hook files it; the model reads one line 📝 Filed as homework #12 on this captain (not for now): cache the embedder warm-up across restarts — todo_list() shows the list; the user may just want a short "noted". (3 open)
… Homework 3 open — todo_list() for all, todo_claim(id) before starting one #10 Note the PowerShell 5.1 quoting trap in the installer docs #11 Split the recall audit log by project (claimed by 9b2e41c7-3d5a-4f60-8e1b-2c7d9a0f4e13) #12 cache the embedder warm-up across restarts
$ curl -s 'http://127.0.0.1:39888/homework/list?status=open' {"items":[{"id":"10","text":"Note the PowerShell 5.1 quoting trap in the installer docs","topics":["installer-windows"],"project":"captain-memo","by":"5f0c2a9e-81d4-4b7a-a3e6-0d9c47b1f218","created_at":1790241120000}, …],"open":3}
Honest limits
What homework does not do.
Small by design. These are the edges worth knowing before you rely on it.
One list per machine
Every session on this machine shares it. Another machine keeps its own list and its own numbers, and a number is never reused.
A claim is a marker, not a lock
It never expires. A second claim replaces the first, and closing an item does not check who claimed it.
The prefix is literal
Where a prompt hook is wired, any prompt that opens with one of the six prefixes and a separator is parked and gets no recall, even “later - can you check X”. Start the sentence another way when you mean now.
No edit, no delete
Close an item with a note instead. Item text is capped at 2,000 characters and the note at 500.
Before you sail
Questions about homework.
Does filing cost a turn?
The prompt still reaches the model, which answers, usually with a short “noted”. What is skipped is recall: no memory is searched for an aside. The hook waits up to 6 seconds for the worker to confirm; if it does not, the model is told the item may still have landed, to check todo_list(), and to file it with todo_add only if it is missing.
Can Codex pick up what Claude filed?
Yes. There is one list per machine, and every connected assistant reads it with todo_list() and marks an item taken with todo_claim(id).
What if two sessions claim the same item?
The last claim wins. A claim records who has the item now; it does not stop anyone. Check the list before starting, and the marker does its job.
Where do finished items go?
todo_list with status done shows them for 7 days. After that they are deleted the next time the list is read.
Can I see the list from a terminal?
There is no captain-memo command for it. The worker answers on 127.0.0.1: curl -s 'http://127.0.0.1:39888/homework/list?status=all' on the default port, which CAPTAIN_MEMO_WORKER_PORT changes.
Is it backed up?
Yes. Homework lives in the local meta.sqlite3, which captain-memo backup create snapshots with the rest of the corpus.