Visible-answer retry overrides heartbeat NO_REPLY — unsolicited channel message delivered · Issue #140052 · openclaw/openclaw · GitHub
Skip to content

Visible-answer retry overrides heartbeat NO_REPLY — unsolicited channel message delivered #140052

Description

@laurencebrown

Version: 2026.9.1 (ad6fe23), macOS arm64, node 26.7.0

Summary: An hourly heartbeat job correctly decided NO_REPLY (quiet morning, nothing pending), but the runtime's reasoning-only retry machinery treated the silent turn as a failure and force-generated a visible answer, which was then delivered to the Telegram channel. The user received an unsolicited interactive-sounding message ("…let me know what you'd like to work on or check") at 09:35 despite the heartbeat's own bookkeeping recording deliveryStatus: "not-requested".

Gateway log evidence (2026-09-06, Europe/Zurich):

09:34:36 reasoning-only assistant turn detected: runId=c6ca3d91-… sessionId=454f7473-…
         provider=openrouter/deepseek/deepseek-v4-flash — retrying 1/2 with visible-answer continuation
09:35:04 telegram outbound send ok accountId=default chatId=<redacted> messageId=109
         operation=sendMessage deliveryKind=text chunkCount=1

Expected: when a heartbeat (or any turn whose outcome is an intentional NO_REPLY / silent result) produces a reasoning-only response, the visible-answer retry should not convert it into a delivered channel message. The retry mechanism and the heartbeat's silence contract currently contradict each other, and the forced message also bypasses the heartbeat's delivery bookkeeping (not-requested was recorded even though a send happened; a query of audit_events for the window returned zero rows).

Notes: the heartbeat model here is a small OpenRouter model (deepseek-v4-flash) which frequently emits reasoning-only turns when the correct answer is "say nothing" — so this combination triggers regularly, not as a one-off.

Activity

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

Metadata

Metadata

Assignees

Labels

P2Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:otherThis issue has meaningful maintainer-visible impact outside the owned taxonomy.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.no-staleExclude from stale automation

Type

No type

Fields

Priority

None yet

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions