A scheduled assistant should not have to rediscover the same procedure every morning. QM, an open-source workplace agent for Slack and the web, merged a new option on November 3: attach a script to a recurring agent task, let it do the routine work, and call on the agent when that procedure cannot finish.
The important case is not just a check that finds nothing. In the yc-software/qm test fixture, the handled script prints that it posted three rows. The scheduled run records no session model requests. That fixture illustrates the new division of work; it is not evidence of a real report being published.
Follow one scheduled attempt
Known work can stop here.
The script’s result decides whether the main agent turn starts. Choose an illustrative outcome; this is a code explanation, not a live run.
Handled: the main agent turn is skipped.
Scheduled task
Attached script
Does the repeatable work first
Handled by the script
The command exits 0 without timing out. It may already have posted or written the result. QM records the outcome and ends before the main agent turn.
The other ending: ask the agent
Exit 1, another nonzero result, timeout or ordinary execution failure passes the stored task and available, bounded output to the agent. Cancellation is separate.
Handled is the script’s claim. This path does not verify the business result. Saving the script runs it for real; worker retries skip this script path.
The script gets the first decision
A cron is a job scheduled to run repeatedly or at a specified time. QM already lets such a job carry a task for an agent. The new optional script attaches a shell command, with credential handles and a selected computer when needed, to that task.
On an eligible first scheduled attempt, the orchestrator runs the command through its existing execution tools. If it exits with code zero and did not time out, QM records the work as handled and returns before the main agent turn. The command might have checked for changes, written a file or posted a result. Its author decides what counts as completion.
Exit one deliberately hands the job to the agent. Other nonzero results, timeouts and ordinary execution failures also take that path. The agent receives the stored task and available script output, bounded to fit and subject to the configured output screening. Cancellation can interrupt the run rather than becoming an ordinary escalation.
This is not an independent judge of the script’s work. If the procedure reports success while publishing the wrong rows, the return code alone cannot expose that mistake. The useful boundary is a repeatable job with a completion condition its author can actually express.
Saving it is a real run
The admission rule matters before the first scheduled occurrence: attaching the script runs its command immediately. The trial must finish with exit zero or one. A missing command, timeout or another exit code prevents it from being saved.
That trial is useful for catching a broken command before it becomes recurring work. It can also write or post for real. A procedure that sends a report needs to handle repetition intentionally; the trial is not a simulation. A worker retry follows a different path, skipping the script and taking the task to the agent, so the integration does not itself promise that an external action happens exactly once.
QM’s earlier scheduler already recognized special command paths such as !run and !scratch. The new arrangement is more specific than adding scripts to a scheduler: it combines a task’s attached procedure, a real setup trial and an automatic handoff to the agent when routine execution cannot settle the job.
A choice before choosing the model
Google’s November 3 routing experiment asks which model configuration should answer a task. Its low-thinking Flash baseline already solved all 50 questions, setting a stronger comparison for the classifier-assisted route. Google describes a single-run, short-prompt experiment and says its benchmark code awaits open-source review.
QM puts a different choice earlier in the workflow: does this scheduled occurrence need the main agent turn at all? The two sources do not establish a common savings result. A shell command can itself call a paid service or a model, and the scheduler, session setup and execution environment still do work.
We inspected the merged code, its parent and test definitions; we did not run a live QM job or establish a containing release. What the source offers operators is a concrete design: keep interpretation available without making it the compulsory entrance to every repetition. The next useful trial is a real recurring job followed through routine completion, an exception and a retry—checking the resulting work, not merely whether the agent stayed quiet.