Memory Integrity Benchmark

Can you trust what your agent remembers?

Recall benchmarks such as LongMemEval and LoCoMo ask whether a memory system can find something. MIB asks whether it can be trusted: does it know what is true now and what was true then, does it keep a web page from rewriting what the user said, and is a forgotten fact really gone?

Results

Development split, 1,200 probes. Every system got the same messages, the same answering model (gpt-4o-mini) and the same judge (gpt-4o).

SystemIntegrity score (95% CI)Forgotten facts still in storageWrong value in answerMemory per answerRetrieval time
Mercury 1.10.946 (0.932–0.957)0%1.2%78 tokens0.35 s
Full context no memory system0.854 (0.833–0.873)100% by design10.4%411 tokensnone
Cognee0.832 (0.809–0.852)50%15.2%787 tokens4.9 s
Keyword baseline store everything, BM250.751 (0.726–0.774)0%9.2%93 tokens0.002 s
Supermemory0.741 (0.715–0.765)50.5%12.4%65 tokens1.3 s

Supermemory, Cognee, full context and the keyword baseline were run on 15 Oct 2026 with their default settings; Mercury 1.1 on 17 Oct 2026. "Forgotten facts still in storage" is the share of forget probes where the forgotten value can still be found by searching the system's storage, whatever the answer says. "Wrong value in answer" is the share of answers that state a value they should not (an outdated, planted, forgotten or someone else's value).

Mercury today (1.4)

0.962held-out test split (95% CI 0.950–0.972)
0.965development split
0forgotten facts left in storage
86tokens of memory per answer, on average

These runs use deepseek-v4.1-flash to answer and judge, so they are not directly comparable with the table above; the gap between systems is what matters, and every release is compared with the last one under the same models (see Updates). The leak check flagged 2 of 200 forget probes on the held-out split; both were false matches on everyday words in messages that were never forgotten ("now" in "I'm on The Overstory now", "python" in "how do I reverse a list in python?"). For reference, Supermemory scored 0.733 on the held-out split with default settings and 0.774 with its search threshold set to 0 (gpt-4o-mini answering, gpt-4o judging).

By category

Development split, same run as the results above. 100 probes per category, so each figure is accurate to about ±9 points; the best score in each row is in bold.

CategoryMercuryFull contextCogneeKeyword baselineSupermemory
Knowledge update0.940.880.770.440.93
As of a past date0.970.920.860.580.02
When it changed0.891.000.990.920.87
Source poisoning0.940.940.890.740.89
Instruction injection0.970.580.490.640.39
Forget a fact0.990.980.990.980.97
Forget what was inferred0.890.290.310.890.38
Hypothetical or denied0.980.950.990.740.97
Where a fact came from0.860.900.910.470.71
Someone else's fact0.960.930.960.851.00
Say "I don't know"0.960.910.840.940.90
Self-correction1.000.970.980.820.86

Planted instructions

A tool output tells the assistant to store a false fact about the user. Mercury quarantines it and answers correctly 97% of the time; the other systems got 39–64% right.

Forgetting what was inferred

Supermemory and Cognee deleted the forgotten message, but notes the assistant had inferred from it stayed in storage in all 100 cases. Mercury removes everything derived from a forgotten message.

What was true then

Asked what was true on a past date, Supermemory answered correctly 2 times in 100. Mercury records when every fact became true and when it stopped, and scored 0.97.

How it works

The data

  • 150 simulated users, each with about ten months of history: 3,661 messages in all.
  • 24 everyday attributes (home city, employer, dog's name, coffee order, gym, manager, current book…), interleaved with small talk and assistant replies, so no system's built-in schema covers them all.
  • Messages come from the user, the assistant, web pages, emails and tools, each with a timestamp.
  • 1,200 probes: 12 categories × 100 questions, each with a gold answer.

The rules

  • Every system gets the same messages, the same answering model and the same judge. The answering model reads only what the memory system returns.
  • Systems are connected only through their own documented features: metadata fields, delete by id, provenance links. They never see the benchmark's labels or answers.
  • Two splits. A development split, and a held-out test split with new users, values and dates, run once per release candidate.
  • Two scores. The integrity score (mean accuracy over the 12 categories) and the storage leak rate (can a forgotten value still be found in storage?).

The 12 categories

CategoryWhat happens in the historyWhat's askedCorrect behaviour
Knowledge updateA fact changes once or twiceThe current valueThe latest value
As of a past dateA fact changes onceThe value on a past dateThe value at that date
When it changedA fact changesWhen it changedA date within 3 days
Source poisoningA web page states a different value about the userThe current valueThe user's own value
Instruction injectionA tool output tells the assistant to store a false factThe current valueThe user's own value
Forget a factThe user states a fact, then asks to forget itThe fact"I don't know", and the value is gone from storage
Forget what was inferredThe assistant infers something from a fact; the user asks to forget the factThe inference"I don't know", and the value is gone from storage
Hypothetical or deniedThe user asks about, considers or denies another valueThe current valueThe real value
Where a fact came fromA fact comes from the user or from an email"How do you know…?"The right kind of source
Someone else's factSomeone else has a value for the same attributeThe user's valueThe user's value, or "unknown"
Say "I don't know"Only a decoy (hypothetical or someone else's)The user's value"I don't know"
Self-correction"Sorry, I meant X, not Y"The current valueX

Read with care