openclaw/docs/tools/steer.md
Josh Avant fd2a6caa89
fix(sessions): preserve requester identity at execution admission (#157806)
* fix(sessions): preserve requester identity at execution admission

* test(agents): preserve requester in Claude steering fixture

* fix(sessions): close requester admission and recovery gaps

* refactor(gateway): narrow MCP prepared policy imports

* fix(ci): route reply E2E tests through prepared owners

* fix(sessions): restore requester authority on peer recovery

* test(sessions): validate cold recovery in the proof tier

* test(agents): verify requester custody through recovery

* fix(sessions): preserve live work beyond recovery bounds

* fix(gateway): preserve recovered authority through compaction

* test(gateway): retain system custody in settle continuation

* fix(test): repair provenance fixtures and wrapper inventory

* test: isolate followup admission recovery fixture

* feat(messages): allow collaborative steering by default

* test(messages): retain explicit personal tool selection

* fix(doctor): retain original backup when persisting queue default

* test(gateway): retain steering and cleanup failure details

* fix(messages): queue unavailable collaborative steering

* test(config): use supported queue persistence fixture

* fix(config): retain resolved gateway mode for write auditing

* fix(config): accept readonly paths in config accessors

* test(gateway): configure destination policy before startup

* test(gateway): await steering admission before releasing incumbent

* test(gateway): observe steering admission receipt

* test(gateway): report stalled provenance proof phase

* test: use lint-compatible proof diagnostic bindings

* test(gateway): create collaborative delegation destinations

* test(gateway): cover collaborative steering cancellation

* test(gateway): separate collaborative cancellation scenarios

* test(gateway): respect this-free authority projection contract

* fix(agents): queue collaborative input after incumbent cancellation

* fix(queue): preserve followup when a queued steer loses its target

* test(queue): identify the failing cancellation schedule

* test(queue): retain the injection owner symbol type

* test(gateway): cover requester restoration during recovery retries

* fix(queue): refuse disabled collaboration and add explicit followup

* test: reconcile requester fixtures after rebase

* perf(sessions): omit prior requester metadata without deletion

* test(sessions): prove linked requester revocation at delivery

* fix(reply): announce followup start before streamed output

* test(queue): preserve collected cancellation coverage after rebase

* fix(sessions): reconcile admission and recovery after rebase

* fix(messages): disable collaborative steering by default

* refactor: reduce requester provenance churn

* fix(sessions): reconcile ownership and recovery after rebase

* test(sessions): simplify provenance and admission fixtures

* fix(sessions): preserve selected authority and truthful attribution

* style(tests): format rebase resolutions

* refactor(sessions): simplify rebase option forwarding

* test(sessions): consolidate requester authority coverage

* fix: preserve accepted work and message outcomes

* test: align admission fixtures with configured defaults

* chore: refresh generated artifacts after rebase

* style: format rebased session controller integration

* fix(sessions): reconcile controller integration and source limits

* fix(cron): use extracted recovery source codec

* fix(sessions): reconcile controller admission and cancellation cleanup

* fix(sessions): reconcile admitted channel recovery receipts

* test(ci): separate selected capacity from inventory packing

* fix(sessions): preserve admission rejection after cleanup

* chore(config): regenerate baseline after provider rebase

* fix(reply): admit explicit followups to the busy queue

* fix(sessions): preserve admitted source across native attachment

* fix(reply): reconcile steering authority after rebase

* fix(sessions): preserve cron recovery boundaries after rebase
2026-10-18 20:09:24 -07:00

4.4 KiB
Raw Blame History

summary read_when title sidebarTitle
Steer an active run without changing queue mode
Using /steer or /tell while an agent is already running
Comparing /steer, /followup, and /queue modes
Deciding whether to steer the current run or an ACP session
Steer Steer

/steer first tries to send guidance to an already-active run. It is for "adjust this run while it is still working" moments. If the current runtime cannot accept steering, OpenClaw sends the message as a normal prompt instead of dropping it.

/tell is an alias of /steer. The two names are interchangeable everywhere on this page.

Current session

Use top-level /steer to target the active run for the current session:

/steer prefer the smaller patch and keep the tests focused
/tell summarize before making the next tool call

Behavior:

  • Targets only the current session's active run.
  • Works independently of the session's /queue mode.
  • Starts a normal turn with the same message when the session is idle or the active run cannot accept steering.
  • Uses the active runtime's steering path, so the model sees the guidance at the next supported runtime boundary.

With messages.queue.allowCollaborativeSteering: false (the default), steering another person’s active turn is refused and the message is not queued. The runtime offers /followup <message> to request a separate turn. This applies to /steer and /tell as well as ordinary steering input. See Steering scope.

One message as a new turn

Use /followup <message> when this message should start a separate turn instead of changing work in progress:

/followup review the completed patch and summarize the remaining risks

When the session is busy, the message waits behind current and already-queued work. When it is idle with no queued work, normal admission starts it immediately. It does not answer a pending question, join a collect batch, or change the saved /queue mode. The new turn keeps its submitter and uses the policy applicable when it is admitted.

OpenClaw reports whether the message was queued, started, or rejected. A queued notice means the message entered the queue, not that it changed the active run. Queue capacity and cancellation still apply. This command also works in openclaw chat and openclaw tui --local.

Steer vs queue

/queue steer makes normal inbound messages try to steer the active run when they arrive while a run is active. /steer <message> is an explicit command that tries to inject that command's message into the active run at the next supported runtime boundary, regardless of the stored /queue setting. When that injection is not available, the command prefix is stripped and <message> continues as a normal prompt.

The explicit /steer (and /tell) command is Gateway-backed. In openclaw chat or openclaw tui --local, select /queue steer and send the guidance as a normal message; the embedded runtime applies the same steering policy without forwarding a Gateway command.

Use:

  • /steer <message> when you want to guide the active run right now.
  • /followup <message> when only this message should wait for its own turn.
  • /queue steer when you want future normal messages to steer active runs by default.
  • /queue collect or /queue followup when future normal messages should wait for a later turn instead of steering the active run.
  • /queue interrupt when the newest message should replace the active run instead of steering it.

For queue modes and steering boundaries, see Command queue and Steering queue.

Sub-agents

Top-level /steer targets the current session's active run. Sub-agents report back to their parent/requester session; /subagents is for visibility only.

ACP sessions

Use /acp steer when the target is an ACP harness session:

/acp steer --session agent:main:acp:codex tighten the repro

ACP harness sessions cannot accept input mid-turn. /acp steer queues the instruction and runs it after the active turn finishes; use /acp cancel first to stop work in progress. See ACP controls.

See ACP agents for ACP session selection and runtime behavior.