-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
WhatsApp inter_session delivery requests can be wrongly suppressed as REPLY_SKIP / ANNOUNCE_SKIP / NO_REPLY #49223
Copy link
Copy link
Open
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.ClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.Good issue quality with a plausible reproduction path needing some confirmation.staleMarked as stale due to inactivityMarked as stale due to inactivity
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.ClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.Good issue quality with a plausible reproduction path needing some confirmation.staleMarked as stale due to inactivityMarked as stale due to inactivity
Type
Fields
Priority
None yet
Summary
When a WhatsApp group session receives an
inter_sessionturn that is actually asking it to post a normal human message into the group, the session can incorrectly chooseREPLY_SKIP,ANNOUNCE_SKIP, orNO_REPLYinstead of emitting the requested message.This appears to be a precedence bug between:
inter_sessionanti-ping-pong / silent-reply heuristics, andThe result is confusing because:
So the failure is not routing or authorization. It is the wrong default decision path for certain
inter_sessionturns.Minimal repro
Configure a WhatsApp group/session where a given authorized sender is allowed to trigger replies without needing an @ mention.
Send an
inter_sessionmessage into that group session that asks it to post a normal human message into the WhatsApp group.Observe that the target session may reply with one of:
REPLY_SKIPANNOUNCE_SKIPNO_REPLYThen send a stronger explicit instruction such as:
Observe that the same session can now emit the requested normal group message successfully.
This shows that:
inter_sessionhandling is incorrectly suppressing a real delivery intentExpected behavior
If an
inter_sessionturn is clearly an explicit delivery request to emit a normal channel message, the target session should prefer normal message emission over genericREPLY_SKIP/ANNOUNCE_SKIP/NO_REPLYbehavior, assuming:Actual behavior
The target session can treat the turn as meta-coordination and fall back to skip/silent tokens, even though the intended effect is a normal outbound group reply.
Why this matters
This can waste a lot of tokens and operator time because the system looks half-broken:
Likely root cause
There seems to be a prompt/runtime seam around
inter_sessionguidance.OpenClaw appears to explicitly teach
inter_sessionrecipients that they may reply with:REPLY_SKIPto stop ping-pongANNOUNCE_SKIPto remain silentThat guidance is useful for genuine agent-to-agent coordination chatter, but it appears too broad when the inbound turn is actually an explicit request to post a normal message into the destination channel.
In other words, the model is encouraged to classify some delivery requests as coordination chatter, and once that happens, skip/silent control tokens outrank the actual outbound messaging intent.
Proposed fix
1) Narrow the skip-token path for
inter_sessionFor
inter_sessionturns, if the message is an explicit delivery request to emit a normal channel reply, that delivery intent should outrank generic anti-ping-pong/silent heuristics.2) Improve
inter_sessioninjected guidanceThe prompt/runtime guidance should distinguish between:
REPLY_SKIP/ANNOUNCE_SKIPare appropriate3) Consider a typed delivery mode for
sessions_sendFree-text
inter_sessioninstructions are ambiguous.A more robust design would be a typed intent, conceptually something like:
sessions_send(..., mode: "deliver-message")or equivalent structured metadata so the receiving session knows:
4) Add a regression test
Suggested regression test shape:
inter_sessionREPLY_SKIP,ANNOUNCE_SKIP,NO_REPLYAdditional note
This bug is easy to misdiagnose as:
But the tell is: a more literal forced instruction often succeeds immediately in the same session. That means delivery is available; the wrong branch is being chosen earlier.