anomalyco / anomalyco/opencode

[FEATURE]: ACP v2 draft spec support

Open
#44,877 1 comment 0 reactions 1 assignee View on GitHub

@jlongster is already working on this.

Since Aug 25, 2026.

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

Description

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

The Agent Client Protocol v2 draft has been published with a migration guide for agents. This is ACP v2 draft (the protocol layer), not to be confused with OpenCode V2 (the session core).

Key changes in ACP v2 draft that we should support:

  • Prompt lifecyclesession/prompt returns {} on acceptance; foreground state flows as state_update notifications (running/idle with stopReason)
  • Mid-turn steering — a second session/prompt admitted while a turn is running steers at the next safe boundary
  • Initialize restructurecapabilities/info fields, session-scoped capability groups, protocolVersion: 2 negotiation
  • Cancel confirmation — confirmation is state_update: idle with stopReason: cancelled, not the prompt response
  • Message IDsmessageId on all chunks; whole-message upserts (user_message) with acknowledgment
  • Tool callstool_call_update for create+patch (stop emitting tool_call create)
  • Agent-owned terminal displayterminal_update upserts with base64-encoded output.data and exitStatus
  • Structured diffschanges array + git_patch format instead of oldText/newText
  • Permission requests — required title, optional description, extensible subject union
  • Plansplan_update with planId keyed tagged union
  • Session lifecyclesession/resume with replayFrom
  • Session modes removed — express as config options with category: mode
  • Auth renamesauthenticateauth/login, logoutauth/logout
  • MCP configtype discriminator (http/sse/acp/stdio)
  • Slash commandsinput: { type: "text", hint } discriminator
  • JSON-RPC batch — accept and process batch arrays on stdio
  • Extensibility — open enums, _meta passthrough, unknown content block types

This should be gated behind OPENCODE_EXPERIMENTAL_ACP_V2 with v1/v2 side-by-side support so existing clients are unaffected. The SDK needs upgrading from 0.21.0 to 1.3.0.

Implementation: #44524

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.