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
Model completes tasks but doesn't mark todo items as completed #27560
When using OpenCode with an external model (via OpenAI-compatible API), the agent frequently completes the work described in a todo item but never calls todowrite to mark it as completed. The todo list stays in its previous state even after the underlying work is done.
This is not a "todo hangs" issue the todo items simply don't get transitioned to completed state by the model, even though the work is done and the model explicitly says "task done" or "finished" in its response.
The same model, when used with Claude Code (via the same OpenAI-compatible proxy), correctly updates the todo list. This suggests the model is capable of using the todo tool, but something in OpenCode's implementation causes it to skip the update possibly:
The todowrite tool definition or description in OpenCode is less clear/visible than Claude Code's equivalent
The model loses track of active todo items after working on subtasks (context dilution)
The todo state is not consistently fed back into the model's context window, so the model forgets it needs to update status
Plugins
@mohak34/opencode-notifier
OpenCode version
1.14.48
Steps to reproduce
Create a multi-step task with 3-4 todo items
Let the model work through them sequentially
Observe: model finishes step 1, moves to step 2, but step 1 remains in_progress forever
Eventually all items stay in_progress or pending even when work is done
Same model + same proxy setup in Claude Code correctly updates todos
Update: after further testing, I found that oh-my-opencode (omo) has a hook mechanism that proactively pushes the model to update the todo list after each step. This reliably solves the todo state consistency issue.
It would be great if OpenCode core could add a similar mechanism — for example, a lightweight post-step hook that reminds the model to sync todo status, or automatically transitions stale in_progress items based on tool execution context. This doesn't need to be as heavy as omo's approach; even a simple contextual cue injected into the next model turn could help significantly.
Activity
github-actions commentedon May 14, 2026
This issue might be a duplicate of existing issues. Please check:
in_progressstate even after the model finishes the work, with a suggested fix around auto-marking completion.YoungJurry commentedon May 14, 2026
Update: after further testing, I found that
oh-my-opencode (omo)has a hook mechanism that proactively pushes the model to update the todo list after each step. This reliably solves the todo state consistency issue.It would be great if OpenCode core could add a similar mechanism — for example, a lightweight post-step hook that reminds the model to sync todo status, or automatically transitions stale
in_progressitems based on tool execution context. This doesn't need to be as heavy as omo's approach; even a simple contextual cue injected into the next model turn could help significantly.countzero commentedon Sep 17, 2026
Hi there,
I ran into this a lot too, and wrote a small plugin as a workaround until a proper upstream fix lands.
See #41359 (comment) for details.
I hope this helps someone out there 😉