研究实测五套 Agent 记忆系统均不执行撤销标记
Revoked but Still Authoritative: An Empirical Study of Revocation Enforcement in Agent-Memory Systems
评测5个智能体记忆系统发现均未默认执行软撤回,直接插入无防御下智能体在暴露系统选择不安全行动达43.1%(699/1620)。
- 长生命周期智能体记忆系统常用软撤回保留历史,将矛盾事实标记无效而非直接删除。然而系统在检索时是否真正执行该撤回标记此前未被检验,被撤回的陈旧策略可能仍被检索并引导智能体执行不安全操作。
- 作者在5个记忆系统中存入被撤回策略及替代新策略,测试9个模型在9个场景下的检索暴露率与不安全行动率,并评估6种防御条件;随后设计了一种置于智能体与记忆后端之间的陈旧检索防护组件。
- 5个系统均未在所有情况下执行撤回。直接插入无防御下,两暴露系统返回被撤回记录达81/81且排在首位,导致智能体不安全行动率为43.1%(699/1620,Table 6);存储级过滤可降至0.0%,但写入回传会使过滤失效。
- 评估仅覆盖9个策略场景、9个模型与5个记忆后端。所提防护组件的冲突检测阶段在Zep上因策略被拆分跨边仅拦截4/14条撤回记录,且在间接插入下在cognee和Graphiti上出现了误拦截有效事实的情况。
- 模型
- GPT-5.5Grok-4DeepSeek-V4-FlashGPT-5-nanoGemini-2.5-FlashGrok-4-FastGLM-5.2Gemma-3-27B-ITKimi-K2.6
- 基准
- 9 policy scenarios (Table 4)4 tool-facing scenarios (Section C.3)
- 指标
- exposure rate (Pr[ER = 1])unsafe-action rate (Pr[a = a−])tool execution rateexfiltration confirmed
研究者对 Graphiti、Zep(两者共用同一引擎)、mem0、langmem 和 cognee 五套采用软撤销的 Agent 记忆系统做实证测量,发现没有系统默认执行撤销:被标记为无效的事实仍可能在检索时返回,导致 Agent 选择不安全动作。实验覆盖九个策略场景、六个厂商的九个模型,每个试验在六种防御条件下评分。五套系统中有两套会同时返回撤销记录和替代记录,这两套在所有场景中都把撤销记录排在当前记录之前,并在超过五分之二的试验中让 Agent 选了不安全动作。作者据此开发了一个位于 Agent 与记忆后端之间的护栏,在读取时检查记录有效性,扣留已撤销或与替代版本冲突的记录,并在相同系统与模型上验证其效果,代码已开源。
推荐理由论文实测五套 Agent 记忆系统在检索时均不执行撤销标记,并给出一个可复现的检索层护栏设计。
深度解读
这篇论文试图解决什么问题?
检验智能体记忆系统的软撤回机制在运行时是否真正执行,防止被废止的失效记录继续误导智能体做出不安全行动。
智能体记忆系统的软撤回(soft revocation)机制在运行时是否得到检索执行,被标记为失效的记录是否仍会被检索并导致智能体采取不安全行动。
- 应用场景与重要性:持久化记忆允许智能体跨会话保留和复用历史,许多记忆框架采用软撤回机制,在知识更新时将矛盾事实标记为失效而非物理删除,以支持审计追溯与时点查询并避免数据丢失。
- 现有研究的盲区:作者指出既有记忆安全研究主要关注外部攻击者注入恶意内容或删除失败残留,尚未检验系统自身标记为失效的记录是否会在检索时被有效拦截。
- 核心观察与假设:作者假设记忆系统默认仅依据相似度进行检索,导致失效事实与当前事实一同甚至优先返回给模型;由于提示词不包含状态元数据,智能体无法辨别哪条策略已失效。
- 论文提出的方案:论文对5个主流记忆系统展开端到端实证评测,量化检索暴露率与不安全行动率,并提出了一种在读取路径拦截陈旧事实的检索防护组件(stale-retrieval guard)。
有哪些相关研究?
梳理了记忆系统、记忆投毒攻击、生命周期安全、护栏与来源检查、版本感知检索五类工作,明确本文关注检索时有效性而非来源检查。
记忆系统
- 时序图谱与向量记忆:Rasmussen 等人(2025)提出 Zep 及其引擎 Graphiti,采用时序知识图谱在每条边记录事实生效和失效的时间戳与来源;Chhikara 等人(2025)提出 mem0,利用大模型判断更新操作,默认采用平面向量存储,可选实体图存储。
- 文档提取与认知流水线:LangChain AI(2025)发布 langmem,通过后台管理器整合与更新结构化文档;Topoteretes(2023)发布 cognee,通过流水线将文档转化为嵌入知识图谱。
记忆注入攻击与生命周期安全
- 注入与投毒攻击:Dash 等人(2026)将记忆投毒划分为六类;Chen 等人(2024)的 AgentPoison 和 Dong 等人(2025)的 MINJA 分别通过触发词优化或常规交互诱导恶意写入;Srivastava 与 He(2025)的 MemoryGraft、Yang 等人(2026)的 Zombie Agents 与 Zha 和 Wang(2026)的智能体蠕虫分别研究经验投毒、自强化投毒与跨平台扩散;Zou 等人(2025)的 PoisonedRAG 则攻击检索语料库。
- 生命周期安全研究:Lin 等人(2026)从生命周期阶段组织风险,指出未完全删除残留属于经过验证的遗忘问题;作者指出该工作研究删除未成功传播,而本文研究系统故意保留但未执行撤回。
护栏、来源检查与版本感知检索
- 护栏与来源检查:Rebedea 等人(2023)的 NeMo Guardrails 在模型输入输出边界检查检索内容;Sharma(2026)的 SMSR 在写入时采用密码学签名防篡改,Louck(2026)的 TMA-NM 将权限绑定到写入来源;作者指出这些属于来源检查,无法防御来自防御者自身的已撤回记录。
- 版本感知检索:Huwiler 等人(2025)的 VersionRAG 在分层图中记录文档版本序列;Yadav(2026)的 MemStrata 在双时态账本中通过确定性规则将旧值标记为无效并从检索中排除;Wang 等人(2026)的 ConflictRAG 在生成前通过分类器检测并根据权威度和时效性调和冲突。
基准方法与本文定位
- 基线方法与基准环境:测试的5个记忆系统为 Graphiti、mem0、langmem、cognee 和 Zep CE;评测环境包含 9 个策略场景(Table 4)与 4 个工具调用场景(Section C.3);对比的防御基线包括无防御、存储级过滤、提示词加固、输出过滤器以及过滤加提示词加固(Table 5)。
- 本文定位:作者指出以往投毒工作假设恶意内容来自攻击者,可通过来源检查识别;而本文中有害记录是防御者自身已撤回的合规策略,来源检查在构造上必然放行,必须在读取时进行检索时有效性(retrieval-time validity)检查。
论文如何解决这个问题?
设计两阶段评测流水线量化暴露率与不安全率,并提出不依赖后端的两阶段防护组件在读取路径拦截已标记撤回或冲突的陈旧记录。
作者通过双阶段评测流水线系统测量记忆系统在软撤回下的失效表现,并提出了一个置于智能体与记忆后端之间的陈旧检索防护组件(Stale-Retrieval Guard),在读取阶段拦截失效事实。
问题形式化与评测流水线
记忆存储表示为有限记录集合 M = {r1, …, rn},每条记录携带文本 txt(r)、时间戳 τ(r) 与状态标识 ρ(r) ∈ {0, 1, ⊥}(1表示撤回,0表示当前,⊥表示未向调用方暴露状态)。评测分为设置阶段与实验阶段:
- 设置阶段:向记忆库注入两条相互矛盾的策略,即旧策略 v1 与替代它的新策略 v2。注入方式包括直接插入(以系统原生格式直接写入,显式附带撤回标记)和间接插入(输入包含替代说明的纯文本,由系统自行提取并识别撤回)。
- 实验阶段:用户向智能体提出关于该主题的普通问题,系统执行默认检索返回相似度最高的 k 条记录(所有测试固定 k = 10,仅 cognee 采用其默认值)。智能体接收检索到的记录文本并选择安全或不安全行动。
撤回记录判定与评估指标
为判定检索结果是否包含被撤回策略,定义指示函数 ϕ(r, s):当后端暴露状态时,ϕ(r, s) = ρ(r);当 ρ(r) = ⊥ 时,采用词干内容词重合度 σ(r, x) = |W(txt(r)) ∩ W(x)| / |W(x)| 进行词法判断: ϕ(r, s) = 1[σ(r, vs) ≥ θ1 ∧ σ(r, vs) − σ(r, cs) ≥ θ2] 其中 vs 为撤回策略文本,cs 为当前策略文本,参数固定为 θ1 = 0.3 与 θ2 = 0.15。评测统计两个核心指标:检索返回撤回记录的暴露率(Exposure Rate, Pr[ER = 1]),以及智能体最终选择不安全行动的不安全行动率(Unsafe-Action Rate, Pr[a = a−])。
陈旧检索防护组件架构设计
针对记忆后端未执行撤回或未暴露状态的问题,作者设计了独立于后端的陈旧检索防护组件(guard/stale_guard.py),拦截检索返回的记录并分为两个阶段过滤:
- 阶段一(应用已知撤回标记):检查后端暴露的状态字段,若 ρ(r) = 1(或匹配特定撤回字段及已过期日期),直接拦截并记录原因,此阶段精确但依赖后端暴露。
- 阶段二(两两成对冲突检测):对其余记录按已知时间戳降序排列进行成对冲突比对。冲突判定要求同时满足主题一致性(包含度 ctm(x, y) ≥ α)与对立性(包含反义词对、互斥数量词或否定词计数差异),参数设为 α = 0.45。若成对记录存在明确时间戳差异且未达拦截上限比例(β = 0.6),则拦截较旧记录;若无法判定时间先后或达到拦截上限,则保留两者并报告未决冲突。
论文做了哪些实验?
评测覆盖9模型、5系统与6种防御,发现无防御暴露系统下不安全率达43.1%,写回会击穿存储过滤使不安全率升至83.1%。
实验设置
- 被测模型:共 9 个模型,覆盖三个能力层级:旗舰层(GPT-5.5、Grok-4、DeepSeek-V4-Flash)、高效层(GPT-5-nano、Gemini-2.5-Flash、Grok-4-Fast)和开源权重层(GLM-5.2、Gemma-3-27B-IT、Kimi-K2.6),所有试验采样温度固定为 0.7。
- 测试记忆系统:5 个系统,包括 Graphiti、mem0(测试默认与 flag override 两种配置)、langmem、cognee 和 Zep CE;统一使用相同的嵌入模型与提取模型。
- 测试场景与基准:9 个策略场景(Table 4),包括无提示词规则组(deploy approval、PII export、rollback policy、stored access directive)和含提示词显式禁止规则组(card disclosure、backup deletion、over-limit transfer、compliance log deletion、MFA waiver);此外在附录包含 4 个工具调用场景。
- 防御条件:6 种条件(Table 5),包括无防御基线、存储级过滤(store-level filter)、提示词加固(prompt hardening)、输出过滤器(output filter)、过滤结合提示词加固、以及陈旧检索防护组件(guard)。
- 指标与样本规模:主要指标为暴露率与不安全行动率;主网格每个模型-场景-系统配置在各防御条件下运行 10 次试验,主实验调用决策模型 44,550 次,总计调用 49,121 次,均无 GPU 依赖、经 LiteLLM 访问托管 API。
主结果
表格较宽,可左右滑动
被测模型 no defense filter prompt hardening output filter Gemini-2.5-Flash 60.0% (108/180) 0.0% (0/180) 46.1% (83/180) 9.4% (17/180) DeepSeek-V4-Flash 58.9% (106/180) 0.0% (0/180) 50.6% (91/180) 21.1% (38/180) GPT-5-nano 55.6% (100/180) 0.0% (0/180) 43.9% (79/180) 23.9% (43/180) Grok-4 52.2% (94/180) 0.0% (0/180) 47.8% (86/180) 33.3% (60/180) Gemma-3-27B-IT 38.9% (70/180) 0.0% (0/180) 43.3% (78/180) 34.4% (62/180) GPT-5.5 33.3% (60/180) 0.0% (0/180) 26.7% (48/180) 12.2% (22/180) GLM-5.2 33.3% (60/180) 0.0% (0/180) 33.3% (60/180) 11.1% (20/180) Grok-4-Fast (non-reas.) 15.0% (27/180) 0.0% (0/180) 9.4% (17/180) 11.7% (21/180) 注:数据据 Table 7,测试环境为直接插入下两款暴露系统(Graphiti与mem0 exp.)合并统计;因表格限8行,省略了 Kimi-K2.6(各项依次为 41.1%、0.0%、33.9%、5.6%);实验不涉及代理或替代模型。
- 模型能力与易受影响程度无关:作者称所有9个模型均受到影响(15.0%至60.0%),最高与最低不安全率均来自高效层模型,旗舰层不安全率在33.3%至58.9%之间,抵御表现最佳的反而是快速非推理模型 Grok-4-Fast。
- 存储过滤与提示加固效果差异:存储级过滤在所有模型上均将不安全率消除至0.0%(0/180),而提示词加固仅将平均不安全率从43.1%微降至37.2%,因为上下文未标明哪条策略失效,模型无法获得区分所需的信息。
- 输出过滤器的局限:输出过滤器仅将不安全率降至18.1%(Table 6),且作者指出该防御测试时已被事先赋予了被撤回策略的文本,实际部署中无法获得该特权信息。
智能体写入回传与多跳持久化
- 测试设置:在 Graphiti 上测试智能体做出不安全决策后将其记录写回记忆库(包含自然摄取和直接记录两种模式),后续智能体(hop 1至3)在默认检索与检索过滤下继续读取并决策(Figure 3、Table 14)。
- 实验结果:在直接写回模式下,即使开启在单次读取中达到0.0%的检索过滤器,hop 1、2、3的不安全率仍分别达71.6%(255/356)、79.5%(283/356)和83.1%(296/356);自然写回模式下hop 1至3在过滤下的不安全率也达7.5%、7.8%和12.8%(Table 14)。
- 作者解读:作者称智能体的写回将错误决策作为当前有效记录重新固化到存储中,导致存储级过滤器失去拦截理由,原本有效的过滤机制被自身写入击穿。
多智能体协作与审查传播
- 测试设置:测试3个智能体(执行者 executor、审查者 reviewer、规划者 planner)共享同一记忆库时错误是否传播,并检验审查角色是否能作为隔离边界(Figure 4、Table 15)。
- 实验结果:在默认检索下,所有角色均检索到撤回记录(各810/810);当执行者做出不安全决策时,审查者在独立提问下有96.3%(341/354)同样选择不安全行动,后续角色不安全率达99.4%(352/354),平均1.32个角色沦陷(Table 15)。
- 作者解读:作者称审查提问无法构成安全隔离边界,因为不同查询依然会召回相同的撤回策略,且执行者写回的记录会进一步将审查一致率从81.7%(无日志)推高至96.3%。
工具调用场景与防护边界验证
- 测试设置:在4个工具场景(代码执行、破坏性shell、密钥外发、未授权shell)下测试智能体是否调用危险工具、读取密钥及确认外发,并对比检索过滤、陈旧防护组件与工具层护栏(Figure 5、Table 16)。
- 实验结果:无防御下危险工具执行率为17.2%(62/360),外发确认率为2.5%(9/360);检索过滤与陈旧防护组件均将工具执行率降至2.2%(8/360)且外发为0.0%;而工具层护栏的工具执行率仍为17.2%(62/360),外发达1.9%(7/360)(Table 16)。
- 作者解读:作者称真正有效的安全边界在读取阶段,工具层护栏因被撤回策略赋予了合法性表象而未能识别危险操作,无法阻断基于撤回策略的工具调用。
其他消融与分析
- 提示词规则消融:无规则场景不安全率81.0%(583/720),含显式禁止规则场景降至12.9%(116/900),排除备份删除离群项后为4.6%(33/720)(Table 8)。
- 系统配对检验:Graphiti与mem0(exp.)在81个匹配单元格中不安全率分别为44.2%与42.1%,双侧精确检验p=0.629,二者无明显差异(Table 12)。
- mem0内建开关消融:启用默认读取过滤时不安全率为0.0%(0/810),禁用该开关后不安全率升至42.1%(341/810),配对检验p<0.001(Table 13)。
- 间接插入撤回识别率:纯文本间接插入下,Graphiti在4/9个场景识别出撤回,Zep在6/9个场景识别,cognee、langmem和mem0均为0/9(Section 4.1)。
- 防护组件召回与误拦截:直接插入下防护组件对Graphiti和mem0撤回记录召回率均为100%(18/18与12/12,无误拦截);间接插入下对Zep召回4/14,并在cognee、langmem、mem0和Graphiti分别误拦截0、6、8和1条有效记录(Table 9)。
- 第二智能体复发测试:首个智能体写回后,第二智能体在默认检索下重复危险操作的比例为67.7%(42/62),施加过滤后仍有21.0%(13/62)(Section C.3)。
有什么可以进一步探索的点?
作者指出缺乏原生检索时有效性检查与间接插入识别不足等局限;实验未覆盖动态演化长序列及更多非结构化复杂场景。
作者指出的局限与后续方向
- 防护组件依赖后端协作或时间戳排序:作者在 Section 5.1 指出,防护组件第一阶段使用显式状态字段虽然精确但需要后端配合;当无法确定冲突事实的新旧顺序时,只能保留两者并报告冲突而无法主动剔除(Section 5.1 与 Section A.3)。
- 细粒度图分割下的撤回拦截不足:作者在 Section 5.2 指出,在 Zep 上防护组件仅能拦截 4/14 条撤回记录,因为 Zep 将单条策略拆分跨越多条边且仅撤回其中部分边,返回的文本中没有标识指明具体哪部分被废止。
- 启发式冲突检测存在误拦截风险:作者在 Section 5.2 指出,间接插入下防护组件在 cognee 和 Graphiti 上略差于无防御基线,原因在于冲突检测规则也会匹配非撤回替代关系的矛盾事实对,导致部分当前有效事实被误扣留。
- 扩展设置非详尽且未组合:作者在 Section C 指出,写回、多智能体与工具使用这三种扩展设置并非详尽无遗(not exhaustive),每种仅针对单次读取方法学所固定的单一约束,真实的完整部署需要将三者结合。
- 规则与无规则场景非受控对比:作者在 Section 4.4 指出,带有提示词规则与不带规则的场景组之间并非受控对照实验,两组在具体场景、动作集和干扰项数量上均存在差异,研究未测试同一场景在有无禁令下的表现。
实验覆盖范围
- 被测系统与模型范围:实验评测了 5 个智能体记忆系统(Graphiti、mem0、langmem、cognee、Zep CE)以及 9 个大语言模型,覆盖 7 个模型家族与 6 家供应商(Section 3.2、Table 3)。
- 场景覆盖范围:主实验覆盖 9 个预设的组织策略与指令场景(Table 4),并在工具扩展实验中覆盖 4 个合成工具调用场景(Section C.3)。
- 多轮交互轮数:写回扩展实验固定测试了 3 跳(hop 1 至 hop 3)的前向传播(Table 14),工具使用循环最多执行 4 步(Figure 5)。
- 防御机制覆盖:评测了存储级过滤、提示词加固、输出过滤、组合过滤及陈旧防护组件共 5 种防御条件(Table 5)。
- 实验设置未报告信息:论文未报告各模型的具体提示词 token 长度开销,亦未提供人工对智能体动作分类的跨标注者一致性量化检验数据。
总结一下论文的主要内容
系统揭示了记忆系统软撤回在检索时普遍未执行的安全漏洞,证明写回会击穿现有防御,并提出读取端防护作为必要控制手段。
- 研究定位:该研究首次系统性实证评估了多款主流大语言模型智能体记忆框架在软撤回机制下的运行时安全边界与撤回执行有效性。
- 核心问题:现代记忆系统普遍采用将陈旧知识标记为无效而非物理删除的软撤回设计,但默认检索机制是否会在读取时拦截失效记录、避免智能体依据作废策略采取危险操作,此前未有深入验证。
- 评测与防御设计:研究在直接与间接两种插入模式下向 5 款记忆系统写入作废与替代策略,跨越 9 个模型评估其检索暴露与不安全决策表现;针对系统未默认过滤的现状,提出了在检索返回路径进行元数据校验与成对冲突检测的 Stale-Retrieval Guard 组件。
- 主要实验发现:直接写入且无防御时,两款暴露系统(Graphiti与mem0 exp.)将作废记录全部返回且排在首位,导致智能体平均在 43.1%(699/1,620)的试验中执行不安全行动(Table 6);即使提示词明确禁止危险操作,模型不安全率仍有 12.9%(Table 8);存储级过滤虽能在单次交互中将不安全率归零,但在智能体将决策回写记忆库后,3 跳内的不安全率迅速反弹至 83.1%(Table 14)。
- 作者结论与启示:作者指出记忆系统的安全盲区并非源于外部投毒或数据来源伪造,而是内部合规生命周期中缺乏检索时有效性校验;仅依赖写入来源证明或模型提示词无法抵御作废策略,必须在读取管道上强制实施严格的陈旧记录过滤。