Skip to content

fix(channels): honor /verbose in group sessions#85488

Merged
steipete merged 27 commits into
openclaw:mainfrom
kurplunkin:codex/telegram-group-verbose-directive-clean
May 23, 2026
Merged

fix(channels): honor /verbose in group sessions#85488
steipete merged 27 commits into
openclaw:mainfrom
kurplunkin:codex/telegram-group-verbose-directive-clean

Conversation

@kurplunkin

@kurplunkin kurplunkin commented May 22, 2026

Copy link
Copy Markdown
Contributor

Summary

This fixes normal group verbose tool/progress summary delivery by honoring explicit group /verbose state.

  • Problem: normal group sessions suppressed text-only tool/progress summaries even when /verbose on was enabled for that group.
  • Solution: make shared group dispatch respect explicit group /verbose session state.
  • What changed: normal groups remain quiet by default, but /verbose on now allows tool/progress summaries; /verbose off hides them again.
  • What did NOT change (scope boundary): no new config flag, no new permissions, no token handling changes, no command/tool execution behavior changes, and inherited verbose defaults do not opt normal groups into visible summaries.

Motivation

Private/group QA needs to show what the agent actually did when verbose mode is explicitly enabled. /verbose already controls that visibility, but normal group dispatch ignored it.

Although the live proof uses Telegram because that is the configured QA environment, the implementation is intentionally in shared group/ACP dispatch code so group-capable channels use the same verbose gating policy.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor required for the fix
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

  • Closes #
  • Related #
  • This PR fixes a bug or regression

Real behavior proof (required for external PRs)

  • Behavior or issue addressed:
    /verbose on did not show tool/progress summaries in a normal Telegram group.

  • Real environment tested:
    Private Telegram QA supergroup with a Driver bot prompting a SUT bot running OpenClaw from this PR branch. Tokens, chat IDs, and private config are omitted.

  • Exact steps or command run after this patch:

    1. Built current PR worktree at 207742e506.
    2. Started the isolated QA SUT gateway from that build.
    3. Sent /verbose@qa_sut_bot off.
    4. Prompted: Use exactly one shell command: pwd. Then reply exactly: qa-current-verbose-off-done.
    5. Sent /verbose@qa_sut_bot on.
    6. Prompted: Use exactly one shell command: pwd. Then reply exactly: qa-current-verbose-on-done.
  • Evidence after fix (screenshot, recording, terminal capture, console output, redacted runtime log, linked artifact, or copied live output):
    Copied live output from the Telegram QA group after the fix:

    /verbose@qa_sut_bot off
    QA SUT: ⚙️ Verbose logging disabled.
    
    @qa_sut_bot Use exactly one shell command: pwd. Then reply exactly: qa-current-verbose-off-done.
    QA SUT: qa-current-verbose-off-done
    
    /verbose@qa_sut_bot on
    QA SUT: ⚙️ Verbose logging enabled.
    
    @qa_sut_bot Use exactly one shell command: pwd. Then reply exactly: qa-current-verbose-on-done.
    QA SUT: 🛠️ pwd
    QA SUT: qa-current-verbose-on-done
    
  • Observed result after fix:
    /verbose off hides the tool summary. /verbose on shows 🛠️ pwd before the final reply.

  • What was not tested:
    I did not run the full repository test suite on this low-memory VPS. I do not have live Slack/Matrix/WhatsApp bots configured for proof, so non-Telegram channels are covered by focused shared-dispatch tests rather than live channel proof.

  • Before evidence:
    Copied live Telegram transcript from origin/main showed that /verbose on still produced only the final marker in a normal group:

    /verbose@qa_sut_bot off
    QA SUT: ⚙️ Verbose logging disabled.
    
    @qa_sut_bot Use exactly one shell command: pwd. Then reply exactly: qa-main-verbose-off-done.
    QA SUT: qa-main-verbose-off-done
    
    /verbose@qa_sut_bot on
    QA SUT: ⚙️ Verbose logging enabled.
    
    @qa_sut_bot Use exactly one shell command: pwd. Then reply exactly: qa-main-verbose-on-done.
    QA SUT: qa-main-verbose-on-done
    

Root Cause (if applicable)

  • Root cause:
    Shared group dispatch had a normal-group suppression path for text-only tool/progress summaries that did not account for explicit /verbose session state.

  • Missing detection / guardrail:
    Existing tests covered default group suppression and topic/non-DM behavior, but not explicit /verbose on in normal groups.

  • Contributing context:
    Telegram QA exposed the issue, but the fix is in shared group dispatch/projection logic.

Regression Test Plan (if applicable)

  • Coverage level that should have caught this:

    • Unit test
    • Seam / integration test
    • End-to-end test
    • Existing coverage already sufficient
  • Target test or file:

    • src/auto-reply/reply/dispatch-from-config.test.ts
    • src/auto-reply/reply/acp-projector.test.ts
    • src/plugin-sdk/acp-runtime.test.ts
  • Scenario the test should lock in:
    Groups suppress tool summaries by default, allow them only when explicit group /verbose on is active, respect live /verbose off, preserve hidden-tool text boundaries, and keep existing topic/non-DM behavior unchanged.

  • Why this is the smallest reliable guardrail:
    The bug is in shared dispatch/projection gates, so focused tests cover it without requiring live credentials for every channel.

  • Existing test that already covers this (if any):
    Existing coverage was partial; new focused tests cover this case.

  • If no new test is added, why not:
    N/A. New focused tests are included.

User-visible / Behavior Changes

/verbose on now shows tool/progress summaries in normal group sessions. Groups remain quiet by default, with inherited verbose defaults, and with /verbose off.

Diagram (if applicable)

Before:
group + /verbose on -> tool summary suppressed -> final reply only

After:
group + default/off -> final reply only
group + explicit /verbose on -> tool summary -> final reply

Security Impact (required)

  • New permissions/capabilities? No
  • Secrets/tokens handling changed? No
  • New/changed network calls? No
  • Command/tool execution surface changed? No execution behavior changed; visible summary output can change only after explicit group /verbose on.
  • Data access scope changed? No
  • If any Yes, explain risk + mitigation:
    Risk: visible tool/progress summaries can expose command names or arguments to group members. Mitigation: normal groups remain quiet by default; inherited verbose defaults do not opt normal groups into visible summaries; users must explicitly enable /verbose on in that group session, and /verbose off hides summaries again.

Repro + Verification

Environment

  • OS: Linux VPS
  • Runtime/container: OpenClaw gateway built from this PR branch
  • Model/provider: existing QA SUT config
  • Integration/channel: Telegram normal supergroup
  • Relevant config (redacted): private QA group with Driver bot and SUT bot

Steps

  1. Start QA SUT from this PR branch.
  2. Send /verbose@qa_sut_bot off.
  3. Prompt SUT to run pwd and reply with a marker.
  4. Confirm only the final marker appears.
  5. Send /verbose@qa_sut_bot on.
  6. Prompt SUT to run pwd and reply with a marker.
  7. Confirm 🛠️ pwd appears before the final marker.

Expected

Group tool/progress summaries are hidden with default/off state and visible with explicit /verbose on.

Actual

Matches expected in live Telegram QA proof.

Evidence

Attach at least one:

  • Failing test/log before + passing after
  • Trace/log snippets / copied live output
  • Screenshot/recording
  • Perf numbers (if relevant)

Human Verification (required)

What you personally verified (not just CI), and how:

  • AI assistance disclosure: Codex helped implement, review, and test this PR; I reviewed the diff and verified the behavior in a live OpenClaw Telegram QA setup.

  • Verified scenarios:

    • origin/main: /verbose on still produced final reply only in a normal Telegram group.
    • This PR at 207742e506: /verbose off produced final reply only.
    • This PR at 207742e506: /verbose on produced visible 🛠️ pwd, then final reply.
  • Local checks:

    • git diff --check
    • ./node_modules/.bin/oxlint src/auto-reply/reply/dispatch-from-config.ts src/auto-reply/reply/dispatch-from-config.test.ts
    • OPENCLAW_TEST_PROJECTS_SERIAL=1 OPENCLAW_VITEST_MAX_WORKERS=1 node scripts/run-vitest.mjs src/auto-reply/reply/dispatch-from-config.test.ts -t "group tool summaries|group progress callbacks|live group tool-summary state|verbose progress" -> 10 passed | 135 skipped
    • OPENCLAW_TEST_PROJECTS_SERIAL=1 OPENCLAW_VITEST_MAX_WORKERS=1 node scripts/run-vitest.mjs src/auto-reply/reply/dispatch-from-config.test.ts -> 145 passed
  • Codex review:

    • Local Codex review passed before the final explicit-group-verbose tightening.
    • After the final tightening, focused tests and live Telegram proof above were rerun on 207742e506.
  • Edge cases checked:

    • Groups stay quiet by default.
    • Inherited agents.defaults.verboseDefault: "on" does not opt normal groups into visible summaries.
    • Explicit group /verbose on enables summaries.
    • /verbose off hides them again.
  • What you did not verify:

    • Full repository suite.
    • Live non-Telegram channels.

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

Compatibility / Migration

  • Backward compatible? Yes
  • Config/env changes? No
  • Migration needed? No
  • If yes, exact upgrade steps: N/A

Risks and Mitigations

  • Risk: group members can see tool/progress summaries when verbose mode is enabled.
    • Mitigation: normal groups remain quiet by default; inherited verbose defaults do not enable normal group summaries; visible summaries require explicit /verbose on in that group session, and /verbose off hides them again.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation channel: telegram Channel integration: telegram size: S triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels May 22, 2026
@clawsweeper

clawsweeper Bot commented May 22, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge.

Latest ClawSweeper review: 2026-05-23 21:34 UTC / May 23, 2026, 5:34 PM ET.

Workflow note: Future ClawSweeper reviews update this same comment in place.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

PR Surface
Source +189, Tests +1085, Docs +6. Total +1280 across 18 files.

View PR surface stats
Area Files Added Removed Net
Source 10 242 53 +189
Tests 6 1106 21 +1085
Docs 2 6 0 +6
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 18 1354 74 +1280

Summary
The branch changes shared dispatch, ACP projection, queued follow-up progress, docs, changelog, and tests so verbose state can control tool/progress summaries in group and channel sessions.

Reproducibility: yes. source inspection on current main shows normal groups are hard-suppressed regardless of verbose state, and the PR body includes before/after Telegram output. I did not run the live transport scenario in this read-only review.

PR rating
Overall: 🧂 unranked krab
Proof: 🦪 silver shellfish
Patch quality: 🧂 unranked krab
Summary: The PR has a useful bug-fix direction, but stale proof plus a P1 room-disclosure compatibility bug make it not quality-ready yet.

Rank-up moves:

  • Restore explicit room opt-in semantics or get maintainer sign-off for inherited verbose defaults in rooms.
  • Preserve or explicitly version the reply_dispatch hook contract.
  • Refresh real Telegram or equivalent transport proof at the current head with private details redacted.
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Real behavior proof
Needs stronger real behavior proof before merge: The PR body includes copied Telegram live output, but it was captured at 207742e506 while current head is 65643c20223071b2fe0eccfee840569a0c1e2adc; add current-head live output, logs, screenshot, or recording with private IDs, tokens, phone numbers, and endpoints redacted, then update the PR body to trigger re-review.

Mantis proof suggestion
A native Telegram recording would directly show whether room-visible tool summaries appear only after explicit /verbose on at the current head. A maintainer can ask Mantis to capture proof by posting a new PR comment that starts with the OpenClaw Mantis account mention, followed by:

telegram desktop proof: verify a normal group stays final-only by default/off and shows a tool summary before the final reply only after /verbose on, with private details redacted.

Risk before merge

  • Existing group/channel deployments with agents.defaults.verboseDefault or an agent verboseDefault set to on can start showing tool names, command arguments, or progress summaries in rooms after upgrade without a per-session /verbose on.
  • The public reply_dispatch event now exposes shouldSendToolSummaries as a live getter-only property while the type remains a plain boolean; external plugin compatibility needs maintainer acceptance or a narrower internal path.
  • The supplied Telegram live proof was captured on an older worktree and does not prove the current head after later dispatch and ACP changes.

Maintainer options:

  1. Repair The Room Visibility Gate (recommended)
    Restore an explicit per-session verbose opt-in for normal group/channel summaries, keep inherited defaults quiet for rooms, preserve or version the hook contract, and refresh current-head proof before merge.
  2. Accept Broader Verbose Defaults Deliberately
    Maintainers can choose inherited verboseDefault room visibility, but the PR body, docs, tests, and security note need to state that existing configured installs may expose summaries after upgrade.
  3. Pause Until Current-Head Proof
    Pause merge review until the contributor or maintainer provides redacted live proof from head 65643c20223071b2fe0eccfee840569a0c1e2adc.

Next step before merge
Needs maintainer policy/security review and current-head transport proof because the remaining blocker is room disclosure semantics, not a safe autonomous repair lane.

Security
Needs attention: The diff changes privacy-sensitive group/channel tool-summary visibility and currently allows inherited verbose defaults to expose summaries without explicit room opt-in.

Review findings

  • [P1] Keep room progress behind explicit verbose opt-in — src/auto-reply/reply/dispatch-from-config.ts:1496-1498
  • [P2] Preserve the reply_dispatch event contract — src/auto-reply/reply/dispatch-from-config.ts:399-402
Review details

Best possible solution:

Keep non-direct group/channel progress private by default, make tool/progress summaries visible only for an explicit session /verbose on or /verbose full, preserve the public plugin hook contract, and refresh current-head real transport proof.

Do we have a high-confidence way to reproduce the issue?

Yes, source inspection on current main shows normal groups are hard-suppressed regardless of verbose state, and the PR body includes before/after Telegram output. I did not run the live transport scenario in this read-only review.

Is this the best way to solve the issue?

No, not as written: the central fix direction is right, but the current implementation is too broad for room privacy and changes a public hook contract. The narrower solution is an explicit session verbose gate for non-direct rooms plus current-head proof.

Label changes:

  • add P1: The PR changes privacy-sensitive group/channel progress visibility and can affect real messaging-room workflows now.
  • remove P2: Current review triage priority is P1, so this older priority label is no longer current.

Label justifications:

  • P1: The PR changes privacy-sensitive group/channel progress visibility and can affect real messaging-room workflows now.
  • merge-risk: 🚨 compatibility: Existing users with inherited verbose defaults or external reply-dispatch hooks can see behavior changes after upgrade.
  • merge-risk: 🚨 security-boundary: Tool/progress summaries may reveal command names, arguments, file paths, or operational context to group/channel participants.
  • rating: 🧂 unranked krab: Current PR rating is 🧂 unranked krab because proof is 🦪 silver shellfish, patch quality is 🧂 unranked krab, and The PR has a useful bug-fix direction, but stale proof plus a P1 room-disclosure compatibility bug make it not quality-ready yet.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: The PR body includes copied Telegram live output, but it was captured at 207742e506 while current head is 65643c20223071b2fe0eccfee840569a0c1e2adc; add current-head live output, logs, screenshot, or recording with private IDs, tokens, phone numbers, and endpoints redacted, then update the PR body to trigger re-review.
  • mantis: telegram-visible-proof: Mantis should capture Telegram visible proof. The change affects visible Telegram group chat behavior and can be demonstrated in a short Telegram Desktop proof of default/off/on verbose states.

Full review comments:

  • [P1] Keep room progress behind explicit verbose opt-in — src/auto-reply/reply/dispatch-from-config.ts:1496-1498
    This now keys group/channel tool summaries only off the effective verbose level, and the added Matrix group test proves agents.defaults.verboseDefault: "on" will expose 🔧 exec: pwd without a per-room /verbose on. That contradicts the PR's stated safety boundary and can leak command names or arguments into existing rooms after upgrade; keep inherited defaults quiet for non-direct rooms unless maintainers explicitly approve and document the broader policy.
    Confidence: 0.88
  • [P2] Preserve the reply_dispatch event contract — src/auto-reply/reply/dispatch-from-config.ts:399-402
    shouldSendToolSummaries is a public PluginHookReplyDispatchEvent boolean, but this helper now defines it as a getter-only property. External hooks that treat the event as a normal mutable object can behave differently or throw in strict mode; keep the public value as a snapshot and pass the live predicate through an internal ACP-only path, or make the contract change explicit with compatibility coverage.
    Confidence: 0.76

Overall correctness: patch is incorrect
Overall confidence: 0.86

Security concerns:

  • [medium] Inherited verbose defaults can expose room progress — src/auto-reply/reply/dispatch-from-config.ts:1496
    The branch removes the group/channel suppression predicate and the added Matrix group test expects inherited verboseDefault: "on" to publish a tool summary, which can reveal command names or arguments to room participants after upgrade.
    Confidence: 0.87

What I checked:

  • Current-main group suppression: Current main suppresses normal group tool/progress summaries with the hard ctx.ChatType !== "group" || ctx.IsForum === true predicate, which matches the reported missing /verbose on behavior in ordinary groups. (src/auto-reply/reply/dispatch-from-config.ts:1479, a705a9c911bc)
  • PR removes room-type gate: The PR replaces the room-type predicate with shouldSuppressDefaultToolProgressMessages = () => !shouldEmitVerboseProgress(), so group/channel delivery now follows the effective verbose level rather than a per-room explicit opt-in gate. (src/auto-reply/reply/dispatch-from-config.ts:1496, 65643c202230)
  • Inherited default exposure is locked in by test: The added test expects a Matrix group with agents.defaults.verboseDefault: "on" to send 🔧 exec: pwd, which contradicts the PR body's stated boundary that inherited verbose defaults do not opt normal groups into visible summaries. (src/auto-reply/reply/dispatch-from-config.test.ts:1591, 65643c202230)
  • Public hook descriptor changed: The PR creates reply_dispatch events with a getter-only shouldSendToolSummaries property while the public hook type remains a plain boolean, making the plugin API behavior compatibility-sensitive. (src/auto-reply/reply/dispatch-from-config.ts:393, 65643c202230)
  • Live proof is stale for current head: The PR body says the copied Telegram live proof was built at 207742e506, while the live PR head is 65643c20223071b2fe0eccfee840569a0c1e2adc after later force-pushed commits. (65643c202230)
  • Feature history: History around this path includes prior verbose-progress work by Mariano Belinky, Slack room suppression by Peter Steinberger, and Discord explicit verbose delivery by JC, which are the most relevant routing signals for review. (src/auto-reply/reply/dispatch-from-config.ts:1477, b66454115801)

Likely related people:

  • steipete: Authored the latest PR head commit and multiple recent current-main changes in reply dispatch, ACP hooks, and room-progress suppression, including the Slack room suppression history. (role: recent area contributor and branch maintainer; confidence: high; commits: 65643c202230, 76a4c167f7ef, 82ce30b7895a; files: src/auto-reply/reply/dispatch-from-config.ts, src/auto-reply/reply/followup-runner.ts, src/plugin-sdk/acp-runtime-backend.ts)
  • mbelinky: Authored the earlier current-main commit that made progress updates respect verbose state in the same dispatch file. (role: introduced related verbose-progress behavior; confidence: medium; commits: b66454115801; files: src/auto-reply/reply/dispatch-from-config.ts)
  • anyech: Authored the merged Discord verbose tool-progress delivery fix that changed the same dispatch and follow-up progress paths this PR builds on. (role: adjacent feature owner; confidence: medium; commits: 57da466ecbb5; files: src/auto-reply/reply/dispatch-from-config.ts, src/auto-reply/reply/followup-runner.ts)

Codex review notes: model gpt-5.5, reasoning high; reviewed against a705a9c911bc.

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. mantis: telegram-visible-proof Mantis should capture Telegram visible proof. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. labels May 22, 2026
@clawsweeper

clawsweeper Bot commented May 22, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg

🎁 Pass real behavior proof to wake the egg and unlock a hatchable treat.

Where did the egg go?
  • The egg game starts only after the PR passes the real-behavior proof check.
  • Before that, no creature or rarity is rolled. The treat waits for real proof.
  • This is still just collectible flavor: proof affects review readiness, not creature quality.

@openclaw-barnacle openclaw-barnacle Bot added proof: supplied External PR includes structured after-fix real behavior proof. and removed triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels May 22, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels May 22, 2026
@kurplunkin kurplunkin force-pushed the codex/telegram-group-verbose-directive-clean branch from 7011157 to 2538280 Compare May 22, 2026 20:17
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 22, 2026
@kurplunkin

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented May 22, 2026

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Command router queued. I will update this comment with the next step.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. status: 🔁 re-review loop A fresh ClawSweeper review was explicitly requested after the latest review. and removed status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels May 22, 2026
@clawsweeper

clawsweeper Bot commented May 22, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@kurplunkin kurplunkin marked this pull request as ready for review May 22, 2026 20:25
@clawsweeper clawsweeper Bot removed the rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. label May 22, 2026
@steipete steipete force-pushed the codex/telegram-group-verbose-directive-clean branch from 39d91c3 to 65643c2 Compare May 23, 2026 21:28
@clawsweeper clawsweeper Bot removed the P2 Normal backlog priority with limited blast radius. label May 23, 2026
@steipete

Copy link
Copy Markdown
Contributor

Verification for the maintainer fixup stack:

Behavior addressed: /verbose now works from direct chats, groups, channels, forum topics, and ACP-bound sessions while remaining quiet by default when verbose is off.

Real environment tested: Blacksmith Testbox via Crabbox, GitHub PR CI on head 12cb4f9f0e974bad4baa07927826269cfc0151b7.

Exact steps or command run after this patch:

  • node scripts/crabbox-wrapper.mjs run --provider blacksmith-testbox --blacksmith-org openclaw --blacksmith-workflow .github/workflows/ci-check-testbox.yml --blacksmith-job check --blacksmith-ref main --idle-timeout 90m --ttl 240m --timing-json -- CI=1 NODE_OPTIONS=--max-old-space-size=4096 OPENCLAW_TEST_PROJECTS_SERIAL=1 OPENCLAW_VITEST_MAX_WORKERS=1 OPENCLAW_VITEST_NO_OUTPUT_TIMEOUT_MS=900000 OPENCLAW_TESTBOX=1 OPENCLAW_TESTBOX_REMOTE_RUN=1 pnpm test src/auto-reply/reply/followup-runner.test.ts src/auto-reply/reply/dispatch-from-config.test.ts src/auto-reply/reply/acp-projector.test.ts src/auto-reply/reply/dispatch-acp-command-bypass.test.ts src/plugin-sdk/acp-runtime.test.ts src/agents/pi-embedded-runner/run/payloads.test.ts src/agents/pi-embedded-runner/run/payloads.errors.test.ts
  • pnpm lint --threads=8
  • pnpm tsgo:prod
  • pnpm run lint:extensions:channels
  • pnpm run test:extensions:package-boundary:compile && pnpm run test:extensions:package-boundary:canary
  • /Users/steipete/Projects/agent-scripts/skills/autoreview/scripts/autoreview --mode branch --base origin/main --prompt-file /tmp/openclaw-pr85488-autoreview.XXXXXX.md

Evidence after fix: Testbox tbx_01ksbdmk0mt7ank0nenwv5vkrn passed 334 focused tests; autoreview reported no accepted/actionable findings; PR CI is green on 12cb4f9f0e974bad4baa07927826269cfc0151b7.

Observed result after fix: hidden/default-quiet tool progress is blocked before TTS/media conversion, queued follow-up progress and compaction notices follow live verbose state, ACP /verbose and /v including colon forms bypass runtime dispatch, and full/static tool-error detail behavior is preserved.

What was not tested: no fresh live Telegram/Slack manual room run; covered by focused dispatch/followup/ACP regression tests plus full PR CI.

@kurplunkin

Copy link
Copy Markdown
Contributor Author

Verification for the maintainer fixup stack:

Behavior addressed: /verbose now works from direct chats, groups, channels, forum topics, and ACP-bound sessions while remaining quiet by default when verbose is off.

Real environment tested: Blacksmith Testbox via Crabbox, GitHub PR CI on head 12cb4f9f0e974bad4baa07927826269cfc0151b7.

Exact steps or command run after this patch:

  • node scripts/crabbox-wrapper.mjs run --provider blacksmith-testbox --blacksmith-org openclaw --blacksmith-workflow .github/workflows/ci-check-testbox.yml --blacksmith-job check --blacksmith-ref main --idle-timeout 90m --ttl 240m --timing-json -- CI=1 NODE_OPTIONS=--max-old-space-size=4096 OPENCLAW_TEST_PROJECTS_SERIAL=1 OPENCLAW_VITEST_MAX_WORKERS=1 OPENCLAW_VITEST_NO_OUTPUT_TIMEOUT_MS=900000 OPENCLAW_TESTBOX=1 OPENCLAW_TESTBOX_REMOTE_RUN=1 pnpm test src/auto-reply/reply/followup-runner.test.ts src/auto-reply/reply/dispatch-from-config.test.ts src/auto-reply/reply/acp-projector.test.ts src/auto-reply/reply/dispatch-acp-command-bypass.test.ts src/plugin-sdk/acp-runtime.test.ts src/agents/pi-embedded-runner/run/payloads.test.ts src/agents/pi-embedded-runner/run/payloads.errors.test.ts
  • pnpm lint --threads=8
  • pnpm tsgo:prod
  • pnpm run lint:extensions:channels
  • pnpm run test:extensions:package-boundary:compile && pnpm run test:extensions:package-boundary:canary
  • /Users/steipete/Projects/agent-scripts/skills/autoreview/scripts/autoreview --mode branch --base origin/main --prompt-file /tmp/openclaw-pr85488-autoreview.XXXXXX.md

Evidence after fix: Testbox tbx_01ksbdmk0mt7ank0nenwv5vkrn passed 334 focused tests; autoreview reported no accepted/actionable findings; PR CI is green on 12cb4f9f0e974bad4baa07927826269cfc0151b7.

Observed result after fix: hidden/default-quiet tool progress is blocked before TTS/media conversion, queued follow-up progress and compaction notices follow live verbose state, ACP /verbose and /v including colon forms bypass runtime dispatch, and full/static tool-error detail behavior is preserved.

What was not tested: no fresh live Telegram/Slack manual room run; covered by focused dispatch/followup/ACP regression tests plus full PR CI.

Thanks Pete for the fixup and merge! Happy we got that working

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling docs Improvements or additions to documentation mantis: telegram-visible-proof Mantis should capture Telegram visible proof. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. P1 High-priority user-facing bug, regression, or broken workflow. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. size: XL status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants