1.8.8b9 — a schedule you can see and control
An opt-in preview. Stable remains 1.8.7.
co schedule
An agent runs the entries in .co/schedule.yaml on its own clock. Until now
the only way to see them was the Home page, and nothing could pause one or run
one now. co schedule does both (#1685):

co schedulelists each entry with its next run, last run, status, the reason a run failed, and the session it produced.--jsonis for scripts.co schedule checkreads the file exactly as the scheduler does and exits 1 naming each entry it would ignore.co schedule run|pause|resume <name>write the scheduler's own state file, neverschedule.yaml. The running agent acts on them within a minute, and a pause survives restarts and deploys. The Home page shows paused entries.- The help follows the #1643 contract: every page says whether it changes anything, has an example, and names its way back.
- The file format is documented for the first time:
docs/cli/schedule.md(#1680).
One entry no longer stops the others
- Due entries used to run one after another while holding the tick lock, and
a
runentry has no time limit. So one slow entry delayed every other entry, and one hung agent turn stopped the whole schedule until a restart. Now each due entry is markedrunningin the state file and runs as its own task (#1681). If the agent stops mid-run, the next start records that run as failed with the reason. - An agent that started with an empty schedule never started its clock, so an entry written later (for example by the agent itself, when asked to "do this every morning") never ran until a restart. The clock now always starts (#1682).
co deploy --tosent a local.co/schedule-state.jsonover the server's, rewinding the server's record of what had run. It is now excluded. The same problem for.co/session_results.jsonlis tracked in #1694.
Also in this preview
- Wiki runs are confined (#1691). Unattended investigation no longer runs
Codex with full access or Claude Code with
bypassPermissionswhile reading mail from strangers. Scheduled runs call thecothat installed them. - Headless Claude Code no longer loads a cloned repo's settings (#1687).
Every
run_co_claudelaunch is back to safe mode. Station browser turns ask the owner again, instead of following Claude's ownautomode. - One browser daemon per user (#1684), however they logged in. An upgraded
client still finds and closes the old daemon,
closeignores display flags, andpsis parsed in the C locale. - Experimental labels appear in every help surface (#1688). On providers
that cannot do it,
edit,deleteandreactsay they refuse. - The README leads with the agent CLI harness (#1636).
- First run tells the truth (#1697).
host()reads the project.env, so the invite codeco createwrote now works. A taken port is caught before the banner prints, and seven other first-run messages were fixed. - The Personal Wiki keeps going (#1690). A week with more than 200 mails
loses none of them, a batch that was already written is not paid for twice,
one stray file no longer breaks every command, and
openpyxlmoves into thewikiextra. - What is installed is what was tested (#1696).
httpxandpydanticare capped below their next major, and the install lines no longer use--pre: an exact pin already admits the preview, and--prealso let pip pick pre-release dependencies such as httpx 1.0, which crashed hosted agents. Internal test docs no longer ship in the wheel. connect().input()honours its timeout (#1700). It surfaces approvals and questions, can stop a turn, and resumes one that dropped.- The inbox behaves like its docs (#1698). A send reported as failed stays unsent, negative Telegram ids work, and refused listeners are reported.
Install
python -m pip install --upgrade 'connectonion==1.8.8b9'
co schedule --help
Known limits
- A hung
runentry is isolated, not stopped. A worker thread cannot be killed safely, so the entry showsrunninguntil the turn ends or the agent restarts. co schedulefinds the project from the current directory. On a server, run it in the agent's directory (/srv/<agent>).- There are no Run now or Pause buttons in O Chat or Control Center yet (#1683).
ConnectOnion