RoutineOSBeta
Learn

How to schedule Claude Code to run every day.

A scheduled task runs a Claude Code prompt on Anthropic's cloud at the times you set, so it works when your laptop is closed. This guide covers the schedule itself: the cron line, the UTC trap, the limits, and how to keep a daily run safe. It is the basis of most Claude Code automation.

docs-statedUTC cron1 hour minimum
Steps

Schedule a Claude Code job in five steps

New to the idea? What are Claude routines explains the feature first.

  1. Write the job and make the first run report-onlyDescribe one recurring job in a prompt. Tell Claude the first run only reads and reports. Look at the output before you let it send, post or delete anything.
  2. Choose the schedule in UTCA five-field cron line is read as UTC. 0 9 * * 1-5 means 9:00 UTC on weekdays. Runs must be at least an hour apart. See the next section for a local-time example.
  3. Create the scheduled taskIn Claude Code, run /schedule. You can also manage tasks at claude.ai/code/routines. The older name "routines" still appears there.
  4. Remove connectors the job does not needWhen you create a task, every connector on your account is included by default, and an included connector can write. Take out what the job does not use.
  5. Run it once and read the resultRun it now, read the run log, and only then leave it on its schedule. A run that is scheduled is not a run that is checked.
Cron and time zones

Claude cron is UTC, so convert your local time

This is the mistake most people make. If you write your local morning hour in the cron line, the job runs at the wrong time.

A run scheduled exactly on the hour can start several minutes late. The docs suggest a few minutes past the hour.

You wantCron line (UTC)Why
9:00 UTC on weekdays0 9 * * 1-5The docs example. Five fields are UTC.
9:00 in Melbourne in summer time (UTC+11), weekdays5 22 * * 0-49:00 there is 22:00 UTC the day before, so Sunday to Thursday in UTC. The 5 is a few minutes past the hour.
9:00 in Melbourne in winter time (UTC+10), weekdays5 23 * * 0-4The offset changes with daylight saving, so recheck the line twice a year.
Limits

How often can Claude Code run on a schedule

At most once an hour. A faster schedule is rejected. Other limits to know, all docs-stated and all subject to change, because scheduled tasks are a research preview.

LimitValueHow we know
Shortest gap between scheduled runsOne hourdocs-stated
Scheduled runs per hour100 per accountdocs-stated
Run now, API fires and re-running a one-off task30 per hour for each taskdocs-stated
PlansPro, Max, Team and Enterprisedocs-stated
Each runStarts on a fresh machine, so files from the last run are gonepilot-verified
Maximum run timeNot knownunverified
What is missing

What RoutineOS adds to a scheduled Claude Code run

A bare schedule runs a prompt. It does not give the run a memory, a way to ask permission, or a check on the schedule itself.

RoutineOS is a Claude Code plugin, free (MIT), and needs a paid Claude plan. It scaffolds a routine with typed settings, and its linter fails a schedule faster than hourly or a prompt without the untrusted-data clause. Sends, posts and deletes wait behind an approval gate. The plugin does not run inside the cloud run, so the files that matter are committed to your repo (see Claude Code plugins).

/plugin install routineos --marketplace devkindhq/routineos
Check yourself

Before you leave it running

  • The prompt forbids sends, posts and deletes on the first run.
  • Lint fails a schedule faster than one hour.
  • A secret never goes in the prompt or in chat. If you paste one by accident, rotate it.
Heads upScheduled tasks are a research preview, so check the limits above before you rely on them. The full list is on honest limits.

Scaffold a watch routine

Install the plugin, then start from the Watch template.