mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-26 17:23:52 +00:00
Some checks failed
CI / preflight (push) Waiting to run
CI / security-scm-fast (push) Waiting to run
CI / security-dependency-audit (push) Waiting to run
CI / security-fast (push) Blocked by required conditions
CI / build-artifacts (push) Blocked by required conditions
CI / (push) Blocked by required conditions
CI / -1 (push) Blocked by required conditions
CI / checks-fast-contracts-plugins (push) Blocked by required conditions
CI / -2 (push) Blocked by required conditions
CI / checks-fast-contracts-channels (push) Blocked by required conditions
CI / checks-fast-protocol (push) Blocked by required conditions
CI / -3 (push) Blocked by required conditions
CI / checks-node-compat-node22 (push) Blocked by required conditions
CI / -4 (push) Blocked by required conditions
CI / -5 (push) Blocked by required conditions
CI / checks-node-core (push) Blocked by required conditions
CI / check-dependencies (push) Blocked by required conditions
CI / check-lint (push) Blocked by required conditions
CI / check-policy-guards (push) Blocked by required conditions
CI / check-preflight-guards (push) Blocked by required conditions
CI / check-prod-types (push) Blocked by required conditions
CI / check-strict-smoke (push) Blocked by required conditions
CI / check-test-types (push) Blocked by required conditions
CI / check (push) Blocked by required conditions
CI / check-additional-boundaries-a (push) Blocked by required conditions
CI / check-additional-boundaries-b (push) Blocked by required conditions
CI / check-additional-boundaries-c (push) Blocked by required conditions
CI / check-additional-boundaries-d (push) Blocked by required conditions
CI / check-additional-extension-bundled (push) Blocked by required conditions
CI / check-additional-extension-channels (push) Blocked by required conditions
CI / check-additional-extension-package-boundary (push) Blocked by required conditions
CI / check-additional-runtime-topology-architecture (push) Blocked by required conditions
CI / check-additional (push) Blocked by required conditions
CI / build-smoke (push) Blocked by required conditions
CI / check-docs (push) Blocked by required conditions
CI / skills-python (push) Blocked by required conditions
CI / -6 (push) Blocked by required conditions
CI / -7 (push) Blocked by required conditions
CI / macos-swift (push) Blocked by required conditions
CI / -8 (push) Blocked by required conditions
ClawSweeper Dispatch / dispatch (push) Waiting to run
Docs Sync Publish Repo / sync-publish-repo (push) Waiting to run
Docs / docs (push) Waiting to run
Plugin NPM Release / preview_plugins_npm (push) Waiting to run
Plugin NPM Release / preview_plugin_pack (push) Blocked by required conditions
Plugin NPM Release / publish_plugins_npm (push) Blocked by required conditions
Workflow Sanity / no-tabs (push) Waiting to run
Workflow Sanity / actionlint (push) Waiting to run
Workflow Sanity / generated-doc-baselines (push) Waiting to run
Website Installer Sync / static (push) Has been cancelled
Website Installer Sync / linux-docker (push) Has been cancelled
Website Installer Sync / macos-installer (push) Has been cancelled
Website Installer Sync / windows-installer (push) Has been cancelled
Website Installer Sync / sync-website (push) Has been cancelled
Summary: - Default active-run queueing to steer while preserving explicit followup/collect modes. - Keep `/steer` fallback behavior and migrate retired queue steering config. - Await Codex app-server steering acceptance so rejected/aborted steering can fall back safely. - Route active subagent announcements through intentional acceptance-aware steering, with legacy queue helpers deprecated for delivery decisions. Verification: - git diff --check - rg -n "^(<<<<<<<|=======|>>>>>>>|\|\|\|\|\|\|\|)" CHANGELOG.md docs src extensions || true - pnpm test src/agents/subagent-announce-dispatch.test.ts src/agents/subagent-announce-delivery.test.ts src/agents/pi-embedded-runner/runs.test.ts src/agents/subagent-announce.format.e2e.test.ts src/agents/subagent-announce.test.ts - pnpm test src/auto-reply/reply/commands-steer.test.ts src/auto-reply/reply/queue/settings.test.ts src/auto-reply/reply/queue-policy.test.ts src/auto-reply/reply/agent-runner.runreplyagent.e2e.test.ts src/auto-reply/reply/get-reply-run.media-only.test.ts extensions/codex/src/app-server/run-attempt.test.ts -- -t "queued steering|explicit all-mode steering|flushes pending default queued steering|rejects queued steering|resolveActiveRunQueueAction|resolveQueueSettings|handleSteerCommand" Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
84 lines
2.7 KiB
Markdown
84 lines
2.7 KiB
Markdown
---
|
|
summary: "Steer an active run without changing queue mode"
|
|
read_when:
|
|
- Using /steer or /tell while an agent is already running
|
|
- Comparing /steer with /queue modes
|
|
- Deciding whether to steer the current run, a sub-agent, or an ACP session
|
|
title: "Steer"
|
|
sidebarTitle: "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.
|
|
|
|
## Current session
|
|
|
|
Use top-level `/steer` to target the active run for the current session:
|
|
|
|
```text
|
|
/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.
|
|
|
|
## 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.
|
|
|
|
Use:
|
|
|
|
- `/steer <message>` when you want to guide the active run right now.
|
|
- `/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](/concepts/queue) and
|
|
[Steering queue](/concepts/queue-steering).
|
|
|
|
## Sub-agents
|
|
|
|
Use `/subagents steer` when the target is a child run:
|
|
|
|
```text
|
|
/subagents steer 2 focus only on the API surface
|
|
```
|
|
|
|
Top-level `/steer` does not select a sub-agent by id or list index. It always
|
|
targets the current session's active run. See [Sub-agents](/tools/subagents) for
|
|
sub-agent ids, labels, and control commands.
|
|
|
|
## ACP sessions
|
|
|
|
Use `/acp steer` when the target is an ACP harness session:
|
|
|
|
```text
|
|
/acp steer --session agent:main:acp:codex tighten the repro
|
|
```
|
|
|
|
See [ACP agents](/tools/acp-agents) for ACP session selection and runtime
|
|
behavior.
|
|
|
|
## Related
|
|
|
|
- [Slash commands](/tools/slash-commands)
|
|
- [Command queue](/concepts/queue)
|
|
- [Steering queue](/concepts/queue-steering)
|
|
- [Sub-agents](/tools/subagents)
|