OpenClaw Cron Guardrails
Use this skill when the user wants a scheduled or repeated action, even if they never say cron.
What this skill is for
This skill is a guardrails layer for scheduled agent actions.
Treat OpenClaw cron as:
- scheduler
- agent runtime
- delivery router
The timer is usually not the hard part. The hard part is choosing the right task type, session target, and delivery target.
Use this workflow
- Classify the request.
- Choose the safest job pattern.
- Explain what will happen.
- Create, inspect, or modify the job.
- Verify after creation/edit.
First classify the request
Choose one bucket first:
- Plain reminder
- Example:
Remind me in 20 minutes to reply - Default:
main + systemEvent - Use for lightweight reminders and nudges.
- Recurring reminder
- Example:
Remind me every morning to check my calendar - Usually still
main + systemEvent - Set timezone explicitly if wall-clock time matters.
- Internal worker
- Example:
Run a nightly scan and keep the results local - Default:
isolated + delivery.mode:none - Use for background chores, scans, maintenance, and noisy internal jobs.
- Scheduled visible delivery
- Example:
Post the daily summary to Discord at 9am - Default:
isolated + explicit delivery.channel + explicit delivery.to - Do not rely on implicit
lastin multi-channel setups.
- Session/thread push or prompt injection
- Example:
Push the current thread every 10 minutes - Preserve current-session / current-thread intent explicitly.
- Do not silently convert this into generic visible delivery.
- Diagnose / repair existing cron
- Example:
Why did this job not deliver?/Fix this cron - Inspect first. Do not recreate blindly.
Safe defaults
Use these defaults unless the user clearly wants something else:
- reminder →
main + systemEvent - background worker →
isolated + no-deliver - visible scheduled post →
isolated + explicit channel + explicit to - recurring job → explicit
tz - non-trivial task →
timeoutSeconds >= 180
When to ask instead of guessing
Ask a focused clarification if any of these are unclear:
- reminder vs worker vs visible scheduled post
- current thread/current session vs explicit external target
- concrete
channelgiven buttomissing - research-task semantics are mixed into an otherwise normal reminder request
- wall-clock schedule matters but timezone is not clear
Do not hide ambiguity with clever defaults when the job could post to the wrong place.
Output contract
When helping with a cron request, prefer this response order:
- detected task type
- chosen safe pattern
- exact command or exact JSON/tool payload
- why this pattern is safe
- verification step
Keep the top-level explanation short and predictable.
Verification after create/edit
Always verify after creating or editing a job:
openclaw cron listopenclaw cron runs --id <jobId> --limit 5- if safe,
openclaw cron run <jobId> - confirm:
- correct
sessionTarget - correct payload kind
- correct timezone
- explicit delivery target, or explicit
none - plausible timeout
Repair workflow
When repairing an existing job:
- read the existing job
- inspect recent runs
- classify the failure
- fix the root cause, not just the symptom
Common failure buckets:
- delivery-target ambiguity
- auth/permission/channel issue
- timeout too short
- schedule/timezone issue
- prompt/content issue
For a fuller triage flow, read references/diagnostics.md.
What to read
Read only what you need.
Beta-essential references
references/intent-routing.md— intent buckets and normalization schemareferences/patterns.md— safe default patternsreferences/pitfalls.md— common failure modes and anti-patternsreferences/public-examples.md— prompt-first examples for real user requests
Deeper references
references/integration-modes.md— natural-language vs normalized-intent vs spec-first integration pathsreferences/diagnostics.md— structured triage and repair flowreferences/nl-parser-examples.md— natural-language parser examplesreferences/intent-to-spec-examples.md— normalized intent → cron spec examplesreferences/spec-examples.md— cron spec JSON examplesreferences/target-helpers.md— explicit target string guidance
Scope boundary
Do not turn this skill into a universal prompt-understanding layer.
Its job is to:
- provide easy-start patterns
- enforce safe routing/session/delivery defaults
- support deterministic validate/render/create flows
Upstream products or base models may do richer prompt understanding than this skill does. That is fine. Prefer stable interfaces over trying to cover every possible natural-language corner case here.
Scripts
Use scripts when the user wants a deterministic, reusable cron definition instead of ad-hoc flag assembly.
Parse / normalize
scripts/parse_nl_intent.pyscripts/intent_to_cron_spec.py
Validate / render / create
scripts/validate_cron_spec.pyscripts/render_cron_command.pyscripts/create_cron.py
Inspect / doctor / repair
scripts/lint_existing_crons.pyscripts/cron_fix.pyscripts/cron_doctor.py
Non-goals
This skill is not:
- a full replacement for OpenClaw cron docs
- a guarantee against every runtime/provider failure
- a license to guess external delivery targets when intent is ambiguous
Prefer explicit, boring, reproducible cron definitions over clever shorthand.