openclaw - 💡(How to fix) Fix ACP: keep thread-bound follow-ups parent-orchestrated by default, not raw pass-through [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#69669Fetched 2026-04-22 07:49:33
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Author
Participants

Thread-bound ACP follow-ups are currently too easy to treat as raw pass-through to the child session, instead of remaining parent-orchestrated by default.

In practice, the first prompt is often synthesized correctly by the parent assistant, but later shorthand follow-ups like:

  • "ừa bắt nó làm tiếp như m suggest đi"
  • "ok triển khai phase 2 đi"
  • "bảo nó làm tiếp theo hướng đó"

can end up being forwarded as-is to the ACP child harness.

Root Cause

Users often speak to the parent orchestrator in shorthand. If the raw message is passed through directly, the child receives low-context prompts and the orchestration UX breaks down.

This is especially visible in ACP thread-bound coding workflows where the user expects:

  • user message -> parent interprets and expands
  • parent prompt -> child executes

not:

  • user message -> raw forward -> child guesses
RAW_BUFFERClick to expand / collapse

Summary

Thread-bound ACP follow-ups are currently too easy to treat as raw pass-through to the child session, instead of remaining parent-orchestrated by default.

In practice, the first prompt is often synthesized correctly by the parent assistant, but later shorthand follow-ups like:

  • "ừa bắt nó làm tiếp như m suggest đi"
  • "ok triển khai phase 2 đi"
  • "bảo nó làm tiếp theo hướng đó"

can end up being forwarded as-is to the ACP child harness.

Expected behavior

Thread binding should preserve child session continuity, but not imply raw-message forwarding semantics.

Default behavior should be:

  1. parent assistant reads the user's shorthand follow-up
  2. parent resolves references from parent-thread context
  3. parent rewrites the follow-up into an explicit child task
  4. parent sends the rewritten task to the bound ACP child session

Raw verbatim relay should happen only when the user explicitly asks for exact forwarding.

Why this matters

Users often speak to the parent orchestrator in shorthand. If the raw message is passed through directly, the child receives low-context prompts and the orchestration UX breaks down.

This is especially visible in ACP thread-bound coding workflows where the user expects:

  • user message -> parent interprets and expands
  • parent prompt -> child executes

not:

  • user message -> raw forward -> child guesses

Evidence / current architecture notes

Observed locally:

  • initial ACP thread spawn used sessions_spawn(runtime="acp", thread=true, mode="session")
  • first child prompt was explicitly synthesized by the parent
  • later shorthand follow-up was effectively treated as pass-through
  • child saw the raw user text rather than a rewritten explicit task

Potentially relevant code paths:

  • src/gateway/server-methods/sessions.ts
  • src/gateway/session-subagent-reactivation.ts
  • thread-bound session continuation / reactivation behavior after sessions.send

The current accepted note for ACP session spawns says:

"thread-bound ACP session stays active after this task; continue in-thread for follow-ups."

That note is correct for continuity, but ambiguous enough that it can lead to a pass-through mental model in parent orchestration.

Proposed direction

  • Keep thread-bound ACP continuity
  • Clarify policy: continuity != verbatim relay
  • Ensure parent remains the default interpreter/orchestrator for follow-ups
  • Only relay exact raw messages when the user explicitly requests verbatim forwarding

Acceptance criteria

  • existing thread-bound ACP child session exists
  • user sends shorthand continuation request
  • parent rewrites it into a self-contained child task
  • child receives rewritten task, not raw user message
  • exact raw relay occurs only on explicit request

extent analysis

TL;DR

The parent assistant should rewrite shorthand follow-up messages into explicit child tasks before sending them to the bound ACP child session, rather than passing them through verbatim.

Guidance

  • Review the sessions_spawn function in src/gateway/server-methods/sessions.ts to ensure it correctly sets up thread-bound ACP sessions for continuity without implying verbatim relay.
  • Update the parent orchestrator to resolve references from the parent-thread context and rewrite follow-up messages into explicit child tasks before sending them to the child session.
  • Verify that the child session receives the rewritten task instead of the raw user message by checking the input received by the child session.
  • Consider adding an explicit flag or indicator for when the user requests verbatim forwarding to ensure the parent assistant behaves correctly in those cases.

Example

No specific code example is provided due to the lack of explicit code details in the issue, but the fix would involve modifying the parent orchestrator's logic to rewrite follow-up messages before sending them to the child session.

Notes

The proposed solution assumes that the current architecture allows for the parent assistant to interpret and rewrite follow-up messages. If the current implementation does not support this, additional changes may be necessary to enable this functionality.

Recommendation

Apply the proposed workaround by updating the parent orchestrator to rewrite follow-up messages into explicit child tasks, as this aligns with the expected behavior of preserving child session continuity without implying raw-message forwarding semantics.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

Thread binding should preserve child session continuity, but not imply raw-message forwarding semantics.

Default behavior should be:

  1. parent assistant reads the user's shorthand follow-up
  2. parent resolves references from parent-thread context
  3. parent rewrites the follow-up into an explicit child task
  4. parent sends the rewritten task to the bound ACP child session

Raw verbatim relay should happen only when the user explicitly asks for exact forwarding.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING