-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
[Bug]: Nextcloud Talk channel agent silently skips message tool, marks reply 'completed' without posting #76980
Copy link
Copy link
Open
Labels
P1High-priority user-facing bug, regression, or broken workflow.High-priority user-facing bug, regression, or broken workflow.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for 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.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Description
Metadata
Metadata
Assignees
Labels
P1High-priority user-facing bug, regression, or broken workflow.High-priority user-facing bug, regression, or broken workflow.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for 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.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Type
Fields
Priority
None yet
Bug type
Behavior bug (agent fails to deliver reply, no error)
Summary
In the
@openclaw/nextcloud-talkchannel, the embedded agent harness inconsistently calls themessagetool to deliver replies back to Nextcloud Talk. When it doesn't, the agent streams generated text via thetext_endchannel — which is a no-op for the nextcloud-talk plugin'sdeliveryMode: "direct"outbound config — then logs amessage processed: outcome=completeddiagnostic. From the operator's perspective the run looks successful, but no chat message ever lands in Nextcloud.Webhook ingress, signature verification, OpenRouter/LLM call, agent reasoning, session-state housekeeping all work. Only the outbound back-to-NC step is silently dropped.
Environment
2026.5.2 (8b2a6e5)— installed vianpm install -g openclawon Debian 13 trixie LXD container, aarch64@openclaw/[email protected]— installed viaopenclaw plugins install33.0.0, spreed (Talk app)23.0.3--feature webhook --feature response --feature reactiongroupPolicy: open,rooms."*".requireMention: false,network.dangerouslyAllowPrivateNetwork: true,agents.defaults.model: openrouter/openrouter/autoReproduce
baseUrl,botSecretFile,groupPolicy=open,rooms."*".requireMention=false,network.dangerouslyAllowPrivateNetwork=true(we're on a LAN-internal Nextcloud whose DNS resolves to 192.168.x.x).models.providers.openrouter.{baseUrl, apiKey, models:[{id:"openrouter/auto",api:"openai-completions"}]},agents.defaults.model = "openrouter/openrouter/auto".occ talk:bot:install OpenClaw <secret> http://<heisenberg-ip>:8788/nextcloud-talk-webhook --feature webhook --feature response --feature reactionocc talk:bot:setup <bot-id> <room-token>Observed
embedded run agent end: isError=false.[agent/embedded] Skipping message_end safety send for text_end channel - content already delivered via text_endDelivery suppressed by sourceReplyDeliveryMode: message_tool_only for session ... — agent will still process the messagetool=messageinvocation in logs.[diagnostic] message processed: channel=nextcloud-talk ... outcome=completed duration=XXXXmsoc_commentsfor the room shows only the user's message; no bot reply.On the very FIRST run after a clean session reset (delete
<sessionId>.jsonl,<sessionId>.trajectory.jsonl, scrub the entry fromsessions.json, restartopenclaw.service), the agent does call themessagetool and the reply lands. The bot post appears inoc_commentsas expected. Subsequent messages in the same session revert to thetext_end-streamed-into-void behavior.Expected
For a channel with
outbound.base.deliveryMode: "direct"(which the nextcloud-talk plugin sets atsrc/channel.ts:169), every reply should either:tool=messageinvocation that callssendMessageNextcloudTalk, orbut never silently mark
outcome=completedafter streaming text into a sink that the channel doesn't consume.Suspect locations
@openclaw/nextcloud-talksrc/channel.ts:163-185— setsoutbound.base.deliveryMode: "direct"and providessendTextadapters, but doesn't appear to wire thetext_endstreaming path to anything.dist/plugin-sdk/src/auto-reply/...—sourceReplyDeliveryMode = "message_tool_only"is inferred from the channel'sdeliveryMode: "direct", but the agent harness then doesn't always honor it.tool=messageresults in the persisted session/trajectory (we hit aSsrfBlockedErroron first attempt before addingdangerouslyAllowPrivateNetwork; afterwards the agent stopped calling the tool entirely until the session was wiped).Workaround
Delete the session's
*.jsonl+*.trajectory.jsonl+ the corresponding entry insessions.json, then restart the gateway. First reply after restart usually goes through, subsequent ones may not.Logs (representative slice — successful first reply, then failed second)
Related
Possibly the same root cause as #34111 (closed stale, no resolution) but with a much sharper repro: webhook + signature + LLM all confirmed working, the failure is exclusively in the agent → outbound-tool path.