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
[FEATURE]: ACP: support mid-turn steering (_session/steering) #53042
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.
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
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.
Activity
github-actions commentedon Oct 4, 2026
This issue might be a duplicate of existing issues. Please check:
smagnuso commentedon Oct 4, 2026
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
opencodejr commentedon Oct 27, 2026
Thanks for the clear write-up and for porting the implementation to V2!
To restate the request:
opencode acpshould support the_session/steeringextension and advertise_meta.steering.supported. A client could then add a message to a running turn (replyinjected), and the request would do nothing when the session is idle (replypromptRequired). This would match claude-agent-acp and codex-acp. Maintainers will consider it.Related:
session/promptsteers natively and would eventually replace this extension