Skip to content

[Feature]: add todo support for v2 #42421

Open

Description

@kiliantgs

Summary

In OpenCode V1, the model could write and read its native TODO list through the todowrite and todoread tools (the list shown in the TUI). In V2 (0.0.0-next-17403), those tools are no longer exposed to the model: the runtime tool catalog contains read, write, shell, edit, patch, glob, grep, question, skill, subagent, webfetch and websearch, but no TODO tool, and there is no /api/todo endpoint. Agents can therefore no longer write their TODO list, which breaks workflows that relied on it (an agent asked to keep its list up to date reports the tool is absent from its function catalog).

Environment

  • opencode version: 0.0.0-next-17403
  • OS: Linux 7.0.0-28-generic (linux x64)
  • Terminal: TERM=xterm-256color, COLORTERM=truecolor
  • Shell: /bin/bash
  • Install/channel: next
  • Active plugins: agy-proxy, kt-directives, kt-todo-rappel, vision-helper (local plugins under ~/.config/opencode/plugins/)

Reproduction

  1. Start opencode2.
  2. Ask an agent to write its TODO list with the native TODO tool (todowrite).
  3. The agent reports the tool is not among its available functions.

Expected Behavior

The model should be able to write and read its TODO list, as in V1 (todowrite/todoread or an equivalent).

Actual Behavior

No TODO tool is exposed in the runtime, and GET /api/todo returns nothing. The string pipeToDoReadWrite appears in the binary, but no public tool or endpoint surfaces it.

Additional Context

The V1 to V2 migration guide lists only the server API and the plugin API as intentional breaking changes, and does not mention removing the TODO tool, so this looks like a beta compatibility regression rather than an intentional removal. Workaround currently in use: the agent keeps its list in a plain file instead.

Activity

  1. github-actions commented on Aug 13, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of or related to existing issues. Please check:

    If your issue is specifically about V2 breaking the behavior that was fixed/present in V1, it may be worth referencing those for context.

  2. opencode-agent commented on Aug 13, 2026

    @opencode-agent
    Contributor

    This is intentional in V2. The TODO tools are not currently planned.

  3. JeanRomain commented on Aug 15, 2026

    @JeanRomain

    Any reason for the removal of the todo tools ?

  4. sachahjkl commented on Aug 23, 2026

    @sachahjkl

    Any reason for the removal of the todo tools ?

    Made a little replacement/alternative

    https://github.com/sachahjkl/opencode-backlog

    IMG-20260822-WA0002.jpg

  5. rekram1-node commented on Aug 23, 2026

    @rekram1-node
    Contributor

    we removed it because it slows agent down and we haven't noticed significant performance improvements from it's existence

  6. hjohn commented on Sep 4, 2026

    @hjohn

    @rekram1-node So, after a compaction, the model forgets about all todo's... it had to resort to querying the TODO list from the sqllite database directly thanks to the removal of the todoread tool. Surely this can't be intended?

    $ opencode db "SELECT session_id, position, status, content FROM todo WHERE status != 'completed' ORDER BY session_id, position;" --format tsv 2>&1 | Select-Object -Last 40
    
  7. rubin55 commented on Sep 18, 2026

    @rubin55

    @rekram1-node I think this really sucks; I used the todo in complex, long sessions, to keep track of where we are. This is now "invisible". The agent might have a todo-plan, but I need to ask it to show it, it does not show up in de sidebar.

    I really think this is an omission, please restore it.

  8. savonarola commented on Sep 22, 2026

    @savonarola

    TODO was never for "significant performance improvements", it was for control and convenience.
    Removal is an obvious downgrade, sorry for opencode following the "just tell the agent what to do" hype

  9. miros commented on Sep 22, 2026

    @miros

    we removed it because it slows agent down and we haven't noticed significant performance improvements from it's existence

    Please focus on needs of users.
    This was a very important and useful UI feature. How the user is supposed to follow what is happening in the session?

  10. afriemann commented on Sep 22, 2026

    @afriemann
    Contributor

    shameless plug for another todo plugin with working TUI and the same tool API (didn't want to change my custom instructions around todowrite): https://github.com/afriemann/opencode-todo/

  11. jordiparra commented on Sep 26, 2026

    @jordiparra

    Agree on this one. Even if it has a cost and no tangible output impact. It is a UX functionality that is super useful in long sessions to easily see what's the progress.

  12. 14 remaining items

  13. youvegotmoxie commented on Oct 12, 2026

    @youvegotmoxie

    I hope this comes back because it's one of the big QoL features that made Opencode stand out. I didn't even know it had it until the first time an agent randomly used it. Since then I've integrated it into my workflow.

  14. dr1ss commented on Oct 12, 2026

    @dr1ss

    I agree. One of the main reasons I used OpenCode was the todo list—it helped me track progress on complex tasks. When you have multiple tasks running across multiple projects, it makes it easy to remember what’s happening with each one and where it stands.

  15. diogocnunes commented on Oct 12, 2026

    @diogocnunes

    Please! Bring it back!

  16. Animo78 commented on Oct 13, 2026

    @Animo78

    I agree with bringing it back
    at least let it be a plugin, the user can enable or disable.
    Now in endless sessions I have to cancel the session, ask what the f* you doing and pause, then wait for an answer.
    Which is annoying and cost even more time and tokens.

  17. morpheus9393 commented on Oct 14, 2026

    @morpheus9393

    30. I agree with bringing it back
    at least let it be a plugin, the user can enable or disable.
    Now in endless sessions I have to cancel the session, ask what the f* you doing and pause, then wait for an answer.
    Which is annoying and cost even more time and tokens.

    Making it a setting (or a plugin) that can be enabled/disabled is a good idea! So everony can choose what he prefers.

  18. smart-trust commented on Oct 14, 2026

    @smart-trust

    It would be fine to remove the todowrite tool if the todo sidebar actually worked. but it doesn't update - so it was the only workaround to a major bug. any team working without a kanban/todo board is dysfunctional. I suggest the opencode team try to work without consulting any such capability in their next sprint. when the sprint fails miserably, you will finally understand your own users and this flood of comments.

  19. morpheus9393 commented on Oct 14, 2026

    @morpheus9393

    31. It would be fine to remove the todowrite tool if the todo sidebar actually worked. but it doesn't update - so it was the only workaround to a major bug. any team working without a kanban/todo board is dysfunctional. I suggest the opencode team try to work without consulting any such capability in their next sprint. when the sprint fails miserably, you will finally understand your own users and this flood of comments.

    Yes, someone who removed a to-do list tool from a coding agent has probably never seriously developed software themselves.

  20. gburke-ppb commented on Oct 16, 2026

    @gburke-ppb

    Any ETA on when this might be re-added?

  21. Gibbz commented on Oct 19, 2026

    @Gibbz

    ive upgraded a machine to v2, and lost todo! Ugh, how do i go back to the old version? is there a downgrade command?
    Why not keep the feature disabled by default, then those that want to use it can...

  22. rekram1-node commented on Oct 19, 2026

    @rekram1-node
    Contributor

    Will be added shortly

  23. venx-ecosystem commented on Oct 21, 2026

    @venx-ecosystem

    Thanks for bringing back the native TODO functionality in V2 and for the work on #56947 and #56948. I appreciate the effort to restore the "todowrite" tool and render TODO updates in the TUI timeline and sidebar.

    I would like to request equivalent TODO support in the browser-based Web UI.

    Problem

    With "experimental.todo" enabled, the native TODO functionality can be restored, but enabling the feature alone does not provide the same user-facing TODO visibility in the Web UI as the recently merged TUI implementation.

    I use OpenCode through a browser-based interface, where being able to see the agent's current plan and track progress is particularly important during long-running, multi-step coding tasks. Without a visible and reliably updated TODO list, I cannot easily tell which steps are pending, which task the agent is currently working on, or whether the agent has actually completed the planned work.

    PR #56948 adds TODO rendering to the TUI timeline and sidebar. However, its scope does not include the Web UI. Could the equivalent Web UI implementation be tracked as part of this existing feature request or as a dedicated follow-up?

    Requested implementation

    1. Render TODO updates in the session timeline

    Render native "todowrite" calls as dedicated, readable TODO cards instead of showing them only as generic tool calls.

    Each card should display the task items and their statuses, including:

    • Pending
    • In progress
    • Completed
    • Cancelled, if supported by the underlying TODO model

    The timeline should make changes understandable without requiring users to inspect raw tool arguments or read the agent's textual summaries.

    1. Show the current TODO list in a session sidebar or dedicated panel

    Provide a persistent, visible summary of the latest TODO list for the currently selected session, following the behavior introduced by #56948 as closely as possible.

    The list should remain visible while the user reads the conversation or inspects tool output. Completed tasks should be represented clearly, rather than making the panel disappear immediately when the final item is completed.

    1. Update the UI reactively

    When the agent creates or updates its TODO list, the Web UI should reflect the change automatically, without requiring a manual page refresh or a new user message.

    Please use the underlying structured TODO state and the appropriate server/client event or API mechanism, rather than attempting to infer TODO state by parsing the assistant's natural-language responses.

    1. Keep state correct when navigating between sessions

    The displayed list must correspond to the session currently being viewed. Switching between sessions should load the appropriate TODO state and must not leave the previous session's list visible.

    Cleared lists, failed TODO updates, session changes, and applicable history operations such as revert or compaction should be handled consistently with the underlying TODO behavior.

    1. Preserve the existing feature-flag behavior

    The Web UI implementation should respect the existing "experimental.todo" setting and work with the native V2 TODO implementation. It should not require users to install an unrelated community plugin simply to see the built-in TODO list.

    1. Add appropriate tests

    Please include coverage for timeline rendering, sidebar state, live updates, session switching, and empty or cleared TODO lists so that the feature remains reliable across future Web UI changes.

    Expected result

    When "experimental.todo" is enabled, users should be able to use the native TODO tool and see its current state directly in the browser-based Web UI, with functionality comparable to the TUI implementation in #56948.

    To avoid scope ambiguity, this request is specifically about rendering the existing session-level TODO functionality in the Web UI. It is not a request for a separate project-wide task-management system or a new external TODO service.

    Could you confirm whether Web UI support is already planned as a follow-up? If not, I would appreciate this being tracked explicitly, since the restored backend functionality and the TUI rendering are valuable, but they do not fully solve the problem for users who work primarily in the browser.

    Thank you!

  24. pumello commented on Oct 21, 2026

    @pumello

    Thank you for bringing the Todo tool back @rekram1-node and for your work on this excellent open source project 🙇

  25. deleted a comment from neriousy on Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions