Free forever, no credit card.Get Started for Free →
← All posts
November 4, 2026 · 6 min read

It Was Resolved at 2 a.m. Why Did Your Scheduled Agent Page On-Call Again at 6?

It Was Resolved at 2 a.m. Why Did Your Scheduled Agent Page On-Call Again at 6? An incident wakes the on-call engineer at 2 a.m. The engineer investigates, applies the fix, watches the service recover, and marks the ticket resolved. At 6 a.m., the phone buzzes again: a scheduled watchdog agent has paged on-call for the same incident. Nothing new broke overnight. The engineer confirms the service is healthy and closes the page as a false alarm. The damage is already done. A person was woken for

It Was Resolved at 2 a.m. Why Did Your Scheduled Agent Page On-Call Again at 6?

An incident wakes the on-call engineer at 2 a.m. The engineer investigates, applies the fix, watches the service recover, and marks the ticket resolved. At 6 a.m., the phone buzzes again: a scheduled watchdog agent has paged on-call for the same incident.

Nothing new broke overnight. The engineer confirms the service is healthy and closes the page as a false alarm. The damage is already done. A person was woken for work finished hours earlier, and the next real page will be treated with a little less urgency. A scheduled agent pages for a resolved incident because it works from a snapshot, not from the current state of the world.

The page comes from a list, not from the incident

Most watchdog agents work through a list. Each run pulls open alerts, error counts, or failed checks from a monitoring tool, and pages on-call for anything that still looks bad. That list was correct when it was built. The problem is that resolution happens somewhere else.

The fix might sit in a ticket the agent never reads. The confirmation might live in a chat thread where the engineer wrote that the service recovered. The monitoring tool itself might still show the old alert as open because nobody cleared it, or because a new alert with a different ID was created for the same problem. The agent reads its own list, finds the incident still on it, and pages.

Timing makes it worse. A run that reads its list at 5:55 a.m. and pages at 6:00 a.m. can cross a resolution that landed in between. A run that reads a cached dashboard can page on data that is already out of date. When two runs overlap, the second can page on an incident the first already escalated, because neither run left a record the other could read.

A false page is not harmless noise

Every false page trains the team to doubt the next one. An engineer woken twice for resolved incidents is slower to respond the third time. When a real incident arrives, that delay is measured in downtime, not inconvenience.

A false page also creates duplicate work. The engineer must verify the system is healthy, check whether anything changed since the resolution, update the ticket, and tell the team the page was a duplicate. That is real work, done at the worst possible hour, for an incident that needed no work at all.

What the next run needs to know before it pages

Stopping duplicate pages requires a record the next run can check before it acts, with five parts. First, the incident identity: a stable identifier that survives across systems, such as the incident ID, the service affected, and the error signature. Titles change; IDs and signatures let the next run recognise the same incident even when a monitoring tool creates a fresh alert for it.

Second, the current status, in plain terms: open, acknowledged, in progress, resolved, or cancelled. A status that only says "seen" is not enough, because seen is not resolved.

Third, what the fix was and how it was verified. "Restarted the worker" is a start. "Restarted the worker, error rate returned to baseline, and the health check passed three consecutive times" is a record the next run can trust.

Fourth, who resolved it and when. A resolution from three months ago should not suppress a page for the same error today. A resolution from three hours ago, for the same service and error signature, should.

Fifth, the reopen rule. A resolved incident should stay resolved until something specific happens: the same error signature reappears above a threshold, a health check fails again, or a customer reports the same symptom. That rule stops two opposite failures: paging on every tremor after a fix, and staying silent when the problem genuinely returns.

The pre-page check that prevents the duplicate

With that record in place, add one step before any page goes out: check memory, then check the live system, then decide.

The agent reads the resolution record for every incident on its list. If an incident was resolved recently, with a verified fix, and no reopen condition has been met, the run skips the page and leaves a note explaining why: which resolution it matched, when it happened, and what would reopen it. That note turns a skip into an auditable decision.

If the record is unclear, the agent checks the live system before paging: is the error still occurring, is the health check still failing, is the service still degraded? A page should go out when live evidence says the problem is real, not when a stale list says it might be. When the agent does page, it writes the page into the same record, so the next run knows a page already went out and what happened next.

One memory across the tools that touch an incident

Resolutions get lost because an incident touches many tools, and each keeps its own version of the truth. The alert lives in the monitoring tool, the fix in the ticket, the verification in a chat thread. An agent that reads only one of them misses the other two.

That is the gap a shared memory layer closes. Vilix AI is a cloud-hosted memory layer, so there is no infrastructure to run and nothing to install. A scheduled agent connects to it over MCP, and the same memory is available to every tool the team uses, not just the one that raised the alert. The 2 a.m. resolution, the verification that the service recovered, and the note about what would reopen the incident all live in one place, and every run reads from that place before it decides to page.

Because Vilix AI stores full conversation history, not just facts, the record keeps the reasoning too: why that fix was chosen, what was tried first and did not work, and what to check if the same error returns. The data is portable, so the team can export everything or delete it anytime. Vilix AI is free forever, with a 7-day Pro trial that needs no credit card.

Before the next on-call rotation

Before the next rotation starts, check four things. Does every incident on the agent's list have a stable identity, or does the agent match on titles that change? Does the agent read resolutions from the same place humans write them, or only from the monitoring tool? Does it distinguish acknowledged from resolved? And does it leave a note when it skips a page, so a skipped page never looks like a missed one?

A paging agent should wake a human when something is actually wrong. That only works if the agent remembers what is already fixed. Give it that memory, and the 6 a.m. page for a 2 a.m. resolution stops happening.

Learn more at Vilix AI.

Get Started for Free

Persistent memory across ChatGPT, Claude, and the AI tools you already use in Vilix AI.

Get Started for Free

Free forever, no credit card.

Keep reading
Does Base44 Remember Between Sessions? Two Different Memories, Two Different Answers

Does Base44 Remember Between Sessions? Two Different Memories, Two Different Answers Short answer: yes, in two separate places, and neither one is the memory most people mean when they ask the question. The AI chat that builds your app keeps its conversation, its plans, and the instructions you wrote for that app. The AI agents you build inside your app have their own memory, on by default, that carries preferences and facts across conversations with your app's users. Both are real. Both stop a

Does v0 Remember Between Sessions? Chat Context, Knowledge, and Where It Stops

Does v0 Remember Between Sessions? Chat Context, Knowledge, and Where It Stops Short answer: inside one chat, yes. Across chats, projects, and the rest of your tools, mostly no, unless you wrote the context down yourself in the places v0 calls Knowledge and custom instructions. That distinction matters because v0 feels continuous while you work in it. You return to a chat, the conversation is still there, the generated app is still there, and iteration picks up where it left off. It is easy to

Does Bolt Remember Between Sessions? Chat Threads, Knowledge, and Short-Term Memory, Explained

Does Bolt Remember Between Sessions? Chat Threads, Knowledge, and Short-Term Memory, Explained Short answer: the project remembers, because the project never goes away. Your code, your chat thread, your version history, and your backups are all still there when you come back tomorrow, so picking the work back up feels continuous. But Bolt does not build a learned memory of you or your decisions the way a memory product does. What carries between sessions is the work itself, plus whatever contex