mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 23:40:45 +00:00
Merged via squash.
Prepared head SHA: 5877389e33
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Reviewed-by: @mbelinky
78 lines
2.5 KiB
Markdown
78 lines
2.5 KiB
Markdown
---
|
||
summary: "CLI reference for `openclaw cron` (schedule and run background jobs)"
|
||
read_when:
|
||
- You want scheduled jobs and wakeups
|
||
- You’re debugging cron execution and logs
|
||
title: "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: 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: `openclaw cron run` now returns as soon as the manual run is queued for execution. Successful responses include `{ ok: true, enqueued: true, runId }`; use `openclaw cron runs --id <job-id>` to follow the eventual outcome.
|
||
|
||
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`.
|
||
|
||
Upgrade note: if you have older cron jobs from before the current delivery/store format, run
|
||
`openclaw doctor --fix`. Doctor now normalizes legacy cron fields (`jobId`, `schedule.cron`,
|
||
top-level delivery fields, payload `provider` delivery aliases) and migrates simple
|
||
`notify: true` webhook fallback jobs to explicit webhook delivery when `cron.webhook` is
|
||
configured.
|
||
|
||
## Common edits
|
||
|
||
Update delivery settings without changing the message:
|
||
|
||
```bash
|
||
openclaw cron edit <job-id> --announce --channel telegram --to "123456789"
|
||
```
|
||
|
||
Disable delivery for an isolated job:
|
||
|
||
```bash
|
||
openclaw cron edit <job-id> --no-deliver
|
||
```
|
||
|
||
Enable lightweight bootstrap context for an isolated job:
|
||
|
||
```bash
|
||
openclaw cron edit <job-id> --light-context
|
||
```
|
||
|
||
Announce to a specific channel:
|
||
|
||
```bash
|
||
openclaw cron edit <job-id> --announce --channel slack --to "channel:C1234567890"
|
||
```
|
||
|
||
Create an isolated job with lightweight bootstrap context:
|
||
|
||
```bash
|
||
openclaw cron add \
|
||
--name "Lightweight morning brief" \
|
||
--cron "0 7 * * *" \
|
||
--session isolated \
|
||
--message "Summarize overnight updates." \
|
||
--light-context \
|
||
--no-deliver
|
||
```
|
||
|
||
`--light-context` applies to isolated agent-turn jobs only. For cron runs, lightweight mode keeps bootstrap context empty instead of injecting the full workspace bootstrap set.
|