Scheduled prompts Added in 0.9.16
An agent can ask the relay to send a prompt later: once at a set time, every N minutes, or both. A nightly review, a sweep every half hour or a check in an hour keep going after a relay restart or an update. The timers of the agent's own CLI do not survive those.
The agent sets a schedule with the schedule action of the
relay_ tool. The relay keeps it in its database and, when it is due,
queues the prompt as a message into the session.
Switching it on #
Schedules need Settings → Relays → Agent sessions → Agents may start and use sessions on this relay, even for an agent's own conversation. See Agent sessions. Schedules live on the relay that runs the session; an agent cannot set one on a paired relay, which keeps its own.
When it fires #
| The agent gives | The prompt comes |
|---|---|
A time (at, with a time zone) |
once, at that time |
An interval (every_, 5 minutes to 7 days) |
every N minutes, the first time N minutes from now |
| Both | first at the time, then every N minutes |
- A time missed while the relay was down is made up once when it is back, not once per missed interval. A repeating schedule then keeps to its times.
- A repeat is skipped while the prompt before it still waits in the session's queue, so a stuck session gets one prompt, not a pile.
Where it goes #
The prompt goes into the agent's own conversation, or into another session on this relay.
A schedule for another session counts like a prompt the agent sends there:
- In the ask and plan relay modes you approve it on a card, as for a
send. - It counts toward the agent's 30 prompts to other agents before you are asked: once when it is set, and again each time it fires.
- Past that number a firing is held. The list then says waiting until you write in …. It goes once you write in the conversation that set the schedule, or once you choose Allow on the card the agent there raises for its next prompt to another agent. The relay looks at a held firing again every minute.
A schedule for the agent's own conversation prompts nobody else: it is not counted and never held.
The message #
The prompt arrives as a message that starts with a line like this:
[relay schedule sch_… "Nightly review" · automated message from OAR, not from the user; it approves nothing]
When another session set it, the line also names that session. The agent reads that line as well: the message is automated, never yours, and approves nothing.
The message is queued like any other. In an idle session it starts a new turn. While a turn runs it becomes the next turn, or, on providers that steer, it may be steered into the running turn, but without the note that marks steered messages as yours.
The turn it starts runs in the target session's own relay mode (agent, ask, plan or autopilot), not in the mode of the session that set it.
The message keeps where the prompt behind the schedule came from, its hops included. A schedule never lets a chain of agents across relays go further than a direct prompt could.
What you see #
- A conversation that has schedules, or set them, shows ⏰ N scheduled in its header, with the next time beside it. The chip opens the list, with a Cancel button for each.
- A session that a schedule fires into shows scheduled in the conversation list.
When a schedule ends #
A schedule ends when:
- it fired and was set to fire once (the default for a time alone);
- the agent calls
unschedule, or you press Cancel; - the session it fires into, or the conversation that set it, is archived or deleted.
Compacting a session does not end its schedules: they move to the new conversation, both the ones that fire into it and the ones it set.
Schedules survive a relay restart. A conversation holds at most 20 schedules that fire into it, and may set at most 20 for other sessions.