Skip to Content
AgentsScheduling Agent Runs

Scheduling Agent Runs

Set up a schedule and your agent will wake up at the times you choose, do the work, and leave the results in chat — even when you’re not looking. A daily morning briefing, an hourly site check, a one-off “remind me in 30 minutes” — they all use the same simple mechanism.

What can I do with it?

ScenarioExample
Same time every dayEvery morning at 8 AM, summarize overnight news
Weekdays only / weekends onlyTwice a day on weekdays — 9 AM and 6 PM market check
Hourly or sub-hourly pollingEvery hour, check this inventory page and alert me only if it changed
One-time delayed run”Come back in 30 minutes and finish the meeting notes”
Heavy work in off hoursEvery Sunday at 3 AM, run the weekly cleanup

A scheduled run is a simple loop: the agent works, leaves the result in chat, and a push notification lets you know it’s ready. You step away, your agent works, you check the answer when you come back.

Two ways to set up a schedule

1. Just tell the agent in plain language

Easiest path. Type it into chat the way you’d ask a person.

“Every morning at 8, pull the top 5 AI news stories from yesterday and summarize them.”

“Check this page every hour and only tell me if the price changes.”

“Come back in 30 minutes and recheck the result.”

The agent will register the schedule itself. A “Schedule registered” card appears in chat showing the next run time and the exact instruction it saved. You just confirm it looks right.

An agent can have up to 5 active recurring schedules that it created for itself at any one time. Schedules you add yourself from the UI are not subject to this cap.

2. Set it up from the UI

The Schedules menu (/agents/<agent>/schedules) has two distinct sections.

How actively it works on its own

At the top of the page you’ll see “How actively it works on its own”. This controls how often your agent checks in and handles things on its own, without being asked. There are three options — all run around the clock, 24 hours a day. The only difference is how often the agent checks in.

OptionCheck-in intervalGood for
RelaxedEvery 4 hoursAgents that only need occasional background work
NormalEvery 2 hoursA sensible default that fits most agents
DiligentEvery hourAgents that need to respond quickly (uses more credits)

Clicking an option saves immediately — no extra save button needed.

If you only want the agent to act when you ask it something or when a specific scheduled task fires, ignore this section and use “Add Schedule” below to set up explicit times instead.

Add Schedule (specific recurring times)

For more precise timing, press Add Schedule.

  1. Configure the active window:
    • Choose the days of the week, start and end times, and the interval (every 30 min, 1 hour, 2 hours, etc.).
    • Example: weekdays 09:00–18:00, every 2 hours → up to 4–5 runs per day.
    • Your account timezone is applied automatically.
  2. Save. The new schedule appears in the list with the next scheduled run time. This schedule has no fixed instruction — at each run time the agent decides on its own what to do. If you want the same instruction to run every time, ask the agent in chat to set up a recurring run instead.

From the list you can:

  • Toggle active/inactive — pause a schedule without deleting it; it’s skipped until you re-enable it.
  • Edit — change the active days, hours, and interval (there is no instruction field).
  • Delete — remove it once you no longer need it.
  • Show/hide inactive schedules — keep the list tidy when you’ve parked a few schedules.

The iOS app offers the same schedule editor, so you can add and manage schedules on the go.

If you need a precise clock time (e.g. “every day at exactly 8 AM”) or a one-time delayed run, ask the agent directly in chat. Precise recurring schedules are registered by the agent using its scheduling tool.

How an automatic run plays out

[Registered schedule] │ Run time arrives Agent wakes up automatically │ Picks tools and does the work │ (only tools you've already enabled are available) Drops the result into chat │ ┌──────────────────────────────┐ └▶│ Push notification fires │ │ Open the chat to read it │ └──────────────────────────────┘

The result lands in your chat exactly like a normal message would. The message is tagged with which schedule woke the agent and what instruction it was given, so you can tell a scheduled answer apart from your own back-and-forth — even days later.

Where do I see the result?

  • In chat: the answer arrives as a new message. A “Triggered by schedule” tag and the original instruction are shown alongside it.
  • Push notification: if mobile / desktop notifications are on, you get a ping when the result lands. Tap it to jump straight to the chat.
  • Schedules menu: each schedule card shows the last run time, total run count, and the next scheduled run.
  • Run history: the agent’s Logs menu (/agents/<agent>/logs) shows schedule run records (success/failure, timestamp). Note that the Logs view currently shows the run history of the first schedule in the list only. To review a specific schedule’s history in detail, open that schedule directly from the Schedules menu.

Safety rails

Because scheduled runs spend credits while you’re away, several guardrails are in place:

GuardrailBehavior
Tool approvalTools marked Always ask (risky ones such as skill install or team-member creation) are never auto-executed during a scheduled run — they wait for you
Credit balanceIf your credits run out, the next scheduled run is skipped
Unread-message capIf unread messages from the agent pile up past the configured limit, further scheduled runs are skipped. Opening the chat and reading the messages resets the counter, and runs resume from the next slot
Repeated-failure alertIf the same schedule fails several times in a row, a push notification tells you to take a look
No double-runsA single agent only runs once at any moment — overlapping or stuck schedules can never spin up two parallel executions
Active hoursIf you’ve configured active hours, and the agent tries to register a schedule that fires outside that window, the tool returns an error. The agent then decides on its own whether to ask you for confirmation, or — if you clearly requested that specific time — to proceed as-is

A scheduled run can only use tools you already enabled, and Always ask tools stay frozen until you approve them in person. Your agent works inside the limits you set ahead of time.

Common patterns

Daily morning briefing

Get news / stock / inbox summaries at a fixed time each day. Wake up, open the chat, done.

Watch + alert only on change

“Check this page every hour and alert me only if the price moves.” Quiet by default, loud only when it matters.

Periodic cleanup

Run heavy weekly summaries or data cleanup early Sunday morning so they don’t fight with your weekday work.

One-off delayed run

“Come back in an hour and recheck this.” Once it runs, the schedule deactivates itself — it won’t fire again and you don’t have to clean it up.

Next steps


Advanced

You don’t need any of this for normal use. Skip unless you want fine timing control or are debugging odd behavior.

Schedule types

TypeHow to createDescription
HeartbeatUI (Add Schedule)Day/time-window + interval based. Agent wakes at regular intervals within the active window
Recurring (cron)Agent schedule_create tool onlyUTC cron expression. Precise daily/weekly/hourly timing
One-time (once)Agent schedule_create tool onlyFires once after N minutes, then deactivates itself (min 1 min, max 7 days)

The “Add Schedule” button in the UI creates heartbeat schedules only. For cron-style recurring schedules or one-time delayed runs, ask the agent in chat and it will register them using its scheduling tool.

One-time vs recurring

A one-time run deactivates itself after it fires. A recurring run keeps going until you stop it — and a recurring schedule created by the agent itself auto-expires after 7 days by default (configurable up to 90 days), so forgotten schedules don’t keep firing forever.

Picking a time (cron expressions)

Under the hood, when the agent registers a cron schedule it uses standard cron notation. Times are stored in UTC and shown in your local timezone.

ExpressionMeaning
0 8 * * *Daily at 08:00 UTC (= 17:00 KST)
0 23 * * *Daily at 23:00 UTC (= 08:00 KST next day — use this for a Korea-morning briefing)
0 * * * *Every hour on the hour
0 9 * * 1-5Weekdays at 09:00
0 0 * * 0Every Sunday at midnight

Asking in plain language (“run at 8 AM Korea time”) lets the agent handle the timezone conversion for you.

Concurrency protection

A single agent only ever has one execution line active.

  • If schedule times overlap, or a previous run is still going when the next one’s time arrives, only one runs.
  • If a run is in flight when the next slot comes due, the next slot is skipped or queued — never doubled.
  • Even when multiple servers try to fire the same schedule at the same instant, the system ensures only one of them actually runs it.
  • After a system restart, schedules that were “due” while the system was down are realigned forward to a fresh future time and resume cleanly.

So no, your agent can never accidentally fire the same task 60 times in an hour.

When many agents share the same cron expression (e.g. 0 * * * *) they could otherwise all fire at the same instant. To spread that load, every agent-registered recurring (cron) schedule automatically gets up to 180 seconds of random delay added to its start time. This is automatic — there is nothing to configure — and it does not apply to one-time delayed runs.

Limits and retention

ItemValue
Active recurring schedules an agent can create for itselfMax 5
One-time delay range1 minute – 7 days
Auto-expire for agent-created recurring schedules (default)7 days (configurable 1–90)
Consecutive-failure alert threshold (default)3 failures in a row (set to 0 to disable failure alerts)
Run history retention~90 days (older runs are cleaned up automatically)

Schedules you create yourself from the UI are not subject to the active-schedule cap, and they don’t auto-expire unless you set that yourself.