> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wednesdayai.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# cron

# `openclaw cron`

Manage cron jobs for the Gateway scheduler.

Related:

* Cron jobs: [Cron jobs](/automation/cron-jobs)

Tip: run `openclaw cron --help` for the full command surface.

Note: `openclaw cron run <id>` runs in force mode by default. Force mode bypasses only the
schedule due-time check; it still respects payload validity, wake gates, already-running
protection, heartbeat/runtime guards, and delivery constraints. Use `--due` to run only when
the job is currently due.

Note: isolated `cron add` jobs default to `--announce` delivery. Use `--no-deliver` to keep
output internal. `--deliver` remains as a deprecated alias for `--announce`.

Note: one-shot (`--at`) jobs delete after success by default. Use `--keep-after-run` to keep them.

Note: recurring jobs now use exponential retry backoff after consecutive errors (30s → 1m → 5m → 15m → 60m), then return to normal schedule after the next successful run.

Note: retention/pruning is controlled in config:

* `cron.sessionRetention` (default `24h`) prunes completed isolated run sessions.
* `cron.runLog.maxBytes` + `cron.runLog.keepLines` prune `~/.openclaw/cron/runs/<jobId>.jsonl`.

## Common edits

Create the three common job types:

```bash theme={"dark"}
# Timeline message: main session + systemEvent
openclaw cron add --name "Reminder" --at "20m" --session main --system-event "Reminder text" --wake now

# Assistant task: isolated session + agentTurn
openclaw cron add --name "Morning brief" --cron "0 7 * * *" --session isolated --message "Summarize overnight updates." --announce

# Wake-gate jobs are available through the Web UI and Gateway cron tool payloads.
```

Run a job now, then inspect the run history:

```bash theme={"dark"}
openclaw cron run <job-id>
openclaw cron runs --id <job-id> --limit 20
```

Run only if the schedule is due:

```bash theme={"dark"}
openclaw cron run <job-id> --due
```

Update delivery settings without changing the message:

```bash theme={"dark"}
openclaw cron edit <job-id> --announce --channel telegram --to "123456789"
```

Disable delivery for an isolated job:

```bash theme={"dark"}
openclaw cron edit <job-id> --no-deliver
```

Announce to a specific channel:

```bash theme={"dark"}
openclaw cron edit <job-id> --announce --channel slack --to "channel:C1234567890"
```
