Bug type
Behavior bug (incorrect output/state without crash)
Beta release blocker
No
Summary
Summary
chat.abort currently cannot stop active runs started via the public
agent RPC.
It only aborts runs tracked in chatAbortControllers, which are created by
chat.send.
This makes it impossible for external runtimes that integrate through
agent to implement a proper "Pause/Stop current session" using public
Gateway RPCs.
Relevant implementation details
chat.abort checks context.chatAbortControllers
chat.send registers runs into chatAbortControllers
agent does not register its runs into chatAbortControllers
/stop full semantics live in command handling, not in chat.abort
Why this matters
External apps may intentionally use agent instead of chat.send because
they need:
- raw agent lifecycle/tool/approval events
- per-run system prompt injection
- host-managed conversation/run state
Right now those apps cannot implement a proper public "stop current run/
session" without depending on OpenClaw internal modules.
Suggested direction
Preferred:
- expose a stable public
sessions.stop RPC equivalent to /stop
Alternative:
- extend public abort APIs so they can stop active
agent session runs as
well
Steps to reproduce
- Start a long-running session via the public
agent RPC:
- method:
agent
- params:
{ sessionKey, message, idempotencyKey, ... }
- While the run is still streaming, call:
chat.abort({ sessionKey, runId })
- or
chat.abort({ sessionKey })
- Gateway returns:
{ ok: true, aborted: false, runIds: [] }
- The run continues.
Expected behavior
One of the following should be true:
chat.abort / sessions.abort should also be able to interrupt active
session runs started by agent, or
- OpenClaw should expose a public session-level stop API, e.g.
sessions.stop, with semantics equivalent to /stop:
- clear queued followups / lane queue
- stop active embedded run
- stop descendant subagents
- trigger stop command hooks
Actual behavior
chat.abort only checks chatAbortControllers, which are populated by
chat.send.
agent runs are not registered there, so abort returns aborted:false even
when the run is still active.
OpenClaw version
2026.4.9
Operating system
macOS 15.4
Install method
npm global
Model
minimax
Provider / routing chain
openclaw -> minimax
Additional provider/model setup details
No response
Logs, screenshots, and evidence
Impact and severity
No response
Additional information
No response
Bug type
Behavior bug (incorrect output/state without crash)
Beta release blocker
No
Summary
Summary
chat.abortcurrently cannot stop active runs started via the publicagentRPC.It only aborts runs tracked in
chatAbortControllers, which are created bychat.send.This makes it impossible for external runtimes that integrate through
agentto implement a proper "Pause/Stop current session" using publicGateway RPCs.
Relevant implementation details
chat.abortcheckscontext.chatAbortControllerschat.sendregisters runs intochatAbortControllersagentdoes not register its runs intochatAbortControllers/stopfull semantics live in command handling, not inchat.abortWhy this matters
External apps may intentionally use
agentinstead ofchat.sendbecausethey need:
Right now those apps cannot implement a proper public "stop current run/
session" without depending on OpenClaw internal modules.
Suggested direction
Preferred:
sessions.stopRPC equivalent to/stopAlternative:
agentsession runs aswell
Steps to reproduce
agentRPC:agent{ sessionKey, message, idempotencyKey, ... }chat.abort({ sessionKey, runId })chat.abort({ sessionKey }){ ok: true, aborted: false, runIds: [] }Expected behavior
One of the following should be true:
chat.abort/sessions.abortshould also be able to interrupt activesession runs started by
agent, orsessions.stop, with semantics equivalent to/stop:Actual behavior
chat.abortonly checkschatAbortControllers, which are populated bychat.send.agentruns are not registered there, so abort returnsaborted:falseevenwhen the run is still active.
OpenClaw version
2026.4.9
Operating system
macOS 15.4
Install method
npm global
Model
minimax
Provider / routing chain
openclaw -> minimax
Additional provider/model setup details
No response
Logs, screenshots, and evidence
Impact and severity
No response
Additional information
No response