Agent Memory Benchmarks: What LongMemEval Actually Measures

LongMemEval exposes a specific gap most agent demos never hit: facts that change over time. Here's what the benchmark scores mean for Mem0, Zep, Letta, and Hindsight - and how to pick.

Cover art for Agent Memory Benchmarks: What LongMemEval Actually Measures

Your agent aces its demo on Monday. A returning user comes back on Thursday with a different job title, a closed deal, or a changed preference. The agent confidently repeats what it knew last week. That is not a model problem. It is a memory problem - and across production agent systems, this is the defining Day-2 failure: the demo works because the whole conversation fits in one context window, and production breaks because real users come back across sessions, days, and topics.

The benchmark that has started separating real memory systems from demo-grade ones is LongMemEval. The scores vary by 40+ percentage points across leading frameworks. Understanding why the gap is that large tells you more about how to build a production memory layer than any vendor feature page.

What LongMemEval actually tests

LongMemEval focuses explicitly on the chat-assistant memory case. It defines five abilities: information extraction, multi-session reasoning, temporal reasoning, knowledge updates, and abstention. The full eval set is 500 curated questions. The temporal reasoning and knowledge-update categories are the ones that kill naive implementations - they require knowing not just what a fact says, but when it was valid.

LongMemEval_S has chat histories of roughly 115,000 tokens spread over about 40 sessions per user. LongMemEval_M extends that to roughly 500 sessions per chat history - the regime where naive context-stuffing breaks down completely.

Two other benchmarks round out the field: LoCoMo covers 1,540 questions across single-hop, multi-hop, open-domain, and temporal recall; BEAM evaluates at 1M and 10M token scales. But for most teams building session-persistent agents, LongMemEval is the most directly applicable. The practical takeaway for agent builders is to read benchmark scores in pairs: pair an accuracy number with its token cost; pair a single-session score with a multi-session one; pair a context-window probe with a memory eval. The pair is what tells the truth.

The 15-point gap between vector and graph architectures

This is where the architectural split between frameworks becomes concrete.

On LongMemEval, Zep's Graphiti backend scores 63.8% with GPT-4o while Mem0 lands at 49.0%. That is a 15-point gap on the exact capability - remembering facts that change over time - that most production agents need and most demos never test.

The root cause is structural. Mem0 uses vector similarity retrieval. Temporal queries require knowing when a fact was valid, not just what it currently says. Vector search returns the most semantically similar stored memory - which is the correct approach for "what does this user prefer?" but the wrong approach for "is this user's employer still the same company they mentioned in session 3?"

Zep's Graphiti engine stores facts with valid_at and invalid_at timestamps on every node and edge, meaning it knows not just what an agent remembered, but when that was true. That architectural choice - knowledge graph over flat vector store - is what produces the score gap. It also explains why graph-native memory costs more: Zep starts at $25/month for graph features, while the equivalent Mem0 graph tier is gated at $249/month.

The current leaderboard, simplified:

Framework LongMemEval overall Architecture Self-hostable
Hindsight 91.4% (Gemini-3 Pro) Hybrid Yes (free)
Mem0 (new algorithm) ~93.4% Vector + selective edit Yes (Apache 2.0)
Zep / Graphiti 71.2% Temporal knowledge graph Graphiti only
Letta 83.2% OS-inspired tiered memory Yes
Mem0 (GPT-4o, older) 49.0% (temporal sub-task) Vector similarity Yes

A few notes on reading that table honestly. Mem0's new token-efficient algorithm, published April 2026, closed the gap significantly - the older score of 49.0% on temporal retrieval rose to 93.4% per Mem0 Research. Independent verification of that number is still limited; treat it as a self-reported claim until third-party evals catch up. Hindsight's 91.4% is real, but it reaches that score with Gemini-3 Pro

  • swap in a cheaper model and the number drops.

Most memory benchmarks fit entirely in modern context windows, making memory systems unnecessary for those specific tests. If a vendor's eval doesn't specify the session count and context length, it may be measuring something a long-prompt baseline would also pass.

49% → 93%Mem0 temporal retrieval gainnew algorithm vs older vector approach (self-reported)
15 ptsZep vs old Mem0 on LongMemEvalfrom graph vs vector architecture
500 sessionsLongMemEval_M history lengthwhere context-stuffing fully breaks

The staleness problem nobody benchmarks well

Getting recall right is the tractable part. The harder problem is confident wrongness - when a highly-retrieved memory is no longer accurate.

Memory staleness occurs when a highly-retrieved memory about a user's employer is accurate until they change jobs, at which point it becomes confidently wrong. Decay handles low-relevance memories. Staleness in high-relevance memories is a harder, open problem.

This matters more than the benchmark scores suggest. A memory system that scores 71% on LongMemEval but surfaces stale facts confidently is worse in production than one that scores 60% but abstains when uncertain. LongMemEval does have an abstention category, but a system that scores well on accuracy but requires 26,000 tokens per query is not production-viable

  • and one that answers confidently with outdated facts is not trustworthy.

The two other open problems the research consensus flags: cross-session identity resolution (the memory model assumes a stable user_id, but anonymous sessions, multi-device users, and mixed auth flows break that assumption); and resolving whether two interactions came from the same person is an unsolved identity problem at the memory layer.

A teammate like Beagle handling team queries in Slack runs into both: the same person might open threads from a browser, a mobile client, and a bot mention, and their role or project may change between conversations.

Beagle in action#product, Tuesday 10:22am
The ask
'what did we decide about the API rate limits last sprint?'
Beagle drafts
checks the persistent memory store for this channel's prior decisions, finds an entry from three sprints ago that was superseded by a newer one, surfaces the correct updated decision with a timestamp
You approve
you approve the reply; the stale entry is flagged for decay rather than deleted outright
Do this in your workspace

How to pick a framework before you have your own evals

The benchmark table is a start. The real question is which failure mode you can least afford.

  • If your agent tracks facts that change (user role, project status, deal stage): start with Zep / Graphiti. The temporal knowledge graph architecture is specifically built for this, and the 15-point LongMemEval gap is the empirical evidence.

  • If your agent needs personalization across a fixed user profile: Mem0's new algorithm is credible - the April 2026 token-efficient update is worth testing if you were previously priced out by the graph tier.

  • If you're running inside LangChain or LangGraph: LangMem integrates natively with zero additional infrastructure.

  • If your agent needs to keep improving across runs (coding agents, long-horizon research tasks): Letta's tiered memory model is built for long-running agents.

  • If air-gapped deployment is a hard requirement: Cognee and Memori are the options; neither currently advertises SOC 2, which matters for healthcare, finance, or any enterprise procurement that gates on certifications.

One thing the framework comparisons mostly skip: governance. The differences between frameworks show up at scale: temporal accuracy, multi-agent coordination, compliance posture, and whether the framework can be grounded in your actual data estate rather than just session history. A memory layer that stores facts without lineage or audit trail will eventually create a different kind of problem than the ones LongMemEval measures.

Agent memory in a multi-session support workflow
Without Beagle
each session starts cold; the agent asks for context the user already gave; stale answers go out because nobody invalidated last month's policy note
With Beagle
a persistent memory layer injects validated prior context; facts carry timestamps; an abstention flag triggers a human review when confidence is low

Agent persistent memory: common questions

What is LongMemEval and why does it matter for agent memory?

LongMemEval is a 500-question benchmark that tests AI agent memory across five categories: information extraction, multi-session reasoning, temporal reasoning, knowledge updates, and abstention. It matters because it covers the scenarios - facts that change across sessions - that most agent demos never test and most production deployments eventually hit.

How does Zep compare to Mem0 on benchmarks?

On GPT-4o, Zep scores 63.8% and Mem0 scores 49.0% on LongMemEval, a 14.8 percentage point gap in Zep's favor. The gap comes from architecture: Zep's Graphiti engine stores timestamps on every fact, making temporal queries tractable in a way flat vector retrieval is not. Mem0's April 2026 algorithm update claims to close most of that gap, but independent verification is still limited.

What is the memory staleness problem in AI agents?

Memory staleness is when a highly-retrieved stored fact was once correct but is now wrong - a user's old employer, a superseded policy, a closed project. Unlike low recall (which benchmarks catch), staleness produces confident wrong answers, which is often worse. No current benchmark fully penalizes this; the abstention category in LongMemEval partially addresses it.

When should I use a knowledge graph memory layer instead of a vector store?

Use a knowledge graph - Zep / Graphiti, Cognee - when your agent needs to track how facts change over time, not just which facts are semantically similar to the query. If your memory only needs to answer "what does this user prefer?" vector retrieval is sufficient. If it needs to answer "what was this user's role last quarter, and has it changed?" you need timestamps on nodes and edges.

Do larger context windows make persistent memory frameworks unnecessary?

Frontier models in 2026 have 128K-1M context windows , which handles short-to-medium session histories inline. But LongMemEval_M extends to roughly 500 sessions per chat history - the regime where naive context-stuffing breaks down completely. At that scale, token cost alone makes full-context approaches unworkable; a selective memory layer that writes salient facts and injects them at retrieval time is the only cost-viable option.

Keep reading