Scheduled Jobs

Scheduled Jobs let you run a prompt or slash command repeatedly without babysitting it. ClawIDE supports two kinds of jobs from a single panel: Loops that run inside a live terminal session, and Cron Jobs that run headlessly via the system crontab.

Opening the Panel

In the workspace sidebar, expand Scheduled Jobs and click Manage Scheduled Jobs. The modal lists existing jobs on the left and an editor on the right. Click New Scheduled Job to create one.

Every job has a Name, an Agent (claude, codex, or gemini), and a Prompt — the slash command or instruction to run on each iteration.

Loops (In-Session)

A loop sends your prompt to a specific terminal pane on a repeating schedule, so you can watch it work in the UI.

  • Interval — Choose Dynamic (the model self-paces) or a fixed cadence: every 1, 5, 15, or 30 minutes, hourly, or a custom value like 10m, 2h, or 45s.
  • Target Pane — Pick the terminal pane the loop runs in. Use Refresh pane list to pick up newly opened sessions.
  • Start sends the /loop command to the pane; Stop sends Ctrl+C to interrupt it.

Loops work on macOS, Linux, and Windows.

Cron Jobs (Headless)

A cron job runs your agent’s CLI in the project directory on a system-level schedule — no terminal session required. Cron jobs are available on macOS and Linux.

  • Cron Expression — Standard 5-field format (minute hour day-of-month month day-of-week). Preset buttons cover common patterns: every 5/15/30 minutes, hourly, every 6 hours, weekdays at 9am, and daily at midnight.
  • Start installs a tagged entry in your crontab; Stop removes it.
  • Output is written to ~/.clawide/logs/cron-<job-id>.log.

Loops vs. Cron at a Glance

LoopCron Job
Runs inA visible terminal paneThe system crontab (headless)
PlatformsmacOS, Linux, WindowsmacOS, Linux
SchedulingFixed interval or dynamic5-field cron expression
OutputVisible in the terminal~/.clawide/logs/cron-<job-id>.log

Storage & Coordination

Scheduled jobs are persisted in ~/.clawide/state.json. When ClawIDE is running, a lock file (scheduled_tasks.lock) coordinates execution so multiple instances don’t run the same job at once.