At Code with Claude Tokyo on June 10, Anthropic shipped the feature I had been faking with shell scripts. Routines run a Claude Code agent on a schedule - a timer or a webhook - in the cloud, with no machine of your own awake to host it. The pitch was a single line:

Wake up to PRs that are ready to merge.

Alongside it, Dynamic Workflows went GA: one run can now fan out tens to hundreds of subagents against a job like a codebase-wide audit. Opus 4.8 became the default and fast mode got cheaper. Individually, features. Together, a category shift.

The Loop Became a Product

I have written this architecture by hand more than once. The Ralph Wiggum loop that just keeps going. The always-on agent parked in a terminal. The external scaffolding you bolt around the model to make it run unattended. Every one of those was me filling a gap the product hadn’t closed yet.

Routines closes it. The DIY autonomy stack - the cron entries, the keepalive, the webhook glue - collapses into a checkbox. This keeps happening: the clever workaround you were proud of becomes a line item in a changelog, and the moat you thought you’d dug turns out to have been a to-do on someone’s roadmap. That is the tax of building on a platform that is still becoming itself, and it is mostly a good tax to pay.

The Shift Is Judgment, Not Automation

Cron has run things unattended since the 1970s. Nothing new there. What is new is what runs.

A classic scheduled job is deterministic: same trigger, same action, same failure. If it is wrong, it is wrong identically every night, which makes it easy to catch and trivial to reason about. A Routine wraps a deterministic trigger around a non-deterministic actor. The 3am wake-up is reliable. What the agent decides to do at 3am is a fresh roll of the dice, against a codebase that changed since yesterday, with no one watching the screen.

Unattended plus non-deterministic is a new risk class

The danger isn’t that the agent fails. It’s how it fails. A broken cron job throws the same error into the same log and waits. A broken agent improvises: it picks the wrong fix, rationalizes it across a hundred subagents, opens a confident PR, and does it again tomorrow on a schedule, while you sleep. The blast radius of “wrong” scales with autonomy, and you just turned autonomy into infrastructure. Put the guardrails in before the timer, not after the incident.

What This Isn’t

The “wake up to merged PRs” line is a promise, and promises need fences:

  • Ready to merge is not should merge. A green PR at 7am still wants a human who understands the change. Autonomy moves the work, it doesn’t retire the judgment.
  • Standing agents bill while they stand. Every scheduled run and every fanned-out subagent burns tokens whether or not it produced anything worth shipping. Unattended cost is the easiest cost to lose track of.
  • Reliability isn’t capability. A Routine that runs flawlessly every night can still be flawlessly producing the wrong thing. The schedule guarantees it happens, not that it helps.

What You’ll Let It Do While You’re Not Looking

The question stopped being whether a coding agent can run without you. That’s answered, and now it’s a product. The question is the one a standing process has always forced: what are you willing to have happen, unattended, in your name, on a timer.

Cron grew judgment. The good news and the bad news are the same sentence.