You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
v2 2.0.16: todowrite state not persisted to project-todos store — client UI (OpenChamber) todo panel always empty #51396
The v2 2.0.16 client-visible todo store is never populated with the agent's live todo state, so UI clients that read it (OpenChamber's right-sidebar todo panel, which uses GET/PUT <project>/todos) always show an empty list while the agent is actively working with todos. No error is surfaced anywhere — the channel is simply silently dead.
Steps to reproduce
Run opencode 2.0.16 (AppImage) with OpenChamber 2.0.0 as the UI.
Start a session where the agent maintains a todo list (any non-trivial task that uses the todo tool).
While the agent is working, open the OpenChamber right-sidebar todo panel.
Expected: the panel shows the current todo list (this worked in v1, where the store was populated and the UI rendered the list). Actual: the panel is always empty. The panel itself works — editing todos directly in it persists fine; the store just never receives the agent's state.
Environment / OS
OS: Garuda Linux (Arch-based), x86_64, kernel 6.x
opencode: 2.0.16 (AppImage)
UI: OpenChamber 2.0.0
Also reproduced headlessly: no UI involved — the stores below are simply empty.
Evidence (audited on a live 2.0.16 install)
The v2 binary's compatibility shim lists todowrite in its compat list and injects the system message "The todowrite tool is no longer available and must not be called" — i.e., TodoWrite is not a real tool in v2.
The environment still executes todo operations internally (the agent can read/modify todos mid-session), but the state never reaches any client-visible store.
Full audit of every candidate store — all empty of todos:
zero message parts of type todo; session_pending 0 rows;
no todo files anywhere under the data dir.
Why it matters
Todo state is one of the primary channels users rely on to see what the agent is working on. In v2 that channel is silently dead. Same bug family as #51269 (v2 2.0.16 compat-shim regressions).
Expected
Todo state maintained during a v2 session is persisted to the project-todos store (or an equivalent client-readable store) so UIs like OpenChamber can display it, matching v1 behavior.
Complementary upstream issue filed at the UI repo the same day: openchamber/openchamber (todo-panel discoverability + synthetic-message/loop-visibility improvements) — that issue is the UI-visibility half, this one is the data-pipeline half.
Thanks for reporting this — 2.1.0 restores todowrite, with todo state saved in session messages and displayed in the TUI. Enable it with "experimental": { "todo": true } in opencode.json; third-party clients can read state.input.todos from the latest completed todowrite tool part rather than the old project-todos store. Update with opencode upgrade or npm i -g @opencode/cli@latest (desktop: update the app). Please reopen or comment if todo state is still missing on 2.1.0 with this enabled.
Activity
github-actions commentedon Sep 25, 2026
Thanks for updating the issue with the description, reproduction steps, and system details!
neriousy commentedon Oct 20, 2026
Thanks for reporting this — 2.1.0 restores
todowrite, with todo state saved in session messages and displayed in the TUI. Enable it with"experimental": { "todo": true }inopencode.json; third-party clients can readstate.input.todosfrom the latest completedtodowritetool part rather than the old project-todos store. Update withopencode upgradeornpm i -g @opencode/cli@latest(desktop: update the app). Please reopen or comment if todo state is still missing on 2.1.0 with this enabled.