ACP Sessions
ACP lets GoClaw attach to an external agent session and route your chat turns through that session instead of the normal local LLM tool loop.
In the current MVP, GoClaw supports a local stdio ACP session with the Cursor driver. This is useful when you want to steer a live Cursor agent session, inspect its state, and handle Cursor interactive workflows from GoClaw’s channels.
Current Scope
GoClaw currently supports:
- the
cursorACP driver - a local stdio transport
- session-scoped attachment through
/acpcommands - agent-facing ACP control and inspection tools
- interactive Cursor extension flows surfaced in HTTP, Telegram, and TUI
By default, GoClaw applies the friendly model alias claude-4.6-opus-high-thinking after attaching to a Cursor ACP session. You can override that preferred model with acp.drivers.cursor.model in goclaw.json or through the dedicated Configuration -> ACP editor section.
ACP attachment is tied to the GoClaw session key, not to one specific UI tab or one specific chat transport. For owner sessions, that usually means the attached ACP session follows the shared primary session.
Configuration
ACP preferences now live under the top-level acp config tree rather than under gateway:
{
"acp": {
"defaultDriver": "cursor",
"drivers": {
"cursor": {
"model": "claude-4.6-opus-high-thinking"
}
}
}
}
Both setup editors expose this through a dedicated ACP section. For Cursor, the UI offers a curated model dropdown plus a custom entry path while still saving only the final drivers.cursor.model string.
The Refresh Cursor Models action rebuilds the in-memory model catalog for the current running process and then reloads the ACP form so the dropdown reflects the refreshed list. The catalog itself is not written back into goclaw.json.
Common Workflow
1. Attach a session
Attach a new Cursor ACP session from the current GoClaw session:
/acp attach
When attach succeeds, GoClaw also tries to apply the configured acp.drivers.cursor.model alias to that ACP session. If the attached Cursor session does not expose that alias, attach fails with a clear error instead of silently picking something else.
Attach with an explicit working directory or startup mode:
/acp attach cursor --cwd /path/to/project --mode agent
Re-attach to an existing ACP session ID:
/acp attach cursor --session SESSION_ID
2. Inspect or change mode
Check the current ACP attachment:
/acp status
The status output includes the current ACP mode and, when available, the currently selected friendly model alias.
Change the ACP mode when the driver supports it:
/acp mode plan
Typical modes used by Cursor are agent, plan, and ask.
List the live model aliases that the attached Cursor ACP session currently accepts:
/acp model list
Switch the attached ACP session to one of those friendly aliases:
/acp model claude-4.6-opus-high-thinking
Use /acp model list first when you want to confirm the exact aliases exposed by the currently attached Cursor session.
3. Steer the attached session
Send a prompt into the attached ACP session:
/acp steer Review the current refactor and suggest the next safe step.
By default, steer detaches after the prompt completes so you can return to normal GoClaw chat naturally.
If you want to keep the ACP session attached for more back-and-forth turns, use:
/acp steer --stay-attached Ask the attached Cursor session to create a short plan.
4. Finish cleanly
Use these depending on what you want:
/acp detachto stop routing this GoClaw session through ACP, while leaving the external ACP session available to re-attach later/acp closeto close the ACP session entirely/acp cancelto cancel the currently running ACP prompt without closing the session
Interactive Behavior
Cursor ACP sessions can emit interactive extension requests such as questions, plan approval flows, todo updates, delegated-task notices, and generated-asset notices.
GoClaw surfaces those differently by channel:
- HTTP/Web UI shows interactive cards for questions and plan approval, plus rendered status cards for todo, task, and generated-image events
- Telegram uses inline buttons for single-choice and approval flows, and native polls for single-question multi-select prompts
- TUI shows notice-only summaries so you can see what happened, but interactive responses must be handled elsewhere
If an interactive ACP prompt is waiting and you continue chatting instead of clicking the UI, GoClaw cancels the pending interactive request and treats your new message as the next turn. This avoids getting stuck behind a blocked prompt.
Limitations
Current ACP support is intentionally narrow:
- only the Cursor driver is supported today
- only local stdio transport is supported today
- ACP-attached sessions do not yet support normal media or other content-block turns
- TUI currently mirrors interactive ACP events as notices rather than a full response UI
If you want to send images, audio, or other content-block input to GoClaw, detach from ACP first.
User Commands vs Agent Tools
There are two ACP control surfaces:
/acpslash commands are for you as the operatoracp_controlandacp_inspectare agent-facing tools used internally by the GoClaw agent
Use the slash commands for normal manual control. The agent tools are documented separately in ACP Tools .
See Also
- Channel Commands
—
/acpcommand reference - ACP Tools — Agent-facing ACP tool reference
- Channels — How ACP events appear in each text channel
- Architecture — High-level ACP routing inside GoClaw