chore: update sweep records
[skip ci]
This commit is contained in:
parent
c7c6430dbd
commit
78699b104f
@ -1,5 +1,4 @@
|
||||
---
|
||||
review_comment_synced_at: 2026-05-06T10:12:11.145Z
|
||||
number: 78405
|
||||
repository: openclaw/openclaw
|
||||
type: issue
|
||||
@ -7,15 +6,15 @@ title: "Silent text-reply drops with visibleReplies=\"message_tool\" — improve
|
||||
url: https://github.com/openclaw/openclaw/issues/78405
|
||||
state_at_review: open
|
||||
item_created_at: 2026-05-06T10:04:10Z
|
||||
item_updated_at: 2026-05-06T10:06:48Z
|
||||
item_updated_at: 2026-05-08T23:13:33Z
|
||||
author: cedricjanssens
|
||||
author_association: NONE
|
||||
labels: []
|
||||
reviewed_at: 2026-05-06T10:11:37.664Z
|
||||
main_sha: 1fe15f230617f2e6842bd4e6583c913186517672
|
||||
reviewed_at: 2026-05-08T23:26:21.964Z
|
||||
main_sha: 71816a3fb24660c1c6af09d77485cf52e52607f3
|
||||
pull_head_sha: unknown
|
||||
latest_release: v2026.5.5
|
||||
latest_release_sha: b1abf9d8ae4410c6a6e08f7dfd2d617f4550281c
|
||||
latest_release: v2026.5.7
|
||||
latest_release_sha: eeef4864494f859838fec1586bedbab1f8fa5702
|
||||
fixed_release: unknown
|
||||
fixed_sha: unknown
|
||||
fixed_at: unknown
|
||||
@ -26,45 +25,45 @@ fixed_pr_merged_at: unknown
|
||||
fixed_pr_sha: unknown
|
||||
fixed_pr_confidence: unknown
|
||||
fixed_pr_source: unknown
|
||||
review_policy: 0c3089d8be55ac96
|
||||
review_policy: 421d766edf9f773b
|
||||
review_model: gpt-5.5
|
||||
review_reasoning_effort: high
|
||||
review_sandbox: danger-full-access
|
||||
review_service_tier: default
|
||||
review_prompt_chars: 47610
|
||||
review_static_prompt_chars: 32829
|
||||
review_context_chars: 13524
|
||||
review_prompt_chars: 64720
|
||||
review_static_prompt_chars: 33412
|
||||
review_context_chars: 30042
|
||||
review_schema_chars: 14081
|
||||
review_additional_prompt_chars: 0
|
||||
review_context_elapsed_ms: 1673
|
||||
review_codex_elapsed_ms: 252699
|
||||
review_context_elapsed_ms: 1515
|
||||
review_codex_elapsed_ms: 208055
|
||||
review_mode: propose
|
||||
review_status: complete
|
||||
local_checkout_access: verified
|
||||
item_snapshot_hash: 392afad58f46ac199b79a0dab65060c3059b555952dbd7413c9638910eaf453c
|
||||
close_comment_sha256: none
|
||||
review_comment_sha256: ea050d3cc7c6cd26fd7fc1e2da936bc8f68dee9b72d384d9db305e0869ae739a
|
||||
review_comment_id: 4386978352
|
||||
review_comment_url: https://github.com/openclaw/openclaw/issues/78405#issuecomment-4386978352
|
||||
decision: keep_open
|
||||
close_reason: none
|
||||
item_snapshot_hash: cd7f6073b2e925f8c527c3750db76aebb1121f216ba2534921e0ae2181b2d23d
|
||||
close_comment_sha256: 0c9a46f58c684407479467501096890447d1595b1536fd7e08965a1c9df75015
|
||||
review_comment_sha256: none
|
||||
review_comment_id: unknown
|
||||
review_comment_url: unknown
|
||||
decision: close
|
||||
close_reason: duplicate_or_superseded
|
||||
confidence: high
|
||||
action_taken: kept_open
|
||||
work_candidate: queue_fix_pr
|
||||
work_confidence: high
|
||||
work_priority: high
|
||||
work_status: candidate
|
||||
work_reason_sha256: 7760aba76381038d999062e3e32ecf82746b0f8da757f740cebf98fb8b1c7478
|
||||
work_prompt_sha256: 59f38586d4595b2f656101f91166febce10639bda0a848620ca8ed33e52467a1
|
||||
work_cluster_refs: ["https://github.com/openclaw/openclaw/issues/78405"]
|
||||
work_validation: ["pnpm test src/auto-reply/reply/dispatch-from-config.test.ts src/auto-reply/reply/source-reply-delivery-mode.test.ts extensions/discord/src/monitor/message-handler.process.test.ts","pnpm exec oxfmt --check --threads=1 src/auto-reply/reply/dispatch-from-config.ts src/auto-reply/reply/dispatch-from-config.test.ts src/auto-reply/reply/source-reply-delivery-mode.test.ts extensions/discord/src/monitor/message-handler.process.test.ts","pnpm check:changed"]
|
||||
work_likely_files: ["src/auto-reply/reply/dispatch-from-config.ts","src/auto-reply/reply/dispatch-from-config.test.ts","src/auto-reply/reply/source-reply-delivery-mode.ts","src/auto-reply/reply/source-reply-delivery-mode.test.ts","extensions/discord/src/monitor/message-handler.process.ts","extensions/discord/src/monitor/message-handler.process.test.ts","docs/channels/troubleshooting.md","CHANGELOG.md"]
|
||||
action_taken: proposed_close
|
||||
work_candidate: none
|
||||
work_confidence: low
|
||||
work_priority: low
|
||||
work_status: none
|
||||
work_reason_sha256: 726a66f43cfaa3abf58d320aa2a4f00c1124bbeda777fb12cf8e0d876ac46228
|
||||
work_prompt_sha256: none
|
||||
work_cluster_refs: []
|
||||
work_validation: []
|
||||
work_likely_files: []
|
||||
item_category: feature
|
||||
reproduction_status: source_reproducible
|
||||
reproduction_confidence: high
|
||||
requires_new_feature: true
|
||||
requires_new_config_option: false
|
||||
requires_product_decision: false
|
||||
requires_product_decision: true
|
||||
real_behavior_proof_status: not_applicable
|
||||
real_behavior_proof_evidence_kind: not_applicable
|
||||
real_behavior_proof_needs_contributor_action: false
|
||||
@ -84,49 +83,49 @@ Labels: none
|
||||
|
||||
Created at: May 6, 2026, 10:04 UTC
|
||||
|
||||
Updated at: May 6, 2026, 10:06 UTC
|
||||
Updated at: May 8, 2026, 23:13 UTC
|
||||
|
||||
Reviewed against: [1fe15f230617](https://github.com/openclaw/openclaw/commit/1fe15f230617f2e6842bd4e6583c913186517672)
|
||||
Reviewed against: [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb24660c1c6af09d77485cf52e52607f3)
|
||||
|
||||
Codex review: model gpt-5.5, reasoning high
|
||||
|
||||
Latest release at review time: [v2026.5.5](https://github.com/openclaw/openclaw/releases/tag/v2026.5.5) ([b1abf9d8ae44](https://github.com/openclaw/openclaw/commit/b1abf9d8ae4410c6a6e08f7dfd2d617f4550281c))
|
||||
Latest release at review time: [v2026.5.7](https://github.com/openclaw/openclaw/releases/tag/v2026.5.7) ([eeef4864494f](https://github.com/openclaw/openclaw/commit/eeef4864494f859838fec1586bedbab1f8fa5702))
|
||||
|
||||
Fixed in: not determined
|
||||
|
||||
## Decision
|
||||
|
||||
Keep open: kept open
|
||||
Close: duplicate or superseded
|
||||
|
||||
Confidence: high
|
||||
|
||||
Action taken: kept_open
|
||||
Action taken: proposed_close
|
||||
|
||||
## Summary
|
||||
|
||||
Keep open: current main documents the `message_tool` behavior and has a verbose pre-dispatch note, but the default runtime path can still finish successfully while suppressing normal final text without a default-visible warning or delivery signal.
|
||||
Close as duplicate: the same remaining visible-reply observability/fallback problem is already tracked by the open canonical report at https://github.com/openclaw/openclaw/issues/77320, and current source/tests show this issue is the same `message_tool_only` suppression path rather than a distinct Discord-only transport bug.
|
||||
|
||||
## What This Changes
|
||||
|
||||
Request to make text replies suppressed by `messages.groupChat.visibleReplies = "message_tool"` observable and easier to diagnose.
|
||||
The issue requests better observability when group/channel `message_tool` visible-reply mode suppresses normal text replies that did not use the message tool.
|
||||
|
||||
## Best Possible Solution
|
||||
|
||||
Add a deduped, default-visible suppression diagnostic for `message_tool_only` text finals, keep delivery semantics unchanged, and leave per-agent visible-reply overrides or deeper doctor history analysis for separate product work.
|
||||
Track the shared product decision and implementation under https://github.com/openclaw/openclaw/issues/77320: either add a scoped default-visible diagnostic for suppressed non-empty finals or explicitly choose a fallback policy without weakening the private-by-default room contract.
|
||||
|
||||
## Reproduction Assessment
|
||||
|
||||
Yes, at source level: current code resolves group/channel turns to `message_tool_only`, sets `suppressDelivery`, and skips normal final replies while tests assert no final dispatcher call. I did not execute a live Discord repro in this read-only pass.
|
||||
Yes, at source level: current main resolves group/channel turns to `message_tool_only`, suppresses automatic final delivery, and has tests proving no final reply is queued. I did not run a live Discord, WhatsApp, or Telegram scenario in this read-only review.
|
||||
|
||||
## Solution Assessment
|
||||
|
||||
Yes, the narrowest maintainable fix is an explicit diagnostic at the suppression decision rather than changing delivery behavior or adding per-agent config first. Current docs help, but they do not make the live silent-by-default runtime path observable.
|
||||
Yes for cleanup: keeping one canonical issue open is the best maintainer path because https://github.com/openclaw/openclaw/issues/77320 tracks the same shared root cause and policy choices. The eventual fix should be made once there, not split across channel-specific duplicates.
|
||||
|
||||
## Review Findings
|
||||
|
||||
Overall correctness: not a patch
|
||||
|
||||
Overall confidence: 0.86
|
||||
Overall confidence: 0.91
|
||||
|
||||
Full review comments:
|
||||
|
||||
@ -136,7 +135,7 @@ Full review comments:
|
||||
|
||||
Status: not_applicable
|
||||
|
||||
Summary: No patch is attached, and this ordinary observability issue is not security-sensitive.
|
||||
Summary: Non-PR issue review; no patch security or supply-chain review applies.
|
||||
|
||||
Concerns:
|
||||
|
||||
@ -150,104 +149,123 @@ Evidence kind: not_applicable
|
||||
|
||||
Needs contributor action: false
|
||||
|
||||
Summary: Not applicable for issue triage because there is no PR patch under review.
|
||||
Summary: Non-PR issue review; the external PR real-behavior proof gate does not apply.
|
||||
|
||||
## Work Candidate
|
||||
|
||||
Candidate: queue_fix_pr
|
||||
Candidate: none
|
||||
|
||||
Confidence: high
|
||||
Confidence: low
|
||||
|
||||
Priority: high
|
||||
Priority: low
|
||||
|
||||
Status: candidate
|
||||
Status: none
|
||||
|
||||
Reason: Safe repair candidate: the implicated suppression path is narrow, already covered by focused tests, and can gain diagnostics without changing reply delivery semantics.
|
||||
|
||||
Cluster refs:
|
||||
|
||||
- https://github.com/openclaw/openclaw/issues/78405
|
||||
|
||||
Likely files:
|
||||
|
||||
- src/auto-reply/reply/dispatch-from-config.ts
|
||||
- src/auto-reply/reply/dispatch-from-config.test.ts
|
||||
- src/auto-reply/reply/source-reply-delivery-mode.ts
|
||||
- src/auto-reply/reply/source-reply-delivery-mode.test.ts
|
||||
- extensions/discord/src/monitor/message-handler.process.ts
|
||||
- extensions/discord/src/monitor/message-handler.process.test.ts
|
||||
- docs/channels/troubleshooting.md
|
||||
- CHANGELOG.md
|
||||
|
||||
Validation:
|
||||
|
||||
- pnpm test src/auto-reply/reply/dispatch-from-config.test.ts src/auto-reply/reply/source-reply-delivery-mode.test.ts extensions/discord/src/monitor/message-handler.process.test.ts
|
||||
- pnpm exec oxfmt --check --threads=1 src/auto-reply/reply/dispatch-from-config.ts src/auto-reply/reply/dispatch-from-config.test.ts src/auto-reply/reply/source-reply-delivery-mode.test.ts extensions/discord/src/monitor/message-handler.process.test.ts
|
||||
- pnpm check:changed
|
||||
|
||||
## Repair Work Prompt
|
||||
|
||||
Fix https://github.com/openclaw/openclaw/issues/78405 by adding a focused observability signal for group/channel source replies suppressed by `sourceReplyDeliveryMode: "message_tool_only"`. In `src/auto-reply/reply/dispatch-from-config.ts`, emit a deduped default-visible warning or structured log when a non-reasoning final/text reply is suppressed because automatic source delivery is disabled and no visible message-tool output was queued. Keep delivery semantics unchanged, do not add per-agent config overrides, and stop for maintainer input if the fix grows into a doctor session-history scanner or broader product policy. Add or update regression coverage around the suppressed final path; update docs or `CHANGELOG.md` if the user-visible diagnostic text changes.
|
||||
Reason: Closing as a duplicate; any repair should be queued from the canonical open issue instead of this satellite report.
|
||||
|
||||
## Evidence
|
||||
|
||||
- **Group/channel policy defaults to tool-only visible replies:** Group or channel chats resolve to `message_tool_only` unless `messages.groupChat.visibleReplies` or the global visible-replies setting is `automatic`.
|
||||
- file: [src/auto-reply/reply/source-reply-delivery-mode.ts:28](https://github.com/openclaw/openclaw/blob/1fe15f230617f2e6842bd4e6583c913186517672/src/auto-reply/reply/source-reply-delivery-mode.ts#L28)
|
||||
- command: `nl -ba src/auto-reply/reply/source-reply-delivery-mode.ts | sed -n '1,130p'`
|
||||
- sha: [1fe15f230617](https://github.com/openclaw/openclaw/commit/1fe15f230617f2e6842bd4e6583c913186517672)
|
||||
- **Suppression is modeled as delivery suppression:** `message_tool_only` sets `suppressAutomaticSourceDelivery` and `suppressDelivery`, with the reason `sourceReplyDeliveryMode: message_tool_only`.
|
||||
- file: [src/auto-reply/reply/source-reply-delivery-mode.ts:72](https://github.com/openclaw/openclaw/blob/1fe15f230617f2e6842bd4e6583c913186517672/src/auto-reply/reply/source-reply-delivery-mode.ts#L72)
|
||||
- command: `nl -ba src/auto-reply/reply/source-reply-delivery-mode.ts | sed -n '1,130p'`
|
||||
- sha: [1fe15f230617](https://github.com/openclaw/openclaw/commit/1fe15f230617f2e6842bd4e6583c913186517672)
|
||||
- **Final replies are skipped under suppression:** The final-reply loop continues without delivery when `suppressDelivery` is true and the payload lacks the explicit bypass metadata, then returns a completed dispatch result with no queued final.
|
||||
- file: [src/auto-reply/reply/dispatch-from-config.ts:1534](https://github.com/openclaw/openclaw/blob/1fe15f230617f2e6842bd4e6583c913186517672/src/auto-reply/reply/dispatch-from-config.ts#L1534)
|
||||
- command: `nl -ba src/auto-reply/reply/dispatch-from-config.ts | sed -n '1518,1645p'`
|
||||
- sha: [1fe15f230617](https://github.com/openclaw/openclaw/commit/1fe15f230617f2e6842bd4e6583c913186517672)
|
||||
- **Existing runtime note is verbose/debug gated:** The only generic suppression log in this path is `logVerbose`, and `logVerbose` returns unless verbose mode or debug file logging is enabled.
|
||||
- file: [src/auto-reply/reply/dispatch-from-config.ts:1081](https://github.com/openclaw/openclaw/blob/1fe15f230617f2e6842bd4e6583c913186517672/src/auto-reply/reply/dispatch-from-config.ts#L1081)
|
||||
- command: `nl -ba src/auto-reply/reply/dispatch-from-config.ts | sed -n '1065,1100p'; nl -ba src/globals.ts | sed -n '1,28p'`
|
||||
- sha: [1fe15f230617](https://github.com/openclaw/openclaw/commit/1fe15f230617f2e6842bd4e6583c913186517672)
|
||||
- **Discord status reactions do not cover this default case:** Discord disables status reactions by default for tool-only source replies unless explicitly enabled, and its error reaction only follows dispatch errors or final delivery failures, not configured suppression with zero queued finals.
|
||||
- file: [extensions/discord/src/monitor/message-handler.process.ts:203](https://github.com/openclaw/openclaw/blob/1fe15f230617f2e6842bd4e6583c913186517672/extensions/discord/src/monitor/message-handler.process.ts#L203)
|
||||
- command: `nl -ba extensions/discord/src/monitor/message-handler.process.ts | sed -n '150,235p'; nl -ba extensions/discord/src/monitor/message-handler.process.ts | sed -n '700,830p'`
|
||||
- sha: [1fe15f230617](https://github.com/openclaw/openclaw/commit/1fe15f230617f2e6842bd4e6583c913186517672)
|
||||
- **Docs already describe the workaround:** The group-channel docs now say normal final answers stay private under `message_tool`, point to `didSendViaMessagingTool: false`, and recommend `messages.groupChat.visibleReplies: "automatic"` or a reliable tool-calling model.
|
||||
- file: [docs/channels/groups.md:43](https://github.com/openclaw/openclaw/blob/1fe15f230617f2e6842bd4e6583c913186517672/docs/channels/groups.md#L43)
|
||||
- command: `nl -ba docs/channels/groups.md | sed -n '35,96p'`
|
||||
- sha: [1fe15f230617](https://github.com/openclaw/openclaw/commit/1fe15f230617f2e6842bd4e6583c913186517672)
|
||||
- **Canonical related report:** https://github.com/openclaw/openclaw/issues/77320 is open and tracks the same root behavior: group/channel `visibleReplies="message_tool"` turns can finish with assistant text but no visible channel delivery, and the requested fix is a hard diagnostic or fallback policy.
|
||||
- command: `gh issue view 77320 --repo openclaw/openclaw --json number,title,state,comments,url`
|
||||
- **Current delivery-mode policy:** Group/channel chats resolve to `message_tool_only` unless configured `automatic`, and that mode sets `suppressAutomaticSourceDelivery` and `suppressDelivery`.
|
||||
- file: [src/auto-reply/reply/source-reply-delivery-mode.ts:37](https://github.com/openclaw/openclaw/blob/71816a3fb24660c1c6af09d77485cf52e52607f3/src/auto-reply/reply/source-reply-delivery-mode.ts#L37)
|
||||
- command: `nl -ba src/auto-reply/reply/source-reply-delivery-mode.ts | sed -n '1,140p'`
|
||||
- sha: [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb24660c1c6af09d77485cf52e52607f3)
|
||||
- **Current suppression implementation:** The final-reply loop continues without delivery when `suppressDelivery` is true and the payload is not explicitly marked to bypass source-reply suppression.
|
||||
- file: [src/auto-reply/reply/dispatch-from-config.ts:1567](https://github.com/openclaw/openclaw/blob/71816a3fb24660c1c6af09d77485cf52e52607f3/src/auto-reply/reply/dispatch-from-config.ts#L1567)
|
||||
- command: `nl -ba src/auto-reply/reply/dispatch-from-config.ts | sed -n '1500,1575p'`
|
||||
- sha: [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb24660c1c6af09d77485cf52e52607f3)
|
||||
- **Regression coverage for this path:** Focused tests assert default group/channel turns use `message_tool_only`, return `queuedFinal: false`, and do not call `sendFinalReply`.
|
||||
- file: [src/auto-reply/reply/dispatch-from-config.test.ts:4748](https://github.com/openclaw/openclaw/blob/71816a3fb24660c1c6af09d77485cf52e52607f3/src/auto-reply/reply/dispatch-from-config.test.ts#L4748)
|
||||
- command: `nl -ba src/auto-reply/reply/dispatch-from-config.test.ts | sed -n '4748,4810p'`
|
||||
- sha: [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb24660c1c6af09d77485cf52e52607f3)
|
||||
- **Docs describe the current workaround:** The group docs now say normal final answers stay private in `message_tool` mode, point to `didSendViaMessagingTool: false`, and recommend `messages.groupChat.visibleReplies: "automatic"` to restore automatic visible final replies.
|
||||
- file: [docs/channels/groups.md:43](https://github.com/openclaw/openclaw/blob/71816a3fb24660c1c6af09d77485cf52e52607f3/docs/channels/groups.md#L43)
|
||||
- command: `nl -ba docs/channels/groups.md | sed -n '1,105p'`
|
||||
- sha: [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb24660c1c6af09d77485cf52e52607f3)
|
||||
- **Feature history:** Merged https://github.com/openclaw/openclaw/pull/73046 introduced the safer Discord/group visible-reply behavior and touched the central docs, dispatch, config, and tests.
|
||||
- command: `gh pr view 73046 --repo openclaw/openclaw --json number,title,state,author,mergedAt,mergeCommit,files,url,body`
|
||||
- sha: [3c636208b0a0](https://github.com/openclaw/openclaw/commit/3c636208b0a00ff325e4f48d048d1fd9820f3ea0)
|
||||
- **Additional context on this issue:** The follow-up comments report the same failure signature on WhatsApp groups and Telegram forum topics, which supports a shared core visible-reply suppression issue rather than a channel-specific Discord root cause.
|
||||
- command: `gh issue view 78405 --repo openclaw/openclaw --json number,title,state,comments,url`
|
||||
|
||||
## Likely Related People
|
||||
|
||||
- **vincentkoc:** introduced behavior and recent maintainer
|
||||
- reason: Available blame/history for the visible-reply resolver, Discord handling, and current docs points to Vincent Koc on the shallow-boundary commit that contains the current `message_tool_only` policy and diagnostics text.
|
||||
- **scoootscooob:** introduced behavior
|
||||
- reason: Authored merged https://github.com/openclaw/openclaw/pull/73046, which made group/channel visible output depend on explicit message-tool sends and touched the central resolver, dispatch tests, docs, and Discord handling.
|
||||
- confidence: medium
|
||||
- commits: 53809e52e91644722252cf7b2ebeea41c63041fd
|
||||
- files: src/auto-reply/reply/source-reply-delivery-mode.ts, src/auto-reply/reply/dispatch-from-config.ts, extensions/discord/src/monitor/message-handler.process.ts, docs/channels/groups.md, docs/channels/troubleshooting.md
|
||||
- commits: 3c636208b0a00ff325e4f48d048d1fd9820f3ea0, 85e4ec1fb1ac78262c1bd7048638ae000e89dc55
|
||||
- files: src/auto-reply/reply/source-reply-delivery-mode.ts, src/auto-reply/reply/dispatch-from-config.ts, src/auto-reply/reply/dispatch-from-config.test.ts, docs/channels/groups.md, docs/channels/discord.md, extensions/discord/src/monitor/message-handler.process.ts
|
||||
- **steipete:** recent maintainer
|
||||
- reason: Recent commits on the visible-reply policy, doctor/docs warning placement, and private group reply behavior changed the same resolver/docs surface after the original group/channel policy landed.
|
||||
- confidence: medium
|
||||
- commits: 8989ceee50abd77c33352e36468b341f40591a5e, fc1e2c505ad0ba173b80e0193064798856caf5f4, 82ca6ecdde801a4a858cf63f6400d25bec004308, 2493ab197852ae2f117563582fe948c1bbfa57f9
|
||||
- files: src/auto-reply/reply/source-reply-delivery-mode.ts, src/auto-reply/reply/dispatch-from-config.ts, docs/channels/groups.md, docs/channels/discord.md
|
||||
|
||||
## Risks / Open Questions
|
||||
|
||||
- I did not run a live Discord gateway scenario in this read-only review; the reproduction is source- and test-backed.
|
||||
- A default-visible warning needs care to avoid noisy logs for intentional tool-only rooms.
|
||||
- none
|
||||
|
||||
## Close Comment
|
||||
|
||||
_No close comment posted._
|
||||
Thanks for the context here. I swept through the related work, and this is now duplicate or superseded.
|
||||
|
||||
Close as duplicate: the same remaining visible-reply observability/fallback problem is already tracked by the open canonical report at https://github.com/openclaw/openclaw/issues/77320, and current source/tests show this issue is the same `message_tool_only` suppression path rather than a distinct Discord-only transport bug.
|
||||
|
||||
So I’m closing this here and keeping the remaining discussion on the canonical linked item.
|
||||
|
||||
<details>
|
||||
<summary>Review details</summary>
|
||||
|
||||
Best possible solution:
|
||||
|
||||
Track the shared product decision and implementation under https://github.com/openclaw/openclaw/issues/77320: either add a scoped default-visible diagnostic for suppressed non-empty finals or explicitly choose a fallback policy without weakening the private-by-default room contract.
|
||||
|
||||
Do we have a high-confidence way to reproduce the issue?
|
||||
|
||||
Yes, at source level: current main resolves group/channel turns to `message_tool_only`, suppresses automatic final delivery, and has tests proving no final reply is queued. I did not run a live Discord, WhatsApp, or Telegram scenario in this read-only review.
|
||||
|
||||
Is this the best way to solve the issue?
|
||||
|
||||
Yes for cleanup: keeping one canonical issue open is the best maintainer path because https://github.com/openclaw/openclaw/issues/77320 tracks the same shared root cause and policy choices. The eventual fix should be made once there, not split across channel-specific duplicates.
|
||||
|
||||
Security review:
|
||||
|
||||
Security review: Non-PR issue review; no patch security or supply-chain review applies.
|
||||
|
||||
What I checked:
|
||||
|
||||
- **Canonical related report:** https://github.com/openclaw/openclaw/issues/77320 is open and tracks the same root behavior: group/channel `visibleReplies="message_tool"` turns can finish with assistant text but no visible channel delivery, and the requested fix is a hard diagnostic or fallback policy.
|
||||
- **Current delivery-mode policy:** Group/channel chats resolve to `message_tool_only` unless configured `automatic`, and that mode sets `suppressAutomaticSourceDelivery` and `suppressDelivery`. ([`src/auto-reply/reply/source-reply-delivery-mode.ts:37`](https://github.com/openclaw/openclaw/blob/71816a3fb24660c1c6af09d77485cf52e52607f3/src/auto-reply/reply/source-reply-delivery-mode.ts#L37), [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb24660c1c6af09d77485cf52e52607f3))
|
||||
- **Current suppression implementation:** The final-reply loop continues without delivery when `suppressDelivery` is true and the payload is not explicitly marked to bypass source-reply suppression. ([`src/auto-reply/reply/dispatch-from-config.ts:1567`](https://github.com/openclaw/openclaw/blob/71816a3fb24660c1c6af09d77485cf52e52607f3/src/auto-reply/reply/dispatch-from-config.ts#L1567), [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb24660c1c6af09d77485cf52e52607f3))
|
||||
- **Regression coverage for this path:** Focused tests assert default group/channel turns use `message_tool_only`, return `queuedFinal: false`, and do not call `sendFinalReply`. ([`src/auto-reply/reply/dispatch-from-config.test.ts:4748`](https://github.com/openclaw/openclaw/blob/71816a3fb24660c1c6af09d77485cf52e52607f3/src/auto-reply/reply/dispatch-from-config.test.ts#L4748), [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb24660c1c6af09d77485cf52e52607f3))
|
||||
- **Docs describe the current workaround:** The group docs now say normal final answers stay private in `message_tool` mode, point to `didSendViaMessagingTool: false`, and recommend `messages.groupChat.visibleReplies: "automatic"` to restore automatic visible final replies. Public docs: [`docs/channels/groups.md`](https://docs.openclaw.ai/channels/groups). ([`docs/channels/groups.md:43`](https://docs.openclaw.ai/channels/groups), [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb24660c1c6af09d77485cf52e52607f3))
|
||||
- **Feature history:** Merged https://github.com/openclaw/openclaw/pull/73046 introduced the safer Discord/group visible-reply behavior and touched the central docs, dispatch, config, and tests. ([3c636208b0a0](https://github.com/openclaw/openclaw/commit/3c636208b0a00ff325e4f48d048d1fd9820f3ea0))
|
||||
|
||||
Likely related people:
|
||||
|
||||
- **scoootscooob:** Authored merged https://github.com/openclaw/openclaw/pull/73046, which made group/channel visible output depend on explicit message-tool sends and touched the central resolver, dispatch tests, docs, and Discord handling. (role: introduced behavior; confidence: medium; commits: [3c636208b0a0](https://github.com/openclaw/openclaw/commit/3c636208b0a00ff325e4f48d048d1fd9820f3ea0), [85e4ec1fb1ac](https://github.com/openclaw/openclaw/commit/85e4ec1fb1ac78262c1bd7048638ae000e89dc55); files: `src/auto-reply/reply/source-reply-delivery-mode.ts`, `src/auto-reply/reply/dispatch-from-config.ts`, `src/auto-reply/reply/dispatch-from-config.test.ts`)
|
||||
- **steipete:** Recent commits on the visible-reply policy, doctor/docs warning placement, and private group reply behavior changed the same resolver/docs surface after the original group/channel policy landed. (role: recent maintainer; confidence: medium; commits: [8989ceee50ab](https://github.com/openclaw/openclaw/commit/8989ceee50abd77c33352e36468b341f40591a5e), [fc1e2c505ad0](https://github.com/openclaw/openclaw/commit/fc1e2c505ad0ba173b80e0193064798856caf5f4), [82ca6ecdde80](https://github.com/openclaw/openclaw/commit/82ca6ecdde801a4a858cf63f6400d25bec004308); files: `src/auto-reply/reply/source-reply-delivery-mode.ts`, `src/auto-reply/reply/dispatch-from-config.ts`, `docs/channels/groups.md`)
|
||||
|
||||
Codex review notes: model gpt-5.5, reasoning high; reviewed against [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb24660c1c6af09d77485cf52e52607f3).
|
||||
|
||||
</details>
|
||||
|
||||
## GitHub Snapshot
|
||||
|
||||
- comments: 1
|
||||
- timeline events: 1
|
||||
- related items: 0
|
||||
- comments: 3
|
||||
- timeline events: 5
|
||||
- related items: 1
|
||||
- PR files: 0
|
||||
- PR commits: 0
|
||||
|
||||
## Review Telemetry
|
||||
|
||||
- prompt chars: 47610
|
||||
- static prompt chars: 32829
|
||||
- context chars: 13524
|
||||
- prompt chars: 64720
|
||||
- static prompt chars: 33412
|
||||
- context chars: 30042
|
||||
- schema chars: 14081
|
||||
- additional prompt chars: 0
|
||||
- context collection ms: 1673
|
||||
- Codex review ms: 252699
|
||||
- context collection ms: 1515
|
||||
- Codex review ms: 208055
|
||||
|
||||
@ -3,15 +3,15 @@
|
||||
"slug": "openclaw-openclaw",
|
||||
"display_name": "OpenClaw",
|
||||
"target_repo": "openclaw/openclaw",
|
||||
"state": "Apply finished",
|
||||
"detail": "Apply/comment-sync run finished with 0 fresh closes out of requested limit 0. See apply-report.json for per-item results.",
|
||||
"run_url": "https://github.com/openclaw/clawsweeper/actions/runs/25584366338",
|
||||
"planned_count": null,
|
||||
"planned_capacity": null,
|
||||
"planned_shards": null,
|
||||
"active_codex": null,
|
||||
"due_backlog": null,
|
||||
"oldest_unreviewed_at": null,
|
||||
"capacity_reason": null,
|
||||
"updated_at": "2026-05-08T23:25:19.477Z"
|
||||
"state": "Hot intake publish complete",
|
||||
"detail": "Merged 1 hot intake artifacts for run 25584307417 without full folder reconciliation. Captured 1 shard metrics; 0 shards reported non-success review status.",
|
||||
"run_url": "https://github.com/openclaw/clawsweeper/actions/runs/25584307417",
|
||||
"planned_count": 1,
|
||||
"planned_capacity": 1,
|
||||
"planned_shards": 1,
|
||||
"active_codex": 0,
|
||||
"due_backlog": 1111,
|
||||
"oldest_unreviewed_at": "2026-05-05T13:38:28Z",
|
||||
"capacity_reason": "saturated: due backlog filled planned capacity",
|
||||
"updated_at": "2026-05-08T23:27:38.711Z"
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user