Bug Description
When a cron job with delivery: { mode: "announce", channel: "webchat" } fires, it overwrites the main session's deliveryContext and origin fields with heartbeat/cron metadata. This causes subsequent user messages on webchat to be lost or routed incorrectly.
Steps to Reproduce
- Have an active webchat session with a user
- Configure a cron job with:
{ "sessionTarget": "isolated", "delivery": { "mode": "announce", "channel": "webchat" } }
- Wait for the cron to fire
- Send messages from the webchat client
Expected Behavior
The cron announce should deliver into the existing webchat session without modifying its deliveryContext or origin. User messages sent after the cron should continue to work normally.
Actual Behavior
After the cron fires, the session's deliveryContext is overwritten:
{
"deliveryContext": { "channel": "webchat", "to": "heartbeat" },
"origin": { "label": "heartbeat", "from": "heartbeat", "to": "heartbeat" }
}
Messages sent by the user after this point are lost — they don't appear in any session log and no response is delivered back to the webchat client.
Impact
- Message loss: User messages disappear entirely (not in any session log)
- Silent failure: No error shown to the user; messages just vanish
- Cron delivery also reports
(error) with "cron delivery target is missing", suggesting webchat delivery without an explicit to is not fully supported
Workaround
Use a different delivery channel (e.g. Telegram) instead of webchat for cron announces.
Environment
- OpenClaw v2026.2.12
- Channel: webchat
- OS: Linux (Ubuntu)
Bug Description
When a cron job with
delivery: { mode: "announce", channel: "webchat" }fires, it overwrites the main session'sdeliveryContextandoriginfields with heartbeat/cron metadata. This causes subsequent user messages on webchat to be lost or routed incorrectly.Steps to Reproduce
{ "sessionTarget": "isolated", "delivery": { "mode": "announce", "channel": "webchat" } }Expected Behavior
The cron announce should deliver into the existing webchat session without modifying its
deliveryContextororigin. User messages sent after the cron should continue to work normally.Actual Behavior
After the cron fires, the session's
deliveryContextis overwritten:{ "deliveryContext": { "channel": "webchat", "to": "heartbeat" }, "origin": { "label": "heartbeat", "from": "heartbeat", "to": "heartbeat" } }Messages sent by the user after this point are lost — they don't appear in any session log and no response is delivered back to the webchat client.
Impact
(error)with"cron delivery target is missing", suggesting webchat delivery without an explicittois not fully supportedWorkaround
Use a different delivery channel (e.g. Telegram) instead of webchat for cron announces.
Environment