Skip to content

feat(security/runtime): 实现 session 级 once / always / reject 权限记忆P0-8 #162

Description

@Cai-Tang-www

背景

#98 已定义统一权限网关与 ask 流程,但当前仍缺少 session 级审批记忆机制,导致同类工具请求在一次会话中反复触发审批,影响交互效率。

目标

实现 session 级权限记忆能力,支持以下审批结果:

  • once:仅本次放行
  • always(session):本会话内同类请求自动放行
  • reject:本会话内同类请求自动拒绝

范围

  1. 设计 session 级权限记忆数据结构(内存态,绑定 session 生命周期)。
  2. 在权限决策链路中接入记忆查询:命中后直接产出决策,避免重复 ask。
  3. 记忆规则应基于结构化 action 维度(如 tool/resource/operation/target_type/target),避免仅用原始命令字符串匹配。
  4. 与 runtime 事件联动:
    • ask 时仍发 PermissionRequest
    • 命中记忆或用户完成审批后发 PermissionResolved
  5. 保持分层边界:TUI 仅负责展示与选择,不承载决策逻辑。

非目标

  • 不做跨会话/持久化审批记忆。
  • 不做 AI classifier 判定。
  • 不引入 OS/container 级沙箱增强。

验收标准

  • 同一 session 内,always(session) 生效后同类请求不再重复 ask。
  • 同一 session 内,reject 生效后同类请求稳定拒绝。
  • once 仅影响当前请求,不污染后续请求。
  • 记忆匹配基于结构化 action,非纯文本命令匹配。
  • ask/request/resolved 事件语义一致,字段可被上层稳定消费。
  • 补齐测试:
    • once 生效并一次性消费
    • always(session) 重复命中
    • reject 重复命中
    • 不同 session 互不污染
    • action 维度匹配与误命中防护

关联

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions