Skip to content

[FEATURE]: ACP: support mid-turn steering (_session/steering) #53042

Closed

Description

@smagnuso

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

Feature description

opencode acp has no way for an ACP client to send a message into a turn that is
already running. Clients that want to steer have to queue the message until the
turn ends, or cancel the turn and start a new one.

claude-agent-acp and codex-acp already handle this with a _session/steering
request, advertised as _meta.steering.supported: true in the initialize
response. opencode doesn't advertise it, so clients like yaac fall back to
queueing (bsklaroff/yaac#284).

The loop already does the right thing for this. It re-reads the session's
messages on every step, so a user message added while a turn is running is
picked up at the next step. The ACP adapter just doesn't expose a way to add one
without starting a second prompt call.

Proposal

Add a _session/steering handler to the ACP adapter. If the session is busy,
add the message with session.prompt({ noReply: true }) and reply
{ outcome: "injected" }. If it is idle, reply
{ outcome: "promptRequired", reason: "noRunningTurn" } and do nothing, so a
steer can never start a turn the client didn't ask for.

This is the same pre-standard extension the other two adapters implement; the
spec proposal is agentclientprotocol/agent-client-protocol#1261.
It is about 35 lines in packages/opencode/src/acp/. I have it working and can
open a PR.

Activity

  1. github-actions commented on Oct 4, 2026

    @github-actions
    Contributor

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

    • #44877: ACP v2 support already includes mid-turn steering through a prompt submitted while a turn is running.
    • #21388: broader request for mid-turn message delivery with inject, queue, and interrupt modes.
    • #32157: request to distinguish queued prompts from steering during a running session.
  2. smagnuso commented on Oct 4, 2026

    @smagnuso
    ContributorAuthor

    Not a duplicate of #44877: that tracks the ACP v2 draft, where a second session/prompt steers. This is the v1-era _session/steering extension that claude-agent-acp and codex-acp already ship, so existing ACP clients get steering today without waiting for v2. Small and additive, ~35 lines. PR: #53043

  3. opencodejr commented on Oct 27, 2026

    @opencodejr
    Contributor

    Thanks for the clear write-up and for porting the implementation to V2!

    To restate the request: opencode acp should support the _session/steering extension and advertise _meta.steering.supported. A client could then add a message to a running turn (reply injected), and the request would do nothing when the session is idle (reply promptRequired). This would match claude-agent-acp and codex-acp. Maintainers will consider it.

    Related:

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