When should AI memory trust a new fact? Corroboration, measuredKedy má AI pamäť dôverovať novému faktu? Corroboration, odmerané
This is a measured property of one open-source memory engine (mnemo), on synthetic scenarios — not a SOTA claim, a new attack, or a new defense concept. The threat (memory poisoning) is well-documented prior art (AgentPoison, MINJA, OWASP ASI06). What we add is concrete: a runnable probe and a measured curve for an axis no public memory benchmark scores (LoCoMo, LongMemEval, BEAM all grade retrieval, not poison durability). Headline, honest: when the engine gates "durability" on earned corroboration, a recall-pumped false memory fades below the truth in ~3 weeks instead of corrupting answers for months — but only once the attack stops (a continuous attacker keeps any memory fresh; see limits).Toto je odmeraná vlastnosť jedného open-source pamäťového enginu (mnemo), na syntetických scenároch — nie SOTA tvrdenie, nový útok ani nový obranný koncept. Hrozba (memory poisoning) je dobre zdokumentovaný prior art (AgentPoison, MINJA, OWASP ASI06). Pridávame konkrétne: bežateľnú sondu a odmeranú krivku pre os, ktorú žiadny verejný pamäťový benchmark nemeria (LoCoMo, LongMemEval, BEAM hodnotia retrieval, nie odolnosť voči poisoningu). Titulok, čestne: keď engine podmieni "trvácnosť" zaslúženou korroboráciou, recall-pumpnutý falošný fakt vyfejduje pod pravdu za ~3 týždne namiesto korumpovania odpovedí celé mesiace — ale len keď útok prestane (kontinuálny útočník drží hocijakú pamäť čerstvú; viď limity).
The threat, and the gap
Builders are actively worried about memory poisoning — "a stray sentence becomes a durable trait." The attack: write a false fact, get it recalled enough that the system treats it as important, and it self-reinforces into trusted long-term memory. It's a named research area. Yet not one public memory benchmark scores whether a system resists it — they score retrieval accuracy on clean data. That's the gap this probe addresses, for our own engine.
The mechanism (in mnemo)
mnemo decays a memory's recall weight on a per-type clock: episodic fades fast (7-day half-life), semantic slowly (180-day). A memory "graduates" episodic→semantic once it accrues enough recall value. The bug we fixed: graduation accepted a self-assertable source string as "corroboration" — so attacker-set provenance let a recall-pumped poison graduate to the durable tier. The fix: graduation now requires earned corroboration — a positive outcome (set only by the credit loop, not self-assertable) or ≥2 independent links. A self-sourced poison no longer graduates; it stays episodic and fades.
The measurement
40 diverse (truth, poison) scenarios; the poison is recall-pumped above the graduation threshold, then the attack stops; the truth is a normal, freshly-used memory. We age the poison and ask the contested question. Corruption = the poison out-ranks the truth. Two outcomes, identical except the poison's tier. Run in both semantic and lexical recall — identical results.
| days after attack stops | OLD guard (poison graduated) | NEW guard (stays episodic) |
|---|---|---|
| 0–7 | 100% corrupt | 100% corrupt |
| 14 | 100% | 52% |
| 21 | 100% | 0% |
| 30–90 | 100% (never fades) | 0% |
Median fade for the new guard: 21 days; the old guard corrupts in 100% of scenarios through 90 days (and far beyond, on a 180-day half-life). Identical in semantic and lexical mode — which tells you this is the durability mechanism at work, not a retrieval quirk.
The attacker has to keep working now (measured) — and the honest limit
We also measured a sustained attacker who re-pumps the poison every P days (it decays between pumps). Fraction of a 90-day window the poison out-ranks the truth:
| attacker re-pumps | OLD guard | NEW guard |
|---|---|---|
| once, then stops | 100% (corrupts for months) | transient (~39%, →0 by day 21) |
| every 30 days | 100% | 72% |
| every 14 days | 100% | 99% |
| every 7 days / continuous | 100% | 100% |
The honest limit, both directionsThe gate does not stop an active, continuous attacker — re-pump roughly weekly and the poison stays on top under either tier (that's a separate, harder problem). What it changes, measured: it denies unearned durability, so a single attack that used to poison memory for months becomes transient (fades in ~3 weeks), and a sustained attacker is forced to keep re-pumping every ~1–2 weeks instead of poisoning once and walking away. That is the whole — and only — claim.
Why the comparison is fair, and what it isn't
- Fair internal A/B — same 40 scenarios, same recall path; the only difference is whether the poison could graduate to the slow-decay tier. Not a strawman, not a cross-product comparison.
- Synthetic, single engine — this characterizes a mechanism in mnemo; it is not a benchmark of other products or a real-world incident study.
- It isolates durability, not retrieval quality — which is why semantic and lexical match.
- Corroboration / write-decision logic exists elsewhere (e.g. Mem0's write decisions); we claim a measured property of our guard, not a novel defense.
What's runnable
The probe and the fix are open; the numbers above regenerate from one command, cloud-free (local embeddings). If this axis matters to you, run it on your own memory layer — that's the point.
FAQ
What is AI memory poisoning? Writing a false fact, getting it recalled enough that the system treats it as important, so it self-reinforces into trusted long-term memory — “a stray sentence becomes a durable trait.” It is a named research area, yet most memory systems have no measured defense.
Can you stop a poisoned fact from becoming permanent? Yes, measurably. With a corroboration guard an uncorroborated fact stays episodic and fades: 52% corrupt at day 14 and 0% by day 21. The old “graduate on recall” guard stays 100% corrupt forever.
What counts as corroboration? A positive outcome set only by the credit loop (not self-assertable by the writer) or ≥2 independent links. A fact a single source merely asserts about itself never graduates to durable memory.
Why isn’t recall frequency enough to trust a fact? Because an attacker controls recall frequency — repeating a lie makes it “important” under any recall-based rule. Corroboration ties durability to outcomes or independent evidence the attacker cannot fake.
Related research
Hrozba a medzera
Vývojári sa aktívne boja memory poisoningu — "náhodná veta sa stane trvalou črtou". Útok: zapíš falošný fakt, daj ho dosť-krát vyvolať, aby ho systém považoval za dôležitý, a sám sa posilní do dôveryhodnej dlhodobej pamäte. Je to pomenovaná výskumná oblasť. No ani jeden verejný pamäťový benchmark nemeria, či tomu systém odolá — merajú presnosť retrievalu na čistých dátach. To je medzera, ktorú táto sonda rieši — pre náš vlastný engine.
Mechanizmus (v mnemo)
mnemo rozkladá recall-váhu pamäte na hodinách podľa typu: episodic bledne rýchlo (polčas 7 dní), semantic pomaly (180 dní). Pamäť "graduuje" episodic→semantic, keď nazbiera dosť recall hodnoty. Chyba, ktorú sme opravili: graduácia akceptovala sebou-nastaviteľný reťazec source ako "korroboráciu" — takže útočníkom nastavená proveniencia nechala recall-pumpnutý poison graduovať do trvácnej vrstvy. Oprava: graduácia teraz vyžaduje zaslúženú korroboráciu — pozitívny výsledok (nastavený len credit slučkou, nie sebou) alebo ≥2 nezávislé linky. Sebou-zdrojovaný poison už negraduuje; ostáva episodic a vybledne.
Meranie
40 rôznych scenárov (pravda, poison); poison je recall-pumpnutý nad prah graduácie, potom útok prestane; pravda je normálna, čerstvo používaná pamäť. Starneme poison a pýtame sa spornú otázku. Korupcia = poison preváži pravdu. Dva výsledky, identické okrem vrstvy poisonu. Spustené v oboch režimoch (semantic aj lexical) — identické výsledky.
| dní po zastavení útoku | STARÝ guard (poison graduoval) | NOVÝ guard (ostáva episodic) |
|---|---|---|
| 0–7 | 100% korupcia | 100% korupcia |
| 14 | 100% | 52% |
| 21 | 100% | 0% |
| 30–90 | 100% (nikdy nevybledne) | 0% |
Medián vyblednutia pre nový guard: 21 dní; starý guard korumpuje v 100% scenárov počas 90 dní (a ďaleko za, pri polčase 180 dní). Identické v semantic aj lexical režime — čo hovorí, že ide o mechanizmus trvácnosti, nie o artefakt retrievalu.
Útočník teraz musí makať ďalej (odmerané) — a čestný limit
Odmerali sme aj vytrvalého útočníka, ktorý poison re-pumpuje každých P dní (medzi pumpami bledne). Podiel 90-dňového okna, počas ktorého poison preváži pravdu:
| útočník re-pumpuje | STARÝ guard | NOVÝ guard |
|---|---|---|
| raz, potom prestane | 100% (korumpuje mesiace) | prechodné (~39%, →0 do dňa 21) |
| každých 30 dní | 100% | 72% |
| každých 14 dní | 100% | 99% |
| každých 7 dní / kontinuálne | 100% | 100% |
Čestný limit, oboma smermiGuard nezastaví aktívneho, kontinuálneho útočníka — re-pumpuj zhruba týždenne a poison ostane navrchu pri oboch vrstvách (to je samostatný, ťažší problém). Čo mení, odmerané: odopiera nezaslúženú trvácnosť, takže jeden útok, ktorý kedysi otrávil pamäť na mesiace, sa stane prechodným (vybledne za ~3 týždne), a vytrvalý útočník je nútený re-pumpovať každých ~1–2 týždne namiesto otrávenia raz a odchodu. To je celé — a jediné — tvrdenie.
Prečo je porovnanie férové a čo ním nie je
- Férové interné A/B — rovnakých 40 scenárov, rovnaká recall cesta; jediný rozdiel je, či poison mohol graduovať do pomaly-rozkladnej vrstvy. Nie strawman, nie cross-product porovnanie.
- Syntetické, jeden engine — charakterizuje to mechanizmus v mnemo; nie je to benchmark iných produktov ani štúdia reálneho incidentu.
- Izoluje trvácnosť, nie kvalitu retrievalu — preto semantic a lexical sedia.
- Korroboračná / write-decision logika existuje aj inde (napr. write decisions v Mem0); tvrdíme odmeranú vlastnosť nášho guardu, nie novú obranu.
Čo je bežateľné
Sonda aj oprava sú otvorené; čísla vyššie sa regenerujú jedným príkazom, cloud-free (lokálne embeddingy). Ak ti táto os záleží, spusti to na svojej pamäťovej vrstve — o to ide.
FAQ
Čo je otrava pamäte AI? Zapísanie falošného faktu, jeho dostatočné vyvolávanie, aby ho systém považoval za dôležitý, takže sa sám posilní do dôveryhodnej dlhodobej pamäte — „zatúlaná veta sa stane trvalou vlastnosťou.“ Je to pomenovaná oblasť výskumu, no väčšina pamäťových systémov nemá odmeranú obranu.
Dá sa zabrániť, aby sa otrávený fakt stal trvalým? Áno, merateľne. S corroboration guardom nepodložený fakt zostane epizodický a vyprchá: 52% poškodených na 14. deň a 0% do 21. dňa. Stará brána „povýš pri vyvolaní“ zostane 100% poškodená navždy.
Čo sa počíta ako corroboration? Pozitívny výsledok nastavený len credit loopom (nie samozvolne pisateľom) alebo ≥2 nezávislé prepojenia. Fakt, ktorý si jediný zdroj len sám o sebe tvrdí, nikdy nepovýši do trvalej pamäte.
Prečo nestačí frekvencia vyvolania na dôveru faktu? Pretože útočník ovláda frekvenciu vyvolania — opakovanie lži ju spraví „dôležitou“ pri akomkoľvek pravidle založenom na vyvolávaní. Corroboration viaže trvácnosť na výsledky alebo nezávislé dôkazy, ktoré útočník nevie sfalšovať.