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.

Heartbeat (looking around on its own)

At the top of the page, the Heartbeat toggle decides whether the agent looks around on its own, even without you. Leave it on and the agent decides on its own when to check in next — less often when there’s nothing to do, more often when something’s pending. Rather than picking a fixed interval, it reads the situation each time and sets the next check-in point. Just below, “Next heartbeat: …” shows the next scheduled time.

The heartbeat toggle at the top of the Schedules tab and the next heartbeat time

Clicking the toggle saves immediately. If you only want the agent to move when you call it or when a scheduled task fires, turn the heartbeat off and use “Add Schedule” below to register specific times only.

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 an Every N hours interval. Below the band, a preview of the actual fire times appears (e.g. → 09:00, 11:00, 13:00 and 2 more).
    • Example: weekdays 09:00–18:00, every 2 hours → up to 4–5 runs per day.
    • Your account timezone is applied automatically (shown on the band as Asia/Seoul, etc.).
    • Use + Add Time Slot to layer several bands with different time slots.

    The Add Schedule editor where you pick days, time range, and interval by clicking, with a fire-time preview

  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 and Android apps offer 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 Approval Required (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 Approval Required 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 within the active window, self-paced around a baseline interval
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.

How “Adjust pace automatically” works

When the toggle is on, the agent looks at what it did in its most recent check-in and adjusts how long it waits before the next one.

SituationEffect on next check-in
Quiet run after quiet run (nothing to do)Interval gradually lengthens — up to 4× base, capped at 24 hours
Just did real work and unfinished tasks remainInterval shortens to roughly half, minimum 30 minutes
New message, webhook, or team mention arrivesImmediately resets to the base interval

“Quiet” means the agent completed its check-in with nothing to do. System-level skips — like a concurrent run already in progress or credits running out — don’t count as quiet and don’t stretch the interval.

The pace never drifts outside the active hours you’ve configured, and the interval is always kept between 30 minutes and 24 hours.

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.