Your Scheduled Agent Missed a Week of Runs. Should It Catch Up or Let Go?
Your Scheduled Agent Missed a Week of Runs. Should It Catch Up or Let Go? Your scheduled agent was supposed to run every morning. Then the host went down, the automation was paused for a migration, or the account that runs it got suspended for a few days. A week later everything is back, and the agent is ready to run again. Before it does, one question decides whether the comeback goes smoothly or turns into a second incident: what happens to the seven runs that never happened? Most schedulers
Your Scheduled Agent Missed a Week of Runs. Should It Catch Up or Let Go?
Your scheduled agent was supposed to run every morning. Then the host went down, the automation was paused for a migration, or the account that runs it got suspended for a few days. A week later everything is back, and the agent is ready to run again. Before it does, one question decides whether the comeback goes smoothly or turns into a second incident: what happens to the seven runs that never happened?
Most schedulers answer that question with a single global setting. Drop the missed runs. Replay all of them. Run the latest one once. Each of those answers is right for some jobs and wrong for others, and a single setting cannot tell which is which. The scheduler only knows when runs were supposed to fire. It does not know what those runs were for, what they would have sent, or who is still waiting on their output. That knowledge lives in memory, and that is why a missed-run policy is really a memory design problem.
Not all missed work is the same kind of work
The mistake is treating a missed run as one thing. A scheduled agent's jobs fall into different categories, and the right response depends on the category, not on how many runs were missed.
Missed reads are the easy case. A run that checks a dashboard, scans a queue, or summarizes new items produces no side effect on its own. Replaying a week of reads is wasteful, but a single fresh run that looks at the whole gap covers everything the missed reads would have found. Nothing is lost by collapsing them.
Missed sends are the dangerous case. A run that emails customers, posts updates, or triggers payments creates effects in the world that cannot be un-sent. Replaying a week of sends means a customer gets seven follow-ups, or the same invoice reminder goes out seven times. For sends, "catch up" is the worst possible default. A missed send needs a human decision or a rule that says it expired, not a replay.
Missed owed outputs sit in between. A weekly report, a compliance export, or a reconciliation file is work someone is actually waiting for. Dropping it silently means a gap in the record that nobody notices until audit time. This is the category worth catching up, and it should be caught up exactly once, as one run covering the whole gap, not as seven replays stacked on top of each other.
Sort every scheduled job into those three buckets before the next outage, not during it. The sorting takes ten minutes per job and it prevents the two classic failure modes: the silent gap and the flood.
Write four lines next to every job
Once the buckets are clear, each job needs a short written policy. Four lines are enough.
First, the type: a read, a send, or an owed output. Second, the missed-run rule: skip, catch up once, or replay. Most jobs should never say replay. Third, the maximum lateness: how late a result is still useful. A morning briefing might allow ninety minutes. A weekly report might allow a full day. A monthly close might allow several days, because the audience reads it when the month ends, not when the clock strikes. Fourth, the run key: a stable identifier built from the job and the window it covers, such as weekly-report plus the week number. The run key is what makes a repeated run harmless. If a run with that key already produced output, the next attempt sees the key and stands down instead of doing the work twice.
Maximum lateness does most of the work in practice. It turns an anxious judgment call into a comparison: current time minus scheduled time. If the gap is bigger than the limit, the job logs a skip with the reason and exits cleanly. A skip on purpose, recorded in the log, is completely different from a skip nobody noticed. The first is a decision. The second is a gap.
Catch up once means one run, not seven
When a job does deserve a catch-up, the shape of that catch-up matters. The returning run should cover the entire missed window in a single pass and write its result under the window's key. It should not re-execute each missed slot as if the week had happened normally. A week of daily briefings caught up properly is one briefing that says what changed across the week, not seven briefings arriving in one morning.
That single pass needs the right inputs. The agent has to know where the last successful run stopped, what arrived during the gap, and which items from the gap are still actionable versus already handled elsewhere. If the agent starts each run blank, it cannot answer any of those questions, so it guesses. It either replays everything or drops everything, and both guesses cost something.
This is where shared memory earns its keep. When every run reads from and writes to one memory, the returning run can look up the last completed window, the items already processed, and the outputs already delivered. The gap becomes a visible fact in memory instead of a mystery the agent has to reconstruct from logs. The policy lines live next to the job, but the ledger of what actually happened lives in the memory every run shares.
Where Vilix AI fits
Vilix AI gives scheduled agents that shared memory. It is cloud-hosted, so there is nothing to install or maintain, and it works over MCP, which means the same memory follows the agent across tools instead of being trapped inside one automation platform. The agent reads the last completed window, the standing rules, and the full conversation history, not just isolated facts, so a returning run can tell what was covered, what is stale, and what is still owed. When the policy says a missed send expired, that decision is recorded in the same memory, so the next run does not relitigate it.
Getting started costs nothing: the free plan is free forever, and the Pro plan comes with a 7-day trial that needs no credit card. Your data stays portable too. Export everything or delete it anytime, including individual memories, whenever you want. Check the plans at https://vilix.ai/?utm_source=vilix-blog&utm_medium=article&utm_campaign=scheduled-agent-missed-runs-catch-up-or-let-go
Decide before the next outage
Outages are not a question of if. Hosts sleep, migrations stall, accounts get paused. The agents that survive those weeks cleanly are not the ones with the cleverest scheduler settings. They are the ones whose owners wrote down, per job, what may be skipped, what must be caught up once, and how late is too late, and gave the agent a memory where those decisions and their outcomes are visible to every run.
Write the four lines for each job now, while nothing is on fire. The next time your agent comes back after a week offline, it will not have to guess. It will read the policy, check the ledger, catch up exactly what is owed, and let the rest go, with a log line to prove it.