openclaw - 💡(How to fix) Fix Cron: false "Message failed" errors on Telegram when announce delivery uses fallback (variant of #50170) [2 comments, 3 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#72732Fetched 2026-04-28 06:32:51
View on GitHub
Comments
2
Participants
3
Timeline
4
Reactions
1
Author
Timeline (top)
commented ×2closed ×1cross-referenced ×1

Cron jobs with delivery.mode: "announce" targeting Telegram (channel: telegram, to: "3521683") intermittently report status: "error" with error: "⚠️ ✉️ Message failed" despite the content being successfully delivered via fallback. The run metadata confirms fallbackUsed: true and delivered: true, yet the job status is marked as error.

This also affects cron jobs with delivery.mode: "none" — they get the same false error even though no delivery was requested.

Error Message

False error reporting (not a regression — present across multiple versions) Cron jobs with delivery.mode: "announce" targeting Telegram (channel: telegram, to: "3521683") intermittently report status: "error" with error: "⚠️ ✉️ Message failed" despite the content being successfully delivered via fallback. The run metadata confirms fallbackUsed: true and delivered: true, yet the job status is marked as error. This also affects cron jobs with delivery.mode: "none" — they get the same false error even though no delivery was requested. "status": "error", "error": "⚠️ ✉️ Message failed", "status": "error", "error": "⚠️ ✉️ Message failed", This job has delivery.mode: "none" — no delivery was ever requested, yet it gets the same "⚠️ ✉️ Message failed" error. The agent did its work correctly (saved report to disk).

  • One run (2026-04-07): status: "error", error: "⚠️ ✉️ Message failed", delivered: false
  • This shows the error is intermittent even within the same job definition
  1. But the job run is still marked as error because evt.error = "⚠️ ✉️ Message failed" The error message "⚠️ ✉️ Message failed" appears to originate from the agent execution layer reporting a message tool failure, which then gets propagated as the cron job error even when fallback delivery succeeds.
  2. Observe the run metadata — it will eventually show status: "error" with "⚠️ ✉️ Message failed" while fallbackUsed: true and delivered: true

Root Cause

The issue occurs when:

  1. The isolated agent session generates a valid reply
  2. The announce delivery path attempts to send via Telegram
  3. Something in the primary delivery path fails (agent tries to use message tool? timing issue?)
  4. The fallback delivery succeeds
  5. But the job run is still marked as error because evt.error = "⚠️ ✉️ Message failed"

Code Example

{
  "status": "error",
  "error": "⚠️ ✉️ Message failed",
  "lastDelivered": true,
  "deliveryStatus": "delivered",
  "delivery": {
    "fallbackUsed": true,
    "delivered": true
  },
  "lastDeliveryStatus": "delivered"
}

---

[2026-04-27T10:30:05+02:00] [job-id] already delivered by cron runtime — marking and exit

---

{
  "status": "error",
  "error": "⚠️ ✉️ Message failed",
  "delivery": {
    "mode": "none"
  },
  "deliveryStatus": "not-requested",
  "delivered": false
}
RAW_BUFFERClick to expand / collapse

Bug type

False error reporting (not a regression — present across multiple versions)

Summary

Cron jobs with delivery.mode: "announce" targeting Telegram (channel: telegram, to: "3521683") intermittently report status: "error" with error: "⚠️ ✉️ Message failed" despite the content being successfully delivered via fallback. The run metadata confirms fallbackUsed: true and delivered: true, yet the job status is marked as error.

This also affects cron jobs with delivery.mode: "none" — they get the same false error even though no delivery was requested.

Environment

  • OpenClaw version: 2026.4.24 (cbcfdf6)
  • OS: Linux 6.17.0-22-generic (x64), Ubuntu
  • Channel: Telegram
  • Node: v22.22.0

Affected cron jobs (different configurations, same symptom)

  1. Weekly IA digestsessionTarget: "isolated", delivery: { mode: "announce", channel: "telegram", to: "3521683" }, toolsAllow: [] (no tools restricted — agent has full access)
  2. Weekly Skill ReviewsessionTarget: "isolated", delivery: { mode: "none" }, toolsAllow: ["read","write","exec","memory_recall","sessions_list"]
  3. Daily Critical Thinking (intermittent) — sessionTarget: "isolated", delivery: { mode: "announce", channel: "telegram", to: "3521683" }

Evidence from run metadata

Job 1 (Semanal IA) — run at 2026-04-27T08:00:00Z:

{
  "status": "error",
  "error": "⚠️ ✉️ Message failed",
  "lastDelivered": true,
  "deliveryStatus": "delivered",
  "delivery": {
    "fallbackUsed": true,
    "delivered": true
  },
  "lastDeliveryStatus": "delivered"
}

The summary field contains the actual generated content, and the cron-delivery-guard log confirms:

[2026-04-27T10:30:05+02:00] [job-id] already delivered by cron runtime — marking and exit

Job 2 (Skill Review) — run at 2026-04-27T06:55:00Z:

{
  "status": "error",
  "error": "⚠️ ✉️ Message failed",
  "delivery": {
    "mode": "none"
  },
  "deliveryStatus": "not-requested",
  "delivered": false
}

This job has delivery.mode: "none" — no delivery was ever requested, yet it gets the same "⚠️ ✉️ Message failed" error. The agent did its work correctly (saved report to disk).

Job 3 (Critical Thinking) — historical runs show same pattern:

  • Most runs: status: "ok", fallbackUsed: true, delivered: true
  • One run (2026-04-07): status: "error", error: "⚠️ ✉️ Message failed", delivered: false
  • This shows the error is intermittent even within the same job definition

Pattern observed

The issue occurs when:

  1. The isolated agent session generates a valid reply
  2. The announce delivery path attempts to send via Telegram
  3. Something in the primary delivery path fails (agent tries to use message tool? timing issue?)
  4. The fallback delivery succeeds
  5. But the job run is still marked as error because evt.error = "⚠️ ✉️ Message failed"

The error message "⚠️ ✉️ Message failed" appears to originate from the agent execution layer reporting a message tool failure, which then gets propagated as the cron job error even when fallback delivery succeeds.

Expected behavior

  1. When fallbackUsed: true and delivered: true, the job should report status: "ok" — the content reached the user.
  2. When delivery.mode: "none", delivery errors should never exist and should never override job execution status.

Related issues

  • #50170 — Same symptom ("Message failed" despite successful Discord delivery), open with PR #50189
  • #54188 — Same symptom with delivery.mode: "none", closed
  • #22430 — Cron announce delivery failed - Telegram (older, possibly related)

Note on PR #50189

The PR title fix(cron): report ok status when primary delivery succeeded despite follow-up errors sounds like it should address this. If it's already merged, this issue demonstrates it's still happening on 2026.4.24. If not merged, this report provides additional Telegram-specific data to support it.

Steps to reproduce

  1. Create a cron job with sessionTarget: "isolated", delivery: { mode: "announce", channel: "telegram", to: "<user-id>" }, and a prompt that makes the agent generate content and attempt delivery
  2. Let it run on schedule
  3. Observe the run metadata — it will eventually show status: "error" with "⚠️ ✉️ Message failed" while fallbackUsed: true and delivered: true

Intermittent — not every run triggers it, suggesting a race condition or model-dependent behavior in how the agent handles delivery.

extent analysis

TL;DR

The cron job status is incorrectly marked as "error" despite successful delivery via fallback, likely due to the agent execution layer reporting a "message" tool failure.

Guidance

  • Review the cron-delivery-guard log to confirm that the delivery was successfully handled by the fallback mechanism.
  • Investigate the agent execution layer to determine why the "message" tool failure is being reported and propagated as the cron job error.
  • Consider applying the fix from PR #50189, which aims to report "ok" status when primary delivery succeeds despite follow-up errors.
  • Verify that the issue is not specific to the Telegram channel by testing with other channels.

Example

No code snippet is provided as the issue seems to be related to the internal workings of the OpenClaw system and the agent execution layer.

Notes

The issue appears to be intermittent and may be related to a race condition or model-dependent behavior in the agent's handling of delivery. The fact that PR #50189 is mentioned as a potential fix suggests that this issue may be addressed in a future update.

Recommendation

Apply the workaround by monitoring the cron-delivery-guard log and manually updating the job status to "ok" when the delivery is successful via fallback, until a permanent fix is available.

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

  1. When fallbackUsed: true and delivered: true, the job should report status: "ok" — the content reached the user.
  2. When delivery.mode: "none", delivery errors should never exist and should never override job execution status.

Still need to ship something?

×6

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

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix Cron: false "Message failed" errors on Telegram when announce delivery uses fallback (variant of #50170) [2 comments, 3 participants]