openclaw - ✅(Solved) Fix [Telegram] Heartbeat poll prompt text visible to user in DM conversation [1 pull requests, 1 comments, 2 participants]

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…
GitHub stats
openclaw/openclaw#75134Fetched 2026-05-01 05:37:48
View on GitHub
Comments
1
Participants
2
Timeline
2
Reactions
2
Author
Timeline (top)
commented ×1cross-referenced ×1

The raw [OpenClaw heartbeat poll] trigger text is showing up as visible messages in Telegram DM conversations. Users should never see the heartbeat poll prompt — only the agent's response (if any) should be delivered, and HEARTBEAT_OK acks should be suppressed by default.

Root Cause

The raw [OpenClaw heartbeat poll] trigger text is showing up as visible messages in Telegram DM conversations. Users should never see the heartbeat poll prompt — only the agent's response (if any) should be delivered, and HEARTBEAT_OK acks should be suppressed by default.

Fix Action

Fixed

PR fix notes

PR #75167: fix(telegram,slack,discord): suppress heartbeat poll prompt in chat interfaces

Description (problem / solution / changelog)

Summary

  • Problem: Internal system messages used for heartbeat polling ([OpenClaw heartbeat poll]) were leaking into user DM conversations in Telegram, Slack, and Discord.
  • Why it matters: These messages create system noise, cluttering the chat and leaking internal orchestration details to the user.
  • What changed:
    • Moved the HEARTBEAT_TRANSCRIPT_PROMPT constant to src/infra/heartbeat-events.ts to make it accessible via the plugin-sdk.
    • Updated the visibility logic in the Telegram, Slack, and Discord extensions to explicitly filter out this specific prompt string.
  • What did NOT change: No changes were made to the core heartbeat polling logic or the webchat display projections.

Change Type

  • Bug fix

Scope

  • Integrations
  • API / contracts

Linked Issue/PR

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

Root Cause

The shouldTreatDeliveredTextAsVisible helper in the channel extensions was overly broad, treating any non-final message block as visible content, which included the automated heartbeat triggers.

Changed files

  • docs/.generated/plugin-sdk-api-baseline.sha256 (modified, +2/-2)
  • docs/help/faq.md (modified, +17/-1)
  • docs/platforms/macos.md (modified, +4/-0)
  • extensions/telegram/src/channel.ts (modified, +0/-1)
  • skills/apple-notes/SKILL.md (modified, +23/-0)
  • src/auto-reply/heartbeat-filter.ts (modified, +1/-1)
  • src/auto-reply/heartbeat.ts (modified, +1/-1)
  • src/auto-reply/reply/get-reply-run.ts (modified, +1/-1)
  • src/infra/heartbeat-events.ts (modified, +2/-0)
  • src/infra/outbound/deliver.ts (modified, +5/-0)

Code Example

{
  "agents": {
    "defaults": {
      "heartbeat": {
        "includeReasoning": true
      }
    }
  },
  "channels": {
    "telegram": {
      "enabled": true,
      "dmPolicy": "pairing",
      "groupPolicy": "allowlist",
      "streamMode": "partial"
    }
  }
}
RAW_BUFFERClick to expand / collapse

Description

The raw [OpenClaw heartbeat poll] trigger text is showing up as visible messages in Telegram DM conversations. Users should never see the heartbeat poll prompt — only the agent's response (if any) should be delivered, and HEARTBEAT_OK acks should be suppressed by default.

Expected behavior

Heartbeat poll prompts are internal system messages. They should be invisible to the user on all channel surfaces. Per the docs:

"Control UI and WebChat history hide heartbeat prompts and OK-only acknowledgments."

The same should apply to Telegram (and all channel plugins).

Actual behavior

The literal text [OpenClaw heartbeat poll] appears as a visible message in the Telegram DM chat. The user sees repeated system messages every heartbeat cycle. The agent responds correctly with HEARTBEAT_OK (which is properly suppressed), but the prompt itself leaks.

Reproduction

  1. Configure heartbeat with default settings (no explicit target or visibility overrides)
  2. Have an active Telegram DM session
  3. Wait for heartbeat cycles
  4. Observe [OpenClaw heartbeat poll] appearing as visible messages in the Telegram chat

Config

{
  "agents": {
    "defaults": {
      "heartbeat": {
        "includeReasoning": true
      }
    }
  },
  "channels": {
    "telegram": {
      "enabled": true,
      "dmPolicy": "pairing",
      "groupPolicy": "allowlist",
      "streamMode": "partial"
    }
  }
}

No explicit heartbeat.target, no channel-level heartbeat visibility config.

Environment

  • OpenClaw version: 2026.4.27
  • Channel: Telegram
  • OS: macOS (Darwin arm64)

Notes

The existing visibility controls (showOk, showAlerts, useIndicator) govern response delivery, not prompt visibility. The prompt should never be rendered on any external channel surface regardless of config.

extent analysis

TL;DR

The issue can be fixed by adding a configuration to suppress the heartbeat poll prompt in the Telegram channel.

Guidance

  • Review the configuration for the Telegram channel and add a setting to hide heartbeat prompts, if available.
  • Check the OpenClaw documentation for any specific settings or flags that control the visibility of heartbeat poll prompts.
  • Verify that the heartbeat configuration under agents.defaults does not override any channel-specific settings.
  • Consider adding a feature request to the OpenClaw project to explicitly control heartbeat prompt visibility across all channels.

Example

No code snippet is provided as the issue is related to configuration and not code.

Notes

The provided configuration does not include any explicit settings for hiding heartbeat prompts, and the existing visibility controls only govern response delivery, not prompt visibility.

Recommendation

Apply a workaround by adding a custom configuration setting to suppress the heartbeat poll prompt in the Telegram channel, if possible, as the current version of OpenClaw (2026.4.27) does not seem to have a built-in solution for this issue.

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…

FAQ

Expected behavior

Heartbeat poll prompts are internal system messages. They should be invisible to the user on all channel surfaces. Per the docs:

"Control UI and WebChat history hide heartbeat prompts and OK-only acknowledgments."

The same should apply to Telegram (and all channel plugins).

Still need to ship something?

×6

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

Back to top recommendations

TRENDING