openclaw - 💡(How to fix) Fix [Bug]: openclaw health --json reports telegram.running=false while probe succeeds and status --deep shows Telegram OK [1 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#59287Fetched 2026-04-08 02:26:23
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Author
Participants

openclaw health --json reports Telegram running=false even while the Telegram probe succeeds and openclaw status --deep shows Telegram OK.

On the same system and same runtime state:

  • openclaw status --deep shows Telegram healthy/OK
  • openclaw health --json shows:
    • configured: true
    • running: false
    • probe.ok: true
    • lastStartAt: null
    • lastStopAt: null
  • actual Telegram messaging works

This makes the machine-readable health snapshot misleading for monitoring and automation.

Error Message

openclaw status --deep reports Telegram as healthy:

Root Cause

openclaw health --json reports Telegram running=false even while the Telegram probe succeeds and openclaw status --deep shows Telegram OK.

On the same system and same runtime state:

  • openclaw status --deep shows Telegram healthy/OK
  • openclaw health --json shows:
    • configured: true
    • running: false
    • probe.ok: true
    • lastStartAt: null
    • lastStopAt: null
  • actual Telegram messaging works

This makes the machine-readable health snapshot misleading for monitoring and automation.

Code Example

{
  "telegram": {
    "configured": true,
    "running": false,
    "lastStartAt": null,
    "lastStopAt": null,
    "lastError": null,
    "probe": {
      "ok": true,
      "error": null,
      "bot": {
        "username": "clawbot_cog_bot"
      }
    }
  }
}
RAW_BUFFERClick to expand / collapse

Summary

openclaw health --json reports Telegram running=false even while the Telegram probe succeeds and openclaw status --deep shows Telegram OK.

On the same system and same runtime state:

  • openclaw status --deep shows Telegram healthy/OK
  • openclaw health --json shows:
    • configured: true
    • running: false
    • probe.ok: true
    • lastStartAt: null
    • lastStopAt: null
  • actual Telegram messaging works

This makes the machine-readable health snapshot misleading for monitoring and automation.

Environment

  • OpenClaw: 2026.3.31
  • Platform: macOS arm64
  • Channel: Telegram
  • Config style: Telegram enabled, Slack disabled for isolation during diagnosis

Observed behavior

openclaw status --deep reports Telegram as healthy:

  • Telegram: OK
  • Gateway: reachable
  • bot probe resolves successfully

But openclaw health --json reports the Telegram channel/account as not running:

{
  "telegram": {
    "configured": true,
    "running": false,
    "lastStartAt": null,
    "lastStopAt": null,
    "lastError": null,
    "probe": {
      "ok": true,
      "error": null,
      "bot": {
        "username": "clawbot_cog_bot"
      }
    }
  }
}

Equivalent live summary from the same system:

  • Telegram probe succeeds
  • bot identity resolves
  • Telegram chat traffic works
  • status table shows Telegram OK

Expected behavior

One of these should be true:

  1. health --json should report running=true when the Telegram runtime is actually active and healthy, or
  2. if running means something narrower than operator-visible runtime health, it should be documented clearly and not contradict the primary health/status surfaces in a misleading way.

At minimum, the current output should not imply “Telegram is not running” while the probe succeeds and the status command reports OK.

Why this looks like a native bug

Tracing local OpenClaw code suggests the health snapshot is passing through runtime lifecycle state directly instead of deriving it from probe success:

  • status-helpers-*.js initializes runtime state with:
    • running: false
    • lastStartAt: null
    • lastStopAt: null
  • status summary code then emits:
    • running: snapshot.running ?? false
    • lastStartAt: snapshot.lastStartAt ?? null
    • lastStopAt: snapshot.lastStopAt ?? null

In the failing/contradictory case, Telegram has:

  • probe.ok = true
  • running = false
  • lastStartAt = null
  • lastStopAt = null

That suggests Telegram lifecycle/runtime state is either:

  • not being recorded into the runtime snapshot, or
  • not being wired into the health JSON path correctly

while the probe path is working.

Impact

This breaks trust in openclaw health --json for:

  • machine-readable monitoring
  • alerting
  • automation
  • operator triage

A monitoring system consuming the JSON could conclude Telegram is down when it is actually healthy.

Repro notes

Observed after upgrade from 2026.3.28 to 2026.3.31 during diagnosis of unrelated Telegram polling stalls and Slack stale-socket churn.

After disabling Slack and restarting, the contradiction remained for Telegram:

  • status --deep: Telegram OK
  • health --json: Telegram running=false, probe.ok=true

Additional context

This may be related to the broader class of Telegram observability/health-reporting issues, but this report is specifically about the mismatch between:

  • runtime running state in health --json
  • successful probe results
  • and operator-facing status --deep

Suggested fix direction

  • Ensure Telegram runtime lifecycle state is populated into the health snapshot
  • or compute/report a field that matches operator-visible channel health
  • or rename/document running if it is intentionally not a liveness indicator

extent analysis

TL;DR

The openclaw health --json command reports Telegram as not running despite a successful probe, suggesting a discrepancy in how runtime state is recorded or reported.

Guidance

  • Review the status-helpers-*.js files to ensure that Telegram's runtime lifecycle state is correctly initialized and updated, particularly the running, lastStartAt, and lastStopAt fields.
  • Verify that the probe.ok field is being used to update the running state in the health snapshot, as the probe's success indicates the Telegram channel is operational.
  • Consider adding logging or debugging statements to track how the running state is being set and updated, to identify where the discrepancy is occurring.
  • Evaluate the documentation for the running field to ensure it accurately reflects its purpose and behavior, especially if it does not directly indicate the channel's operational status.

Example

No specific code example can be provided without modifying the existing codebase, but ensuring that the running state is updated based on the probe's outcome could involve a logic check similar to:

if (probe.ok) {
  running = true;
  lastStartAt = currentTime; // Update last start time if probe is successful
} else {
  running = false;
  lastStopAt = currentTime; // Update last stop time if probe fails
}

This example assumes that probe.ok is a reliable indicator of the Telegram channel's operational status.

Notes

The issue seems to stem from a version upgrade, suggesting that changes in how runtime state is handled or reported may have introduced the discrepancy. Ensuring backward compatibility in health reporting is crucial for maintaining trust in monitoring and automation systems.

Recommendation

Apply a workaround by manually checking the probe.ok field in automation scripts or monitoring systems to determine the actual operational status of the Telegram channel, until the root cause is identified and fixed. This approach allows for continued use of openclaw health --json while accounting for the reported discrepancy.

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

One of these should be true:

  1. health --json should report running=true when the Telegram runtime is actually active and healthy, or
  2. if running means something narrower than operator-visible runtime health, it should be documented clearly and not contradict the primary health/status surfaces in a misleading way.

At minimum, the current output should not imply “Telegram is not running” while the probe succeeds and the status command reports OK.

Still need to ship something?

×6

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

Back to top recommendations

TRENDING