---
title: Recurring work
description: How to set a job to repeat, the five cadences on offer, and the three behaviours that surprise people — no questions, no catch-up, and a spend limit counted per occurrence rather than across the schedule.
---

You can set a job to run on its own schedule. On the **Tasks** screen the composer has a
clock control next to it; leave it on **Just once** for a one-off, or pick a cadence and
the button changes from **Run it** to **Schedule it**. The same control appears as a chip
on the Home and chat composers when what you typed sounds like a repeating job.

Three things about a repeating job differ from a one-off in ways that are worth knowing
before you set one up, so they are near the top: **it cannot ask you anything**, **a
missed run is not made up**, and **the limit you set is counted per occurrence, never
across the schedule**.

## The five cadences

There are exactly five, and there is no custom time, no custom day and no way to write
your own schedule:

| Option | When it runs |
| --- | --- |
| **Every morning** | Every day at 09:00 |
| **Weekdays at 9am** | Monday to Friday at 09:00 |
| **Mondays at 9am** | Once a week, Monday at 09:00 |
| **Every hour** | Every hour |
| **Every 30 minutes** | Every half hour |

The daily and weekly options run at 09:00 in **your** time zone, taken from your browser
when you set the schedule up. The two interval options have no time of day at all — they
just count from when you created them.

## It cannot ask you anything

An occurrence runs with nobody there. The ability to stop and put a question to you is
**withdrawn entirely** for scheduled runs — not reduced, removed. A one-off run may open
up to three rounds of questions; a scheduled run gets none.

So a recurring instruction has to be self-sufficient. Anything a normal chat would have
clarified with you, a scheduled run has to guess. Write the instruction as if you will not
be reachable, because you will not be: name the source, the format, the destination and
what to do about an edge case, in the instruction itself. You get up to 2,000 characters,
which is more room than you think.

The approval setting you chose still applies to every occurrence, so it will still stop
before anything leaves the app if that is what you asked for. Stopping like that costs
nothing while it waits — see [When it checks with you](/docs/when-it-checks-with-you).

## A missed run is not made up

If an occurrence fails, or the moment passes while nothing is listening, **that
occurrence is gone**. The schedule moves on to the next time and does not catch up. There
is no backfill, no queue of skipped runs, and no "run it now" to replay a missed one.

Design around it rather than against it: a job whose value depends on never missing a
single window is a poor fit for a schedule, and a job that reads the current state of
something every morning tolerates a lost morning fine.

## Every run is its own run, and its own bill

The **Repeating** block on the Tasks screen says it in one line: *"Runs on its own — each
run is billed as its own receipt."*

Read that as a budget statement, because that is what it is. The ceilings are **per
occurrence**, not per week and not per schedule. There is no series budget and no period
budget anywhere in the product. An **Every 30 minutes** schedule is up to 48 independent
runs a day, each one allowed its own full ceiling. Nothing adds them up and stops.

Before you pick a fast cadence, do that multiplication yourself. See
[Limits](/docs/limits) for the per-run ceilings and
[How billing works](/docs/how-billing-works) for where each run's charge lands.

## Where it lives, and how to stop it

Every schedule gets its own conversation, named after the instruction, and all of its
occurrences run there in sequence — so the history builds up in one place rather than
scattering, and each run can see what the previous ones did.

The schedules themselves are managed in the **Repeating** block on the **Tasks** screen.
Each row shows its cadence and its instruction, with two controls:

- **Pause** stops it firing, and keeps it. **Resume** starts it again. A paused schedule
  costs nothing and fires nothing.
- The bin **deletes** it outright.

Both take effect immediately. If you have no schedules, the block is not there at all —
which is also how you can tell you have none.

There is no end date and no "run it ten times then stop": a schedule runs until you pause
or delete it. Set the ones you want, and check the block occasionally to make sure you
still want them.

## One thing that does not carry over

Files you attached to the message do **not** come along into a schedule. A recurring
instruction is words only. If the job needs a document every time, keep it on the
assistant instead of on the message — see [Assistants](/docs/assistants) — or have the
instruction fetch it from a connected app.
