openclaw - 💡(How to fix) Fix /verbose off suppresses channel/group live tool progress callbacks

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…

When /verbose off is set in a group or group-channel session, channel-owned native progress callbacks (onToolStart, onItemEvent, onPlanUpdate, onApprovalEvent, onCommandOutput, onPatchSummary, onCompactionStart/End) are incorrectly suppressed. These callbacks should still be forwarded to allow channels (Discord, Telegram, Slack, etc.) to relay tool progress through their native mechanisms — only message-level tool-progress text should be suppressed by verbose off.

Error Message

In group and group-channel sessions with /verbose off, ALL progress callbacks are silenced — not just message-level tool summaries. This means channels that rely on native progress hooks receive no progress events at all when verbose is off in groups. Direct sessions are unaffected because the guard only allowed native progress callbacks for chatType === "direct".

Root Cause

In group and group-channel sessions with /verbose off, ALL progress callbacks are silenced — not just message-level tool summaries. This means channels that rely on native progress hooks receive no progress events at all when verbose is off in groups. Direct sessions are unaffected because the guard only allowed native progress callbacks for chatType === "direct".

Fix Action

Workaround

Before the fix, the only workaround is to keep verbose on in group sessions, which may leak internal tool output text to group members. After the fix (removing chatType === "direct" guard), channel-owned progress callbacks fire in all chat types while verbose off still suppresses text-level tool summaries.

Code Example

const shouldAllowQuietDirectNativeProgressCallbacks = (options?: {
  requiresToolSummaryVisibility?: boolean;
}) =>
  options?.requiresToolSummaryVisibility === true &&
  params.replyOptions?.suppressDefaultToolProgressMessages === true &&
  chatType === "direct";  // ← This line gates out group/group-channel

---

const shouldForwardProgressCallback = (options?: { ... }) => {
  if (
    options?.requiresToolSummaryVisibility === true &&
    !shouldSendToolSummaries() &&
    !shouldAllowQuietChannelOwnedProgressCallbacks(options)
  ) {
    return false;  // ← progress callbacks blocked entirely for group sessions
  }
  ...
};

---

const shouldAllowQuietChannelOwnedProgressCallbacks = (options?: {
  requiresToolSummaryVisibility?: boolean;
}) =>
  options?.requiresToolSummaryVisibility === true &&
  params.replyOptions?.suppressDefaultToolProgressMessages === true;
RAW_BUFFERClick to expand / collapse

Summary

When /verbose off is set in a group or group-channel session, channel-owned native progress callbacks (onToolStart, onItemEvent, onPlanUpdate, onApprovalEvent, onCommandOutput, onPatchSummary, onCompactionStart/End) are incorrectly suppressed. These callbacks should still be forwarded to allow channels (Discord, Telegram, Slack, etc.) to relay tool progress through their native mechanisms — only message-level tool-progress text should be suppressed by verbose off.

Intended behavior

When /verbose off is active and a channel provides its own progress-relay hooks (via replyOptions progress callbacks), progress events should still be forwarded to the channel so that native channel-level progress displays (embeds, typing indicators, progress bars, etc.) continue to work. Only the text-level "tool summary" messages should be silenced.

Observed behavior

In group and group-channel sessions with /verbose off, ALL progress callbacks are silenced — not just message-level tool summaries. This means channels that rely on native progress hooks receive no progress events at all when verbose is off in groups. Direct sessions are unaffected because the guard only allowed native progress callbacks for chatType === "direct".

Source evidence

In src/auto-reply/reply/dispatch-from-config.ts, the guard shouldAllowQuietDirectNativeProgressCallbacks (now renamed shouldAllowQuietChannelOwnedProgressCallbacks) required chatType === "direct":

const shouldAllowQuietDirectNativeProgressCallbacks = (options?: {
  requiresToolSummaryVisibility?: boolean;
}) =>
  options?.requiresToolSummaryVisibility === true &&
  params.replyOptions?.suppressDefaultToolProgressMessages === true &&
  chatType === "direct";  // ← This line gates out group/group-channel

This guard is consulted in shouldForwardProgressCallback:

const shouldForwardProgressCallback = (options?: { ... }) => {
  if (
    options?.requiresToolSummaryVisibility === true &&
    !shouldSendToolSummaries() &&
    !shouldAllowQuietChannelOwnedProgressCallbacks(options)
  ) {
    return false;  // ← progress callbacks blocked entirely for group sessions
  }
  ...
};

The fix removes the chatType === "direct" restriction, allowing channel-owned native progress callbacks to fire in all chat types:

const shouldAllowQuietChannelOwnedProgressCallbacks = (options?: {
  requiresToolSummaryVisibility?: boolean;
}) =>
  options?.requiresToolSummaryVisibility === true &&
  params.replyOptions?.suppressDefaultToolProgressMessages === true;

Repro outline

  1. Open a group or group-channel session (e.g., Discord server channel, Telegram group, Slack channel).
  2. Set verbose off: /verbose off
  3. Trigger any tool call (e.g., run a shell command).
  4. Observe: channel-level progress hooks (onToolStart, onItemEvent, onPlanUpdate, etc.) never fire.
  5. Compare: direct session with same settings → progress hooks work correctly.

Impact

  • Channels that provide native progress displays (Discord progress embeds, Telegram streaming preview edits, etc.) go completely silent in group sessions when verbose is off.
  • Users in group chats have no visibility into agent tool activity when verbose is disabled.
  • The asymmetry between direct and group sessions is unexpected — verbose off should suppress text-level tool summaries uniformly, not block native channel relay hooks.

Workaround

Before the fix, the only workaround is to keep verbose on in group sessions, which may leak internal tool output text to group members. After the fix (removing chatType === "direct" guard), channel-owned progress callbacks fire in all chat types while verbose off still suppresses text-level tool summaries.

Test evidence

Test updated from "suppresses channel-owned group progress callbacks while verbose is off" to "forwards channel-owned group progress callbacks while verbose is off". The test now asserts that all progress callbacks (onToolStart, onItemEvent, onPlanUpdate, onApprovalEvent, onCommandOutput, onPatchSummary, onCompactionStart/End) are invoked when verbose is off in a group session, while onToolResult and sendToolResult remain suppressed. 169 tests pass.

Related

  • #80989 — /progress command to toggle tool-call progress
  • #73795 — toolProgress config stripped from channels without streaming.mode
  • #87536,#87395 — native hook relay bridge issues (related system surface)

cc @Peetiegonzalez

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…

Still need to ship something?

×6

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

Back to top recommendations

TRENDING