All News
News13 Months in the Making

OpenClaw's Scheduled Agents Couldn't Remember Yesterday. A 13-Month Fix Just Landed.

Every cron job started from scratch. Every conversation vanished between runs. Issue #9765 sat open for thirteen months while users built workarounds on top of workarounds. Then one contributor wired in the memory.

March 22, 20266 min read

Here's the pitch for OpenClaw's cron system: schedule your AI agent to run tasks automatically. Check your email every morning. Summarize Slack at 6 PM. Monitor a competitor's pricing page overnight.

Here's what actually happened: every scheduled run started with a blank slate. The agent had no memory of the last run. No context from the conversation it was supposed to be continuing. No awareness of what it had already told you. Your “daily email summary” agent would re-introduce itself every morning like you'd never met.

The reason was architectural. Cron jobs defaulted to “isolated” sessions — ephemeral containers that exist for one execution and then evaporate. The session system supported persistence. The cron system didn't know how to ask for it. There was no way to say “run this in the same conversation as last time.”

Timeline

Thirteen months from problem to solution. Here's how the gap grew.

Jan 2025Issue #9765 opened

Users report cron jobs can't maintain conversation state across runs. Every execution starts fresh.

Feb–Aug 2025Workarounds proliferate

Community builds external state persistence hacks. File-based caches. Database wrappers. None officially supported.

Feb 14, 2026PR #16511 opened

kkhomej33-netizen submits "feat(cron): support custom session IDs and auto-bind to current session." The review process begins.

Feb–Mar 2026Multiple review rounds

Type sync issues, validation edge cases, Swift enum parsing for macOS. The PR is rebased on March 6 after conflicts.

Mar 14, 2026Merged by ImLukeF

76 tests across four files. Custom session IDs, auto-binding, and backward-compatible defaults. The feature ships.

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.

76

Tests across 4 files

28

Days in review

13

Months the issue sat open

DeployClaw News · by Carlos Simpson

DeployClaw hosts OpenClaw instances. Upstream fixes ship automatically. This publication covers development independently.

Stateful cron. Zero config. Already deployed.

DeployClaw patches your OpenClaw instance the moment upstream merges land. Session-aware cron is already live.