GC
5 min read·Updated 2026-04-13

Delayed Actions

Ask the bot in plain language to remind you, run something later, or follow up when a background job finishes. Delayed actions live in chat — they do not appear on the Scheduler page.

What delayed actions are for

A delayed action is something you ask the bot to do at a specific moment in the future — send a reminder, start a task at a certain time, or ping you when a background job finishes. You just say it in plain language and the bot schedules it. The action survives container restarts, so it fires even if the bot reboots in between.

Use delayed actions for one-off future work: a reminder in an hour, a report that should start at 14:00, a notification when a long render finishes. For work that repeats on a schedule, use Auto Mode instead.

Delayed actions live in chat, not the dashboard

There is no dashboard page for delayed actions. You create, list, and cancel them by talking to the bot. The Scheduler page is for recurring Auto Mode schedules only — delayed actions do not show up there.

The three kinds

The bot supports three action kinds. You do not pick the kind by name — the bot infers it from what you asked for and calls the right one behind the scenes through its schedule_session_action tool. Internal names are listed so they are recognizable in logs.

Remind me later

Send you a message at a future time. The bot delivers exactly the text you asked for — no tool calls, no reasoning at delivery time. Use for reminders you just want spoken back at you.

REMIND_LATER

Run something later

Start a full agent turn at a future time. When the moment arrives, the bot picks up the instruction and runs it with tools — read files, make requests, produce output. Use for work the bot should do for you later, not just say to you.

RUN_LATER

Follow up when a job finishes

Notify you when a named background job reports it is done. The bot does not poll anything — the job (or the tool that started it) emits a ready event and the bot delivers the follow-up tied to that event.

NOTIFY_JOB_READY

How to schedule one

There is no special command. Say what you want and when — the bot parses the phrase, picks the right kind, and schedules it. The reply confirms the exact moment.

Reminders — REMIND_LATER
text
Remind me in 30 minutes to check the deployment.
Ping me tomorrow at 9 AM about the invoice.
At 6 PM, remind me to review the PR.
Delayed runs — RUN_LATER
text
In 5 minutes, start generating the weekly report.
At 14:00, continue processing the uploaded files.
Run the backup check in an hour.
Job follow-ups — NOTIFY_JOB_READY
text
When the video render finishes, send me the file.
Let me know when the data sync is done.
Tell me whether the export succeeded or failed.

How time is resolved

Under the hood, the tool accepts either a relative offset in seconds or an absolute UTC timestamp. The bot parses your natural-language phrase against its current clock the moment you ask — “in 30 minutes” and “tomorrow at 9 AM” both resolve to an exact UTC moment right then.

Say the timezone explicitly if it matters

The bot does not automatically apply your user-level timezone to phrases like “9 AM tomorrow.” If the action must fire at 9 AM Berlin time, say so: “Remind me tomorrow at 9 AM Berlin time.” If you leave the timezone out, the bot interprets the time in UTC or its local clock, which is rarely what you want for cross-timezone reminders.

Cancelling and auto-cancel

You can cancel a delayed action by asking in chat. The same tool handles create, list, and cancel — you do not need to know its name.

Cancel in chat
text
Cancel the reminder about the deployment.
Cancel my scheduled report run.
Cancel all pending reminders.

On top of manual cancellation, the bot also supports auto-cancel on activity — some actions cancel themselves the next time you send a message, before they ever fire. The rule depends on the kind:

  • Run later (RUN_LATER) — auto-cancels by default. The idea is that if you are talking to the bot again, the deferred job probably belongs in the current conversation now, not as a background kickoff.
  • Reminders (REMIND_LATER) — do not auto-cancel by default. A reminder is meant to reach you regardless of activity.
  • Job follow-ups (NOTIFY_JOB_READY) — also do not auto-cancel, since they are tied to an external event, not to your engagement.

You can override these defaults by saying so explicitly: “keep this reminder even if I message you” or “cancel this delayed run if I come back early.”

Restart and persistence

Pending delayed actions are persisted to automation/delayed-actions.json in the workspace and reloaded on boot. A reboot in the middle of a scheduled window does not drop the action — it fires on the next tick after the bot is back. Completed and cancelled actions are kept in the same file for a short audit window before being cleaned up.

When to use which

Delayed actions vs Auto Mode vs Webhooks

Use delayed actions for one-off future work you trigger yourself. Use Auto Mode for recurring goal-driven work on a cron schedule. Use webhooks when another system triggers the work over HTTP. If you catch yourself scheduling the same delayed action every day, switch to Auto Mode.

What to do next