What the Fix Actually Does
PR #16511, authored by kkhomej33-netizen, introduces three capabilities that should have existed from day one:
Custom Session IDs
Cron jobs can now target a named session like session:project-alpha-daily. The agent remembers the conversation. State persists across runs. Your morning summary agent knows what it told you yesterday.
Auto-Bind to Current Session
Setting sessionTarget: "current" resolves to whatever session was active when the cron job was created. Create a scheduled task from a Telegram group, and it runs in that group's context automatically.
Backward-Compatible Defaults
System event payloads still default to “main.” Agent turns still default to “isolated.” Nothing breaks. You only get persistence when you ask for it.
Why It Took 13 Months
I want to be precise about this. The fix itself — the code — is well-scoped. 76 tests across four files. Type definitions updated in TypeScript, Swift, and the UI layer. Normalization logic that handles whitespace, case sensitivity, and fallback behavior. This is not sloppy work.
The question is why a feature that users were openly describing as a blocker — “everyone using multiple sessions are having trouble with crons” — sat as an open issue for over a year. The PR itself went through multiple review rounds over a month, with type sync issues and validation debates stretching from February 14 to March 14.
This is the pattern with open-source infrastructure projects: the hard problems aren't hard technically. They're hard organizationally. Someone has to care enough to submit the PR. Someone else has to care enough to review it thoroughly. And the project has to have a process that doesn't let “thorough” become a synonym for “slow.”
“Everyone using multiple sessions are having trouble with crons.” — Community comment on issue #9765, five months before the fix landed.
What This Unlocks
Stateful cron jobs are table stakes for any serious agent platform. Without them, scheduled agents are just scripts with a timer. With them, they're actual assistants — entities that build context over days and weeks.
A monitoring agent can now compare today's results to yesterday's without external state management. A reporting agent can build a running summary over a week. A Telegram bot that checks a competitor's pricing page can tell you what changed, not just what the page says right now.
The feature ships with macOS support via a new Swift enum, meaning the desktop app handles session targeting natively. The web UI types are updated. The CLI falls back gracefully when “current” can't resolve to a session context.
Thirteen months. One feature. Zero excuses for how long it took. But credit where it's due: the implementation is exactly what users asked for, and the test coverage suggests the team learned from past mistakes. OpenClaw's scheduled agents can finally remember yesterday. Let's see if the project can remember this lesson.