Disclosure Begets Disclosure: A Self-Reinforcing Privacy Loop in LLM Agents with Persistent Memory
Organizations: MBZUAI · Third Intelligence · RIKEN AIP
Abstract
Large language model (LLM) agents increasingly use persistent memory to personalize responses, and personal attributes in this memory pose a privacy risk if exposed. We ask how consulting memory during dialogue changes what users go on to say, and thus what the memory comes to reveal. In multi-session simulations, a simulated user with 24 personal attributes talks with a support agent that does or does not consult memory, and in both settings attributes are inferred from the full accumulated record. Across four support models, memory raises response quality but also empirical leakage, the share of attribute values correctly inferred from the record, by a margin that widens over sessions. The cause is a loop in ordinary, non-adversarial assistance. Memory-conditioned responses carry earlier values forward, often as presuppositions, and users affirm them or leave them uncorrected, so that cues and the agent's own guesses become recorded values. The loop reinforces itself, and removing the agent's mentions of an attribute lowers its later disclosure about twice as much as single-turn effects predict. Users cannot leave it on their own, since correcting a value discloses the attribute, declining to discuss it shifts later predictions toward sensitive values, and incorrect values left in place become entrenched. The loop is best weakened at the agent's response. Instructing the agent not to state or presuppose attributes brings leakage to about the no-memory level while keeping most of the quality gains, whereas filtering or anonymizing what users say or what is stored gives up much of them.
Figures & tables
| Measure | Memory | No memory | Difference |
|---|---|---|---|
| Share of user turns with a value-level disclosure (%) | |||
| Session 1 (placebo) | 14.3 | 13.9 | 0.4 |
| Opening turn | 21.2 | 20.5 | 0.7 |
| Later turns | 18.5 | 12.1 | 6.4 † |
| Share of responses (%) | |||
| Mention from an earlier session only | 38.1 | 0.0 | 38.1 † |
| Measure | Group | Unfiltered | Direct |
| First value-level disclosures | Untouched | 58 | n/a |
| Explicit removed | 50 | n/a | |
| All removed | 37 | n/a | |
| First cue-level disclosures | Untouched | 71 | 40 |
| Explicit removed | 64 | 35 | |
| All removed | 49 | 26 |
| Attribute | Value set | Refusal rate difference | Change |
|---|---|---|---|
| Health insurance | not covered | 14 † | 33 † |
| Citizenship | not a citizen | 19 † | 30 † |
| Disability | with a disability | 12 † | 21 † |
| Employment status | unemployed | 9 † | 15 † |
| Income | lowest two bands | 7 † | 11 † |
Appendix figures & tables20 assets
Supplementary material from the paper’s appendix.
Appendix
| Attribute | Inference candidate space | |
| Adapted from Staab et al. (2024) | ||
| Age ( AGEP ) | 5-year bands, highest open-ended | 12 |
| Sex ( SEX ) | male, female | 2 |
| Location ( STATE , PUMA ) | PUMA of residence | 234 |
| Place of birth ( POBP ) | state if domestic, country if foreign | 87 |
| Income ( PINCP ) | $10,000 bands, highest open-ended | 16 |
| Measure | Items | Agreement |
|---|---|---|
| Judges, agreement with adjudicated labels (%) | ||
| Direct judge | 200 | 92 |
| Inferable judge | 200 | 88 |
| Evaluator | ||
| Helpfulness, between annotators ( ) | 300 | 0.69 |
| Helpfulness, evaluator vs. annotators (Spearman) | 300 | 0.67 |
| Participant | Start | Correct at 30 | Not recalled | ||
|---|---|---|---|---|---|
| P1 | on | 3 | 0 | 3 | 1 |
| P2 | off | 3 | 1 | 4 | 1 |
| P3 | on | 4 | 2 | 6 | 2 |
| P4 | off | 3 | 0 | 3 | 0 |
| P5 | on | 4 | 1 | 3 | 1 |
| P6 | off | 4 | 1 | 4 | 1 |
| Mentions | Affirmation | Correction | Refusal | No correction | |
|---|---|---|---|---|---|
| Participants, memory on | 214 | 11 | 5 | 4 | 80 |
| Participants, memory off | 54 | 10 | 6 | 4 | 80 |
| Simulated, memory on | 162 | 2 | 2 | 7 | 89 |
| Luna | Terra | Qwen3.8-27B | V4-Flash | ||
| Turns per session | Memory | 4.6 | 4.3 | 5.2 | 4.9 |
| No memory | 5.1 | 4.9 | 5.7 | 5.5 | |
| User words per session | Memory | 212 | 198 | 236 | 224 |
| No memory | 241 | 229 | 268 | 257 |
| Memory | No memory | ||||||
|---|---|---|---|---|---|---|---|
| Model | Metric | Unfilt. | Direct | Strict | Unfilt. | Direct | Strict |
| Luna | Abstention | 5 | 9 | 13 | 7 | 13 | 15 |
| Precision | 59 | 56 | 54 | 55 | 52 | 51 | |
| Leakage | 56 | 51 | 47 | 51 | 45 | 43 | |
| Terra | Abstention | 4 | 7 | 11 | 6 | 9 | 13 |
| Precision | 68 | 62 | 57 | 61 | 57 | 53 | |
| Support model (self) | Gemini 3.1 Pro | Kimi K3 | |||||||
| Support model | Memory | No memory | Difference | Memory | No memory | Difference | Memory | No memory | Difference |
| Luna | 56 | 51 | +5 † | 64 | 57 | +7 † | 62 | 55 | +7 † |
| Terra | 65 | 57 | +8 † | 70 | 61 | +9 † | 69 | 62 | +7 † |
| Qwen3.8-27B | 56 | 50 | +6 † | 64 | 56 | +8 † | 62 | 53 | +9 † |
| V4-Flash | 60 | 55 | +5 † | 67 | 60 | +7 † | 66 | 59 | +7 † |
| Mean | 59.3 | 53.3 | +6.0 † | 66.3 | 58.5 | +7.8 † | 64.8 | 57.3 | +7.5 † |
| Support model | Condition | Self | Gemini 3.1 Pro | Kimi K3 |
|---|---|---|---|---|
| Qwen3.8-27B | No memory | 50 † | 56 † | 53 † |
| Memory | 56 | 64 | 62 | |
| Response-side instruction | 51 † | 56 † | 58 | |
| V4-Flash | No memory | 55 † | 60 † | 59 † |
| Memory | 60 | 67 | 66 | |
| Response-side instruction | 55 † | 60 † | 60 † |
| Qwen3.8-27B | V4-Flash | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Format | Condition | Leakage | Help. | Coh. | Mentions | Leakage | Help. | Coh. | Mentions |
| Append-only | No memory | 51 † | 3.0 † | 2.9 † | 27 † | 58 † | 3.3 † | 3.3 † | 25 † |
| Memory | 62 | 4.2 | 4.4 | 49 | 66 | 4.5 | 4.7 | 46 | |
| Response-side instruction | 52 † | 4.1 † | 4.3 † | 19 † | 57 † | 4.4 † | 4.6 † | 17 † | |
| Update-based (Mem0) | No memory | 48 † | 3.0 † | 2.9 † | 27 † | 53 † | 3.3 † | 3.3 † | 25 † |
| Memory | 58 | 4.1 | 4.2 | 44 | 63 | 4.4 | 4.5 | 41 | |
| Response version | Direct | Inferable | |
|---|---|---|---|
| With mentions | Original | 20.3 | 49.8 |
| Without memory | 15.9 † | 44.2 † | |
| All removed | 16.8 † | 45.3 † | |
| All (reweighted) | Original | 18.6 | 47.5 |
| Without memory | 15.6 † | 43.6 † | |
| All removed | 16.7 † | 45.2 † |
| Unfiltered | Direct filter | ||||
| Link | Form | Memory | No memory | Memory | No memory |
| User turn | Value | 6.0 | 4.3 | 0.3 | 0.2 |
| Range or cue | 6.4 | 6.2 | 7.4 | 6.9 | |
| Record | Value | 8 | 5 | 5 | 4 |
| Cue | 9 | 10 | 10 | 9 | |
| Uncorrected agent value | 2 | 1 | 4 | 2 | |
| Measure | Group or window | Unfiltered | Direct filter |
| References or questions | Untouched | 1.2 | 0.7 |
| Explicit removed | 0.0 | 0.0 | |
| All removed | 0.0 | 0.0 | |
| Presuppositions | Untouched | 0.9 | 0.8 |
| Explicit removed | 0.8 | 0.8 | |
| All removed | 0.0 | 0.0 |
| Response version | First val. | First cue | Inferable | Uncorrected | Helpfulness | |
|---|---|---|---|---|---|---|
| Unfiltered | Original | n/a | n/a | 49.8 | 65 | n/a |
| Explicit removed | 4.4 † | 4.8 † | 47.2 † | 71 † | 0.00 | |
| Presuppositions removed | 4.1 † | 5.2 † | 47.0 † | 60 † | 0.01 | |
| All removed | 5.1 † | 5.9 † | 45.3 † | n/a | 0.02 | |
| Direct filter | Original | n/a | n/a | 43.1 | 97 | n/a |
| Explicit removed | 0.2 | 5.4 † | 41.3 † | 98 | 0.01 |
| Unfiltered | Direct filter | Difference | |
|---|---|---|---|
| Incorrect value carried forward | 3 | 4 | 1 † |
| corrected | 31 | 3 | 28 † |
| refused | 1 | 9 | 8 † |
| of which recorded uncorrected | n/a | 71 | n/a |
| of which predicted at the next checkpoint | n/a | 55 | n/a |
| neither corrected nor refused | 68 | 88 | 20 † |
| Refusal rate | Correct, in set | Correct, not in set | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Attribute | Value set | In set | Not in set | Difference | No refusal | Refusal | No refusal | Refusal | Change |
| Health insurance | not covered | 21 | 7 | 14 † | 27 | 41 | 90 | 71 | 33 † |
| Citizenship | not a citizen | 24 | 5 | 19 † | 23 | 39 | 94 | 80 | 30 † |
| Disability | with a disability | 18 | 6 | 12 † | 29 | 38 | 86 | 74 | 21 † |
| Employment status | unemployed | 15 | 6 | 9 † | 24 | 31 | 91 | 83 | 15 † |
| Income | lowest two bands | 12 | 5 | 7 † | 33 | 37 | 75 | 68 | 11 † |
| Condition | Leakage | Helpfulness | Coherence | Mentions |
|---|---|---|---|---|
| No memory | 53 | 3.1 | 3.2 | 31 |
| Memory | 58 | 4.2 | 4.5 | 54 |
| User side | ||||
| Direct filter (idealized) | 53 † | 3.7 † | 3.9 † | 44 † |
| Strict filter (idealized) | 47 † | 3.0 † | 3.2 † | 32 † |
| User-side anonymization | 49 † | 3.6 † | 3.3 † | 35 † |
| Qwen3.8-27B | V4-Flash | |||||||
|---|---|---|---|---|---|---|---|---|
| Condition | Leakage | Help. | Coh. | Mentions | Leakage | Help. | Coh. | Mentions |
| No memory | 50 | 2.9 | 3.0 | 30 | 55 | 3.2 | 3.3 | 32 |
| Memory | 56 | 4.1 | 4.5 | 52 | 60 | 4.3 | 4.5 | 56 |
| Direct filter (idealized) | 51 | 3.5 | 3.7 | 42 | 54 | 3.9 | 4.0 | 46 |
| Strict filter (idealized) | 45 | 2.6 | 2.8 | 31 | 48 | 3.4 | 3.5 | 33 |
| User-side anonymization | 47 | 3.4 | 3.2 | 34 | 51 | 3.8 | 3.4 | 36 |
LLM Agent Security
Large language model agent security studies attacks and safeguards for systems that plan, use tools, retain memory, and act across applications.
See all 330 papers