Schedule a job
Have the agent do work on its own clock — just ask it to
The agent doesn't need you in the loop to do work. You can give it jobs that run on a schedule — "every morning, summarize yesterday's commits and post them to #standup" — and it does them on its own clock.
Just ask the agent
The simplest way to schedule a job is to tell the agent what you want, in plain language, from the terminal or any channel where you're the owner:
Every weekday at 9am, summarize yesterday's commits in workspace/ and post the summary to #standup.
The agent sets up the schedule itself. Behind the scenes it's writing a small config file for you and reloading — you don't touch it. Ask it to "list my scheduled jobs" or "stop the standup summary" the same way.
You don't edit config by hand
Schedules live in a file the agent manages, not you. Asking it in plain language is the intended path — it knows the format, validates it, and reloads itself. The exact file shape is in the cron.json reference if you ever want to read what it wrote.
Two kinds of job
When you ask, you're really choosing between two things the agent can schedule:
- A prompt — the agent wakes up on schedule with a starter instruction, like a fresh little task ("summarize the commits…"). This is what you want most of the time.
- A shell command — a plain command runs inside the container on schedule (a backup script, a sync job). Ask for this when there's no thinking involved, just a command to run.
You don't need to know which is which to ask — describe the outcome and the agent picks the right kind.
You're protected from a stranger scheduling things
Here's the safety property that makes this trustworthy: a job can only do what the person who scheduled it was allowed to do.
When you, as owner, ask for the standup summary, the job is stamped with your authority and can post to channels. If a low-privilege stranger in some channel tried to get the agent to schedule something, that job would be stamped with their (near-zero) authority — so it couldn't post, couldn't push, couldn't touch anything. Privilege is fixed at scheduling time and can't be escalated when the job later runs.
You don't configure any of this; it's automatic. The full reasoning is in the Permissions model, and locking down public channels is its own guide.
Going deeper
Next: Add a provider — give it a cheaper model for routine work and a stronger one for hard problems.