Summary
Add a cron.defaults.delivery config option so users can set a default delivery channel/target for all cron jobs, avoiding repetitive per-job configuration.
Motivation
Currently, every isolated cron job with delivery.mode: "announce" requires explicit delivery.channel and delivery.to fields. Without them, the fallback is "last" which uses the main session's last reply target — often incorrect (see #3520).
For users with a primary notification channel (e.g., Telegram), this means duplicating the same delivery config across every job:
{
"delivery": {
"mode": "announce",
"channel": "telegram",
"to": "-1001234567890:topic:123"
}
}
Proposed Solution
Add cron.defaults.delivery following the existing pattern from agents.defaults.heartbeat:
{
"cron": {
"enabled": true,
"defaults": {
"delivery": {
"mode": "announce",
"channel": "telegram",
"to": "-1001234567890:topic:123"
}
}
}
}
Resolution priority
- Job-level
delivery (highest) — explicit per-job config
cron.defaults.delivery — global default
"last" fallback (lowest) — current behavior
Prior Art
The heartbeat system already supports this pattern:
{
"agents": {
"defaults": {
"heartbeat": {
"target": "telegram",
"to": "-1001234567890"
}
}
}
}
Related Issues
Environment
- OpenClaw version: 2026.2.4
- Primary channel: Telegram
Summary
Add a
cron.defaults.deliveryconfig option so users can set a default delivery channel/target for all cron jobs, avoiding repetitive per-job configuration.Motivation
Currently, every isolated cron job with
delivery.mode: "announce"requires explicitdelivery.channelanddelivery.tofields. Without them, the fallback is"last"which uses the main session's last reply target — often incorrect (see #3520).For users with a primary notification channel (e.g., Telegram), this means duplicating the same delivery config across every job:
{ "delivery": { "mode": "announce", "channel": "telegram", "to": "-1001234567890:topic:123" } }Proposed Solution
Add
cron.defaults.deliveryfollowing the existing pattern fromagents.defaults.heartbeat:{ "cron": { "enabled": true, "defaults": { "delivery": { "mode": "announce", "channel": "telegram", "to": "-1001234567890:topic:123" } } } }Resolution priority
delivery(highest) — explicit per-job configcron.defaults.delivery— global default"last"fallback (lowest) — current behaviorPrior Art
The heartbeat system already supports this pattern:
{ "agents": { "defaults": { "heartbeat": { "target": "telegram", "to": "-1001234567890" } } } }Related Issues
Environment