-
-
Notifications
You must be signed in to change notification settings - Fork 79.2k
Slack message_tool_only source replies fail because durable send requires reconcileUnknownSend #84078
Copy link
Copy link
Closed
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.
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.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Summary
Slack source replies can be forced through the
messagetool viasourceReplyDeliveryMode: "message_tool_only"(for example for Slack group/channel visible replies when configured that way). In that path,message(action="send")currently performs a required durable-send preflight that unconditionally requiresreconcileUnknownSend.The Slack adapter does not appear to expose
reconcileUnknownSend, so the send is rejected before any fallback/best-effort delivery can happen:This turns a safe source-reply delivery policy into a visible reply failure for Slack.
Environment
openclaw 2026.5.18messagetoolEvidence from installed package
source-reply-delivery-mode-*can choosemessage_tool_onlyfor group/channel chats when visible replies are configured asmessage_tool:dist/message-*.jsthen derives required message-send capabilities withreconcileUnknownSend: trueunconditionally:When Slack cannot satisfy that capability, core throws:
The plugin SDK docs say best-effort final delivery does not require
reconcileUnknownSend, but required durable final delivery does:Observed behavior
In a Slack channel/thread, a visible assistant reply that must use the
messagetool fails with:Using
bestEffort: trueavoids this particular preflight failure and allows Slack delivery, but the source-reply contract/runtime hint does not make that automatic for the assistant. The model/tool path can therefore be instructed to send viamessage, while the default durable send path is impossible for Slack.Expected behavior
One of these should happen:
reconcileUnknownSend, so required durable message sends are supported; ormessage_tool_onlymode automatically degrade to best-effort when required durability is unavailable, preserving visible delivery semantics; orbestEffort: truefallback explicit for Slack adapters without reconciliation.Actual behavior
The send is rejected by durable capability preflight, and the source reply is not posted unless the agent manually retries with
bestEffort: true.Impact
message_tool_onlydelivery policy is enabled.Related issues
reconcileUnknownSendsymptom).Private Slack channel content is redacted; I can provide additional local session metadata if useful.