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

Your Scheduled Agent Forgot Who Approved That: The Approval Memory Fix

Your Scheduled Agent Forgot Who Approved That: The Approval Memory Fix Quick answer: A scheduled agent needs an approval record that survives between runs: who approved, the exact action and arguments, when approval was given, when it expires, and whether it was already used. Without that record, the agent either asks again every run until people stop reading and click yes on autopilot, or it treats an old yes as a permanent permission slip and runs an action that has changed since approval. P

Your Scheduled Agent Forgot Who Approved That: The Approval Memory Fix

Quick answer: A scheduled agent needs an approval record that survives between runs: who approved, the exact action and arguments, when approval was given, when it expires, and whether it was already used. Without that record, the agent either asks again every run until people stop reading and click yes on autopilot, or it treats an old yes as a permanent permission slip and runs an action that has changed since approval.

Picture a refund agent that runs every morning. It finds a refund needing a human sign-off, posts the request in Slack, and waits. A manager approves it at noon. The next morning, the agent runs again, sees the same refund still in the queue, and has no record of yesterday's approval. So it asks again. By the third morning, the manager has stopped reading the details and approves out of habit. That is not oversight. That is approval fatigue, manufactured by a system that forgets.

Scheduled runs make approvals harder, not easier

A chatbot asks for approval while you are sitting there. A scheduled agent asks at 2 a.m., while the approver is asleep, and the answer may arrive hours later, after the run that asked has already ended. The next run starts fresh. If the approval is not stored somewhere every run can reach, the next run has nothing to check.

A Slack message or email thread is a weak approval store on its own. Messages scroll away, threads get buried, and "yes, go ahead" in a chat thread does not say whether the yes covered one refund or every refund like it. Treat approval as a record, not a conversation. A usable record answers six questions: who approved and who asked, what exact action was approved with what exact arguments, when approval was given, when it expires, whether it was already used, and what happened when it ran. If any answer is missing, the approval is not safe to act on.

One yes means one action, once

The most important rule is also the simplest: one human yes covers one action, once, exactly as described. If the agent retries and generates a new request, the old approval does not carry over. If the arguments change between approval and execution, the approval does not count. The reviewer approved a specific refund amount on a specific order, not a category of refunds. Running a different amount under the old approval is acting without approval.

That rule protects you in both directions. It stops a duplicate send after a retry or a double-click, because an executed approval is marked used and cannot be spent again. It also stops argument drift, where the details change between the approval screen and the tool call. The check belongs in code, not in the model's judgment: compare the action about to run against the action that was approved, and refuse if they differ.

Pending approvals need a safe default too. A request cannot wait forever. The reviewer goes home, the message scrolls off, and the run that asked is long gone. When a pending approval expires, the run should resume with a denial, not a silent drop, and the agent should report that the action was not approved. A day is a reasonable starting window for an ordinary decision. A money-moving action should expire much faster.

Approval is a point-in-time decision

Even a fresh, specific, unused approval can go stale between the yes and the run. Inventory changes, a price changes, a recipient list gets edited. Treating approval as a permanent fact ignores all of that, so the agent should revalidate before it executes: check that the conditions the approver saw are still true, and that the amount, recipient, and target record match the approved arguments. If anything material has changed, stop and ask again.

Set expiry by blast radius, not by convenience. Reversible internal work can carry a longer window. Anything that sends money, messages a customer, publishes to a public channel, or deletes data should carry a short window and a hard stop at expiry. You can loosen a gate after watching the agent work for a week. You cannot un-send a payment that ran on a three-week-old yes.

What to gate, and what to leave alone

Not every step needs a human. Gating everything creates the fatigue problem all over again, and a queue full of trivial approvals trains people to approve without reading. Split the workflow by reversibility and cost. Let the agent run on its own when the step is cheap, internal, and easy to undo: drafting a summary, tagging a record, sorting a queue. Pause for a human when the step leaves the company or moves money: sending a customer message, issuing a refund, publishing to a live channel, or deleting records. If a mistake would be annoying, let it run and fix it later. If a mistake would be expensive or public, gate it.

Where shared memory changes the picture

All of this only works if the approval record is somewhere every run, and every tool, can reach. That is the part scheduled agents usually miss. The approval conversation happens in one tool, the action runs in another, and the next scheduled run starts in a third, with no shared record between them.

This is where a shared memory layer earns its place. With Vilix AI, the same memory follows your agents across tools over MCP, so the approval record is not trapped in one chat thread or one workflow's local state. The full conversation history is stored, not just a summary fact, so a later run can check the actual approval conversation: who said yes, to what, and when.

Vilix AI is cloud-hosted, so there is nothing to set up or maintain to get that shared memory, and your agents do not need separate memory infrastructure per tool. It is free forever on the free plan, with a 7-day Pro trial and no credit card required, and you can export everything or delete it anytime.

A checklist you can use this week

Start with one risky action and one approver. Make sure each approval passes this check: the exact action and arguments are stored, not just a "yes"; the approval has an expiry set by how expensive a mistake would be; one approval executes one action, once, and is marked used after it runs; an expired pending approval resumes as a denial, and the agent says so; before execution, the agent revalidates the approved conditions; and every decision lands in an audit trail with a timestamp and a name.

Scheduled agents do not fail at approvals because people are careless. They fail because the system asks people to remember what the system itself forgot. Give the approval a record that outlives the run that asked for it, an expiry that matches the risk, and a check that the action about to run is the action that was approved.

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
Your Scheduled Agent Loses Track Mid-Job. A Progress Ledger Fixes That.

Your Scheduled Agent Loses Track Mid-Job. A Progress Ledger Fixes That. Quick answer: A scheduled agent working on a job that spans several runs needs a progress ledger: one durable record of the goal, each step with its status, the last item completed, anything blocked and why, and the next step to take. Without it, every run guesses where the job stands, repeats finished work, or quietly drops the tail end of the job. Picture a nightly agent that migrates supplier records into a new system.

What Your Scheduled Agent's Handover Note Should Contain Between Runs

What Your Scheduled Agent's Handover Note Should Contain Between Runs Your scheduled agent runs every morning, every hour, or every fifteen minutes. Each run starts from zero. It does not remember yesterday's decisions, the customer it already helped, or the mistake it already made twice. So you keep stuffing more into the prompt, and the prompt keeps growing, and the agent still wakes up blind. The fix is not a longer prompt. It is a handover note: a short, structured note that one run leaves

Your Scheduled Agent's Memory Keeps Growing. Prune It Before It Slows Every Run Down

Your Scheduled Agent's Memory Keeps Growing. Prune It Before It Slows Every Run Down Every run adds to the pile. A scheduled agent that checks inboxes, updates a tracker, and sends a summary leaves behind notes, decisions, corrections, and raw logs. Week after week, that pile grows. At first the growth feels harmless, because storage is cheap and retrieval is fast. Then one morning the agent starts a run with a stale price, quotes a policy that changed months ago, or spends half its run sifting