问题
全局唯一 SubagentManager(cmd/gateway.go:307)的内存 map 混放所有 agent/用户/会话的子任务,list/wait 只按父 agent key 过滤,不看 session。且 cancel id="all"(subagent_control.go:49)遍历整个 map,跨 agent 全杀。而 OriginSessionKey 在 spawn 时已记录(subagent_spawn.go:89),却没被用于过滤。
风险
chat B 的 list 能看到 chat A 的任务(含任务文本前 60 字符);wait 会被 A 的任务阻塞
cancel id="all" 误杀全进程所有运行中的子任务
open agent 一个 agent 服务多用户:用户 B 可读到用户 A 的任务文本,跨用户信息泄露
修复建议
list/wait/cancel 按 OriginSessionKey 过滤(字段已存在,改动仅涉及 subagent_control.go 和 subagent_spawn_tool_actions.go)。
问题
全局唯一 SubagentManager(cmd/gateway.go:307)的内存 map 混放所有 agent/用户/会话的子任务,list/wait 只按父 agent key 过滤,不看 session。且 cancel id="all"(subagent_control.go:49)遍历整个 map,跨 agent 全杀。而 OriginSessionKey 在 spawn 时已记录(subagent_spawn.go:89),却没被用于过滤。
风险
chat B 的 list 能看到 chat A 的任务(含任务文本前 60 字符);wait 会被 A 的任务阻塞
cancel id="all" 误杀全进程所有运行中的子任务
open agent 一个 agent 服务多用户:用户 B 可读到用户 A 的任务文本,跨用户信息泄露
修复建议
list/wait/cancel 按 OriginSessionKey 过滤(字段已存在,改动仅涉及 subagent_control.go 和 subagent_spawn_tool_actions.go)。