Skip to content

Model completes tasks but doesn't mark todo items as completed #27560

Closed

Description

@YoungJurry

Description

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:

  1. The todowrite tool definition or description in OpenCode is less clear/visible than Claude Code's equivalent
  2. The model loses track of active todo items after working on subtasks (context dilution)
  3. 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

  1. Create a multi-step task with 3-4 todo items
  2. Let the model work through them sequentially
  3. Observe: model finishes step 1, moves to step 2, but step 1 remains in_progress forever
  4. Eventually all items stay in_progress or pending even when work is done
  5. Same model + same proxy setup in Claude Code correctly updates todos

Screenshot and/or share link

N/A

Operating System

Linux

Terminal

tmux

Activity

  1. github-actions commented on May 14, 2026

    @github-actions
    Contributor

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

  2. YoungJurry commented on May 14, 2026

    @YoungJurry
    Author

    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.

  3. countzero commented on Sep 17, 2026

    @countzero

    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 😉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions