anomalyco / anomalyco/opencode

ACP clients don't show the session plan — `plan` sessionUpdate is never emitted

Open
#40,745 1 comment 0 reactions 1 assignee View on GitHub

@rekram1-node is already working on this.

Since Aug 5, 2026.

Dominant language
TypeScript
Stars
209k
Forks
27.5k
PR merge metrics
PR metrics pending

Description

Problem

When OpenCode runs as an ACP agent (Zed, JetBrains, Neovim via ACP), the session todo list that the TUI renders is never shown in the client. ACP defines a first-class plan sessionUpdate for this, but OpenCode's ACP adapter never emits it.

The state is already published as a todo.updated event (packages/schema/src/session-todo.ts, packages/core/src/session/todo.ts) on the same event stream the adapter consumes (sdk.global.event() in packages/opencode/src/acp/event.ts). The handle() switch has no case "todo.updated", so the data is dropped before reaching the client.

The todowrite tool result is visible in ACP clients as a raw tool-call payload, but there is no plan panel — that only comes from sessionUpdate: "plan".

Proposal

Map todo.updatedsession/update with sessionUpdate: "plan" in event.ts. Todo.Info (content/priority/status) maps 1:1 onto ACP PlanEntry.

Verification

  • event.ts emits agent_message_chunk, agent_thought_chunk, tool_call(_update), usage_update, available_commands_update — no plan.

  • SessionTodo.Event.Updated (type: "todo.updated", properties: { sessionID, todos }) is published on EventV2 and surfaces in the global event stream.

  • A standalone ACP agent emitting the equivalent plan updates renders a live plan panel in Zed — the client side is ready.

  • I have verified this behavior is missing

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.