Cron jobs are how you make your agent proactive instead of reactive. Instead of waiting for you to ask, the agent does things on a schedule. Here is how I set mine up.
My daily schedule
7:00 AM — Morning briefing (weather, calendar, top tasks). 10:00 AM — Check GitHub for new issues and PRs. 2:00 PM — Email digest of anything flagged as important. 6:00 PM — End of day summary. 10:00 PM — Tomorrow’s prep (check calendar, set reminders).
The config
OpenClaw uses standard cron syntax. The key setting most people miss: sessionTarget. If you want the cron job to have access to your conversation history, use “main”. If you want it isolated (faster, cheaper), use “isolated”.
I use isolated for routine checks (weather, calendar) and main for anything that needs context (email triage, project updates). This saves about 30% on tokens because isolated sessions have smaller context windows.
Pro tips
Set quiet hours. My agent does not send notifications between 11 PM and 7 AM unless it is a server-down alert. Nobody wants a weather update at 3 AM.
Also: stagger your cron jobs. Do not schedule everything at the same minute. Spread them out to avoid API rate limits and give each job room to breathe.
The MDN documentation on cron syntax is surprisingly good if you need a refresher on the format.