Skip to content

Commit ceea202

Browse files
committed
refactor(agents): remove raw subagent completion fallback
1 parent 559d982 commit ceea202

5 files changed

Lines changed: 74 additions & 564 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ Docs: https://docs.openclaw.ai
125125
### Fixes
126126

127127
- Exec approvals/node: let trusted backend node invokes complete no-device Control UI approvals after the original request connection changes, while keeping node, command, cwd, env, and allow-once replay bindings enforced. Fixes #78569. Thanks @naturedogdog.
128-
- Agents/subagents: stop direct completion fallback and queued outbound retries from exposing child-result wrapper or OpenClaw runtime-context scaffolding when the mediated announce reply fails. Fixes #78531. Thanks @EthanSK.
128+
- Agents/subagents: keep background completion delivery on the requester-agent handoff/queue-retry path instead of raw-sending child results directly, and strip child-result wrapper or OpenClaw runtime-context scaffolding from queued outbound retries. Fixes #78531. Thanks @EthanSK.
129129
- CLI/completion: guard the shell-profile source line written by `openclaw completion --install` with a file existence check (`[ -f ... ] && source ...` for bash/zsh, `test -f ...; and source ...` for fish) so uninstalling OpenClaw no longer makes new login shells error on a missing completion cache. (#78659) Thanks @sjf.
130130
- Cron/doctor: repair persisted cron jobs whose `payload.model` was stored as `"default"`, `"null"`, blank, or JSON `null` by removing the bad override during `openclaw doctor --fix` while keeping cron runtime model validation strict. Fixes #78549. Thanks @bizzle12368239.
131131
- Telegram: honor `accessGroup:*` sender allowlists for DMs, groups, native commands, and callback authorization before applying Telegram's numeric sender-ID checks. Fixes #78660. Thanks @manugc.

docs/tools/subagents.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,10 @@ requester chat when the run finishes.
8787

8888
</Accordion>
8989
<Accordion title="Manual-spawn delivery resilience">
90-
- OpenClaw tries direct `agent` delivery first with a stable idempotency key.
91-
- If the requester-agent completion turn fails, produces no visible output, or returns an obviously incomplete prefix of the captured child result, OpenClaw falls back to direct completion delivery from the captured child result.
92-
- If direct delivery cannot be used, it falls back to queue routing.
90+
- OpenClaw hands completions back to the requester session through an `agent` turn with a stable idempotency key.
91+
- If the requester run is still active, OpenClaw first tries to wake/steer that run instead of starting a second visible reply path.
92+
- If the requester-agent completion handoff fails or produces no visible output, OpenClaw treats delivery as failed and falls back to queue routing/retry. It does not raw-send the child result directly to the external chat.
93+
- If direct handoff cannot be used, it falls back to queue routing.
9394
- If queue routing is still not available, the announce is retried with a short exponential backoff before final give-up.
9495
- Completion delivery keeps the resolved requester route: thread-bound or conversation-bound completion routes win when available; if the completion origin only provides a channel, OpenClaw fills the missing target/account from the requester session's resolved route (`lastChannel` / `lastTo` / `lastAccountId`) so direct delivery still works.
9596

0 commit comments

Comments
 (0)