fix(discord): avoid duplicate typing keepalive for tool replies#84288
Conversation
|
Codex review: needs changes before merge. Reviewed June 24, 2026, 1:15 PM ET / 17:15 UTC. Summary PR surface: Source +30, Tests +90. Total +120 across 9 files. Reproducibility: yes. at source level: current main and Review metrics: 1 noteworthy metric.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Mantis proof suggestion Risk before merge
Maintainer options:
Copy recommended automerge instructionNext step before merge
Security Review findings
Review detailsBest possible solution: Make exactly one Discord typing lifecycle owner refresh native typing for message-tool-only replies, preserve explicit typing configuration, and verify the selected path against the canonical issue. Do we have a high-confidence way to reproduce the issue? Yes at source level: current main and Is this the best way to solve the issue? No as currently patched: suppressing the core keepalive is plausible, but the branch must also handle the Discord-owned callback keepalive or explicitly narrow the intended fix to duplicate-loop removal only. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 47d3d1b1f1b2. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +30, Tests +90. Total +120 across 9 files. View PR surface stats
Acceptance criteria:
What I checked:
Likely related people:
What the crustacean ranks mean
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. How this review workflow works
|
5e8971f to
3439ab1
Compare
|
@clawsweeper re-review Follow-up for the compatibility/rank-up note is pushed in What changed:
Validation:
|
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
77fd809 to
ffbde4c
Compare
|
Merged via squash.
|
…claw#84288) Co-authored-by: Andrew Meyer <[email protected]>
…claw#84288) Co-authored-by: Andrew Meyer <[email protected]>
Summary
message_tool_onlyruns, and disable the Discord plugin's nested callback keepalive.typingKeepalive?: booleanto reply options, kept shared reply typing periodic by default, passtypingKeepalive: falsefrom Discord only whensourceReplyDeliveryMode === "message_tool_only"and no explicittypingModeis configured, and set the Discord channel callback keepalive interval to0.agents.defaults.typingMode/session.typingModecontinues to win, non-Discord channels keep the existing shared keepalive default unless they opt out, typing is not disabled by default, ack reactions are unchanged, and this does not add a Discord "stop typing" call because Discord does not expose one.Motivation
messagetool delivery. That made it look as if a second response was still being generated even when the transcript showed no fallback or second assistant run.Change Type (select all)
Scope (select all touched areas)
Linked Issue/PR
Real behavior proof (required for external PRs)
#founders-club(channel id ending5258), Pi runtime,openai/gpt-5.5,messages.groupChat.visibleReplies: "message_tool".#founders-club.1506376771032056000.gpt-5.5tool call at2026-05-19T19:23:44.803Z.2026-05-19T19:23:45.823Z.messagetool result at2026-05-19T19:23:45.982Zwith primary Discord message id1506376839398952981.pnpm build && pnpm check && pnpm test; I ran focused validation for the touched auto-reply and Discord extension surfaces.Root Cause (if applicable)
messagetool, a late refresh can outlive the actual response and appear as phantom typing.Regression Test Plan (if applicable)
src/auto-reply/reply/reply-utils.test.tsextensions/discord/src/monitor/message-handler.process.test.tstypingModepreserves the core keepalive path.User-visible / Behavior Changes
typingMode, OpenClaw still sends the initial typing cue but does not periodically refresh it. Explicitly configured typing behavior and non-Discord shared defaults are preserved.Diagram (if applicable)
Security Impact (required)
Yes/No): NoYes/No): NoYes/No): NoYes/No): NoYes/No): NoYes, explain risk + mitigation: N/ARepro + Verification
Environment
openai/gpt-5.5, Pi runtimemessages.groupChat.visibleReplies: "message_tool", no explicittypingModeSteps
message(action=send).Expected
Actual
Evidence
Focused validation run on this branch:
Human Verification (required)
sourceReplyDeliveryMode === "message_tool_only"and typing mode is not configured.Review Conversations
Compatibility / Migration
Yes/No): YesYes/No): NoYes/No): NoRisks and Mitigations
agents.defaults.typingModeorsession.typingModecontinues to opt into configured behavior; non-Discord channels keep their existing shared keepalive default unless they explicitly opt out.