Steering is delivered at priority `now`, which makes the CLI **abort** the running cycle instead of folding the message into it. The aborted cycle ends with an ordinary human-origin `result`, so we answered `session/prompt` with `end_turn` while the steered work was still going — its remaining tool calls, its answer, and its file edits then streamed with no turn in flight. A steered turn's results now only record their outcome, and the turn settles at the SDK's `idle` — the only signal spanning both the interrupted and the steered cycle. The injected message's replay tells them apart: an idle arriving before it means the steered cycle hasn't started, so it is swallowed. `session/cancel` and the next prompt still settle the turn early, with the recorded stop reason. Four steering tests cover the interrupt, an early idle, the next-prompt hand-off, and cancel.
ACP adapter for the Claude Agent SDK
Use Claude Agent SDK from ACP-compatible clients!
This tool implements an ACP agent by using the official Claude Agent SDK, supporting:
- Context @-mentions
- Images
- Tool calls (with permission requests)
- Following
- Edit review
- TODO lists
- Nested subagent transcripts
- Interactive (and background) terminals
- Custom Slash commands
- Client MCP servers
Learn more about the Agent Client Protocol.
Nested subagent transcripts
ACP 1.2 has no standard subagent tool kind or nested-message relationship. Clients that can render
nested transcripts can opt in with clientCapabilities._meta["subagent-transcript"] = true.
The agent then forwards subagent text, thinking, and tool calls, relating nested updates to the
launching Agent/Task call through _meta.claudeCode.parentToolUseId. Agent/Task calls are marked
with _meta.claudeCode.subagent = true.
Clients that do not advertise the capability retain the legacy flattened behavior. In both modes, the normal Agent/Task tool result is preserved as the protocol-compatible fallback.
Contribution Policy
This project does not require a Contributor License Agreement (CLA). Instead, contributions are accepted under the following terms:
By contributing to this project, you agree that your contributions will be licensed under the Apache License, Version 2.0. You affirm that you have the legal right to submit your work, that you are not including code you do not have rights to, and that you understand contributions are made without requiring a Contributor License Agreement (CLA).