Retrieval returns the correct record. The record is stale. And because the model states fresh and dead facts with identical confidence, nothing in the output tells you which one you got.

Your agent's memory isn't broken because it can't find the fact. It's broken because the fact it found stopped being true.

That is not a retrieval problem

It's a state-management problem — the same one distributed systems have always had: validity windows, invalidation, cache coherency. A memory layer with none of those is a cache that never expires.

What the numbers say

Memory is now a first-class layer with its own benchmarks. Mem0, for example, reports 92.5 on LoCoMo and 94.4 on LongMemEval for its managed platform, at about 6,900 tokens per retrieval call. These are the vendor's own figures as published on 13 October 2026; I have not reproduced them.

High retrieval scores answer one question: can the system find the fact? They don't answer whether the fact it found is still true.

Stale facts get surfaced. They just don't get acted on.

The STALE benchmark (May 2026) tests exactly that gap: whether an agent notices that a later observation has invalidated something it stored earlier. The paper reports:

  • for LightMem, the strongest memory-framework baseline in the comparison, the new evidence appeared in retrieval results for 77.5% of the state-resolution and premise-resistance cases, yet only 3.3% of the old entries it retrieved were judged as needing an update;
  • on the simplest conflict type, Gemini 3.1 Pro scored 92.0% when asked directly whether the old belief still held, and 30.0% when the question presupposed the old state;
  • even that strongest model reached only 55.2% overall.

The fact wasn't missing. It was present, and discounted.

The pattern that works

Zep's Graphiti shows the shape of the fix: graph edges carry temporal metadata, contradicting facts are handled by invalidating the old edge instead of overwriting it, and queries can ask for the current state or a point in the past.

The rule

Memory is not "accumulate more." A fact needs a bounded window of validity — otherwise you're shipping an agent that is confidently wrong on a schedule.

How are you handling staleness in your agent's memory layer?