cron.*, plus the media model template variable surface.
For the full key index and the other top-level config domains, see Configuration reference.
Automations (cron)
enabled: execute stored automation jobs (default:true). Setfalseto pause all automation execution without deleting jobs.skipMissedJobs: skip missed recurring (cron/every) slots at startup and advance to the next future occurrence (default:false). One-shot (at) catch-up is unchanged.triggers.enabled: run event-driven automation triggers (default:true). Setfalseto disable condition triggers, script payloads, and stream schedules.sessionRetention: how long to keep completed isolated automation run sessions before pruning SQLite session rows. Also controls cleanup of archived deleted automation transcripts. Default:24h; setfalseor a zero duration such as"0h"to disable (negative durations are invalid).- Terminal run history is retained for 7 days (
lostrows for 24 hours), with the newest 2000 rows per job and history class enforced as an additional ceiling. webhookToken: bearer token used for automation webhook POST delivery (delivery.mode = "webhook"), if omitted no auth header is sent.webhookSsrfPolicy: shared outbound SSRF policy for primary, completion, failure-destination, and failure-alert webhooks. Private/internal targets are blocked when omitted. Prefer exactallowedHostnames; usedangerouslyAllowPrivateNetwork: trueonly for trusted private-network receivers. The narrow fake-IP proxy flags areallowRfc2544BenchmarkRangeandallowIpv6UniqueLocalRange.webhookSsrfPolicy.blockedHostnames: denies exact hosts and wildcard subdomains before DNS and all allow rules.*.example.comexcludes the apex; addexample.comseparately to block it. Empty or unset adds no denials.
cron block is strict; cron.enabled, cron.skipMissedJobs, cron.triggers, cron.webhookToken,
cron.webhookSsrfPolicy, cron.sessionRetention, and cron.failureAlert are the only accepted keys. The
retired cron.webhook fallback URL is gone: runtime delivery uses per-job
delivery.mode = "webhook" plus delivery.to, or delivery.completionDestination
when preserving announce delivery. openclaw doctor --fix strips a leftover
cron.webhook from existing config files.
cron.failureAlert
cron.failureAlert owns the global alert policy and its default destination. Jobs
with an existing failure route are covered by default after 2 consecutive
execution failures with a 1-hour cooldown; a cron.failureAlert object explicitly
activates/tunes the policy even when no route existed. The retired
cron.failureDestination block is merged into it by
openclaw doctor --fix.
enabled: explicitly enable or disable the global policy.falsedisables inherited notifications unless a job has its ownfailureAlertobject;trueexplicitly enables globally. Omitting it preserves route-backed defaults.after: consecutive failures before an alert fires (positive integer, min:1; default:2).cooldownMs: minimum milliseconds between repeated alerts for the same job (non-negative integer; default:3600000).includeSkipped: count consecutive skipped runs toward the alert threshold (default:false). Skipped runs are tracked separately and do not affect execution-error backoff.mode: delivery mode -"announce"sends via a channel message;"webhook"posts to the target into. Defaults to"announce"when enough target data exists.channel: channel override for announce delivery."last"reuses the last known delivery channel.to: explicit announce target or webhook URL. Required for webhook mode.accountId: optional account or channel id to scope alert delivery.- Route precedence is per-job
failureAlertroute fields, then per-jobdelivery.failureDestinationlayered over these global destination fields, then the primary announce target. - Per-job
failureAlert: falsedisables execution and required-delivery failure alerts for that job; the auto-disable safety notification remains active. Any per-jobfailureAlertobject explicitly enables and tunes that job. delivery.bestEffort: truesuppresses inherited/default execution alerts; an explicit per-jobfailureAlertremains authoritative.- Required completion-delivery failure (
status: "ok",completionStatus: "failed") does not increment execution backoff and may notify immediately only through a resolved alternate failure destination, not the failed primary route. delivery.failureDestinationis only supported forsessionTarget="isolated"jobs unless the job’s primarydelivery.modeis"webhook".
Media model template variables
Template placeholders expanded intools.media.models[].args:
The legacy
{{MediaPath}}, {{MediaUrl}}, {{MediaType}}, and {{MediaDir}}
names remain available during the plugin SDK compatibility window but are
deprecated. New configuration should use the Attachment* variables.