Skip to main content

Scheduling Recurring Agent Work

Schedules let an agent run automatically on a cadence you set — weekly reports, daily pacing checks, and anything else that shouldn't depend on you remembering.

J
Written by Javier Garcia

What a schedule is

A schedule is a standing order: an agent, a prompt, one or more clients, and a cadence. Omega runs it for you and delivers the output — no reminders, no copy-pasting last week's request.

Find them under the Agents product: choose Schedules in the Automation group of the left rail.

Create a schedule

  1. Click New schedule.

  2. Give it a name and pick the agent that should run.

  3. Write the prompt — exactly what you'd type if you were asking by hand.

  4. Choose the clients. The client pinned in your top-bar client picker is added automatically; you can remove it or add several clients, and the schedule runs once per client each time it fires.

  5. Set the cadence — Daily, Weekly, or Monthly, with a time and timezone. An Advanced tab is there if you need a custom pattern.

  6. Pick where it delivers: in-app, to a Slack channel, or as a Slack direct message.

  7. Save. The list shows the cadence and the next run time at a glance.

Tip: You rarely need to start from scratch. After a good chat output, choose the option to run it on a schedule — the form opens with the agent and the exact prompt already filled in, so all that's left is the cadence. The same shortcut lives on each agent's detail page.

Only hear about it when something's off

A schedule normally posts every run. For check-style schedules delivering to Slack — pacing checks, threshold watches — you can make posting conditional by stating the condition in the prompt itself: "compute the month-to-date pace against the monthly budget; only post if we're more than 5% under or over — otherwise stay quiet." When the condition isn't met, the run still completes and files in-app (it keeps its row in Recent runs and your bell), but no Slack message goes out and your DM receipt stays quiet. Asking for this in chat — "set up a daily pacing check that only pings me when pacing is off" — writes the condition into the schedule for you.

Two expectations to set:

  • The quiet-or-post decision is made by the agent on each run against your written condition, not by a hard-coded threshold setting — so make the condition explicit and numeric, and know that an occasional post on a calm day can happen.

  • Failures always post. Quiet is only ever "checked, nothing to report" — a schedule can't fail silently.

What can't be scheduled

Two kinds of agents will stop you at the form, each with an explanation:

  • Agents that work from inputs you attach each run — a target page, screenshots, an uploaded export. A scheduled run can't carry files, so these can't be scheduled; run them from Chat instead, where attachments work.

  • Channel specialists with a family lead — recurring work for a lever-specific specialist goes through its parent agent, which balances across all the levers. The form names the agent to schedule instead; one-off runs from the specialist's own page still work.

Checking upcoming and past runs

Click any schedule to open its detail panel:

  • The header shows the cadence and when it runs next.

  • Recent runs lists each past run per client, with a status dot (delivered, failed, or delivery issue) and a note about where it was delivered.

  • Open on any run takes you to the full conversation and output for that run.

  • If a run produced its output but the delivery didn't land, a Re-deliver button sends it again.

Deliverables from scheduled runs are also filed into each client's folder in Files, so there's always a durable copy in the library. A schedule can also be tied to one of your projects — its runs then carry the project's standing context, show a project badge on the Workflow calendar, and file their deliverables into the project's Outputs alongside its chats.

Pausing, editing, and running on demand

  • Run now fires the schedule immediately — handy for testing a new prompt.

  • The Enabled toggle pauses a schedule without deleting it; paused schedules show a badge in the list.

  • Model pins every fire of the schedule to a model. Schedules run on the default model (Opus) unless you pick Sonnet 5, which does the same templated check or watch at about 40% of the cost when paired with Effort: High. Use it for health sweeps, spend and pacing watches, and inbox checks; leave a schedule on the default when its output is a full report or a diagnosis. You can change the pin any time from the form.

  • Effort pins how hard the model reasons on each run: Default (Low), Medium or High. Runs take longer at High — a scheduled check never notices — and Sonnet 5 matches the default model on templated monitors only at High, so set the two together.

  • Edit changes any part of it; Delete removes it for good.

Note: A schedule with several clients fans out — each client gets its own run, its own delivery, and its own row in Recent runs, so one flaky data source never hides the others.

Did this answer your question?