Tasks hold what is to be done. Each one has a status, which is the entire difference between this store and memory: a task can be closed, and a fact cannot.
"Remember to chase the invoice" belongs here. Written into memory it becomes a note nothing can ever close, served back to every later session as something that is true.
What your agent can do
| Read | Write |
|---|---|
lanes_tasks.list, lanes_tasks.get | lanes_tasks.add, lanes_tasks.update, lanes_tasks.remove |
Tasks are also readable as an MCP resource at lanes-tasks://task/{id}.
What each status means
Each is a different answer to "why is this not done":
in_progress | started |
open | not started |
blocked | waiting on somebody else |
muted | you decided to stop being reminded |
done | finished |
dropped | decided against, which is not the same fact as finished |
lanes_tasks.list shows the first three and hides the rest, because the question is almost always what is
outstanding. dropped is kept separate from done on purpose: closing something because you did it
and closing it because you will not are different pieces of history, and collapsing them loses the
one you are more likely to want back.
Manage tasks from your terminal
$ lanes link tasks list --profile personal
$ lanes link tasks add "chase the invoice" --due 2026-09-01 --profile personal
$ lanes link tasks update inv-chase --status blocked --profile personal
$ lanes link tasks remove inv-chase --profile personalWhat is recorded
Ids, titles, tags, statuses, and due dates are kept, because they are the shape of the work rather
than its content. Task notes are withheld, and lanes_tasks.list records nothing. See
the audit log.