9 月 18 日,微软发布了 Python 版 Agent Framework 1.19.0。版本说明里最扎眼的一条是破坏性变更:从这一版起,每一次 MCP 请求和会话都被绑定到发起它的调用身份,同时按来源与归属做范围限定。反过来说,在这之前的版本里,跨会话的工具串用是可能的——会话不跟人走,工具调用可以借到别处开好的会话。框架的用户规模不小,而绝大多数跑着多租户智能体的团队,恐怕都没有按这个口径自查过自己的部署。

这个修复针对的是一类真实存在的风险面。多租户场景下,如果会话不与发起身份绑定,租户 A 的请求理论上可能落在租户 B 的会话上下文里——借到对方的工具权限、读到对方的中间状态。这与 Web 安全里的会话固定、API 网关里的令牌边界是同一族问题,只是换到了智能体运行时。此前的多智能体安全事件研究已经反复证明:智能体框架的攻击面,往往就在框架自己都还没想清楚「谁在调用」的地方。

Microsoft Agent Framework 1.19.0(Python,9 月 18 日)会话身份边界每次 MCP 请求与会话绑定到发起调用的身份、来源与归属技能包完整性技能档案仅收 ZIP,且必须通过摘要校验才允许加载工具可见性会话可限制单个智能体能看到哪些工具,按需最小暴露修复前置的另一类问题:压缩摘要与检查点往返导致长任务静默丢状态
图|1.19.0 补上的三层边界

同批落地的还有技能包的完整性校验。智能体框架允许加载「技能档案」来扩展能力,而 1.19.0 之前,加载的技能包无法确认是否被篡改过;新版本把技能档案限定为 ZIP 格式,且必须通过摘要校验——包内容对不上就拒绝加载。配套的收紧还包括:废弃了 MCP 采样回调,并给会话新增了按工具的暴露控制,运维可以把单个智能体能看到的工具清单收窄到最小集。这几件事拼起来是一个共同姿态:框架开始把「能力越大、边界越要清楚」当成本职工作,而不是留给使用方的选修课。

另一组修复解决的是状态丢失。压缩摘要与检查点往返这两条路径上,长时运行的工作流会在没有任何报错和日志的情况下悄悄丢状态——任务看起来还在跑,进度已经回退。发布说明没有披露有多少工作流受过影响、问题存在了多久,这类静默损坏的可怕之处正在于此:它不制造故障单,只在几个月后以「数据对不上」的形式浮出水面。对跑长任务智能体的团队来说,升级到 1.19.0 的理由里,这条可能比安全加固更迫切。

为什么按调用身份隔离是必要修复旧形态会话不绑定发起身份:跨会话工具串用成为可能典型后果租户 A 的会话借到租户 B 的工具权限或上下文修复思路与 Web 会话固定、API 令牌边界同构:身份跟着请求走多数运行此框架的团队尚未按此口径自查过——这是公告真正的警示
图|多租户智能体的会话串扰风险面

功能面上,这版还引入了通用向量存储提供方协议,新增 MongoDB、Azure DocumentDB 与 Azure Cosmos DB NoSQL 三种连接器,记忆层的选型空间变大;函数调用也可以选择串行执行,给需要严格顺序的工具链留了口子。功能清单很长,但主线只有一条:身份、完整性、可见性、状态——多租户智能体运行时的四根柱子,这一版补了三根半。

冷静的部分也要说。破坏性变更意味着升级有迁移成本,存量部署里依赖旧会话行为的代码需要逐个排查;摘要校验挡住了包被篡改,挡不住「本来就被投毒的技能包」,供应链的源头治理仍靠生态;按调用身份隔离是必要条件,不是充分条件——真正的多租户隔离还需要在存储层与网络层做配套。对使用方更有价值的是一个动作:把这次公告当作一次自查清单,去核对自己生产环境里的会话归属、技能包来源和检查点完整性。框架把边界画出来了,走不走得到那条线上,取决于每个团队自己。目前官方及行业暂未披露更多细节,后续将持续跟进迭代动态。