Skip to main content
Schedules fire agent runs on a cron rhythm — a morning digest, a nightly dependency check, a weekly report. Scheduled runs are ordinary runs with a cron for a caller. In the dashboard they live under Automations → Schedules.

Create a schedule

  • Cron is always interpreted in UTC; minimum granularity is one minute. Seconds fields and @every are not supported.
  • With a --session-key, every firing continues the same workspace — same conversation, same files. Without one, each firing is a one-shot run.
  • The agent binding is immutable — delete and recreate the schedule to move it to another agent.
  • Up to 20 schedules per agent; prompts up to 16 KiB.

Metadata tags

Schedules carry an opaque key=value map you can filter on — useful when something else creates schedules on your behalf and needs to find its own again:
Filters are ANDed. Up to 20 entries per schedule; keys up to 64 characters, values up to 256. ZWRM never interprets the contents.

Overlap behavior

A schedule never stacks runs: if the previous run is still going when the next window arrives, the firing is logged as skipped_still_running and the schedule waits for the next window. A run parked on an escalation counts as still running — a schedule blocked on a human decision skips visibly rather than piling up.

Inspect and manage

list shows each schedule’s cron, enabled state, next run, and last run. The firing log records every due firing regardless of outcome: fired, skipped_still_running, rejected_budget, or error.

Pause and resume

Resuming (or changing the cron) recomputes the next run from now — a long-paused schedule never catch-up-fires a backlog.

Budgets

If the agent’s daily budget is exhausted, firings are logged as rejected_budget and skipped; the schedule keeps its rhythm and tries again at the next window.