跳转到正文

Safety

在工具执行层识别、拒绝或升级高风险操作。

更新于 查看 Markdown

Safety 是 kxen 的执行层硬边界。Prompt、Rules、Skills、项目配置和模型输出都不能关闭它。

判定结果

每次受保护操作会进入以下结果之一:

  • Allow: 直接执行。
  • Ask: 进入 Approval。
  • Deny: 拒绝执行。
  • Recoverable: 允许可恢复操作并记录风险。

Deny 优先于 Ask,Ask 优先于 Recoverable。

硬拒绝范围

Safety 拒绝无法安全收窄或后果不可接受的操作,包括:

  • 磁盘格式化、分区和系统擦除。
  • 系统关机、重启和安全配置破坏。
  • Keychain、GPG 私钥和 Credential 根目录销毁。
  • 数据库、Cloud 项目、Kubernetes namespace 和基础设施全量销毁。
  • 批量删除 Git refs。
  • 以系统目录、home 根或 .git 为目标的破坏性文件操作。
  • 删除目标包含未展开变量,导致范围无法静态判定。

升级审批范围

以下操作不硬拒绝,但一律升级为 Ask,由用户在 Approval 中逐次决定:

  • pythonnodeperlrubyosascript 等解释器的 -c-e--eval 内联脚本形式。
  • 引号外的进程替换 <(...)>(...)
  • 带 ref 的 git reset --hard <ref>
  • git stash dropgit stash clear
  • git checkout --git checkout .git restore 的工作区恢复形式(丢弃未提交改动)。

审批规则

审批卡上的「本会话放行此命令」「总是放行此命令」可以把命令全文建为前缀规则,命中后不再逐次询问:

  • 匹配语义为 trim 后前缀加词边界;含 shell 元字符(; & |、换行、反引号、$、括号、重定向、反斜杠)的命令永远不会被规则放行,也不能建规。
  • Deny 判定永远先于规则表,规则不能放行硬拒绝的操作。
  • 每次规则放行都先写入会话审计(decision 为 rule_allow)再执行;审计写不进去就不自动放行,回落逐次审批。
  • 会话规则随进程失效;workspace 规则持久化在 <workspace>/.agents/kxen/approval-rules.json,可在设置的审批规则区块查看和撤销。
  • 设置的审批审计区块按时间倒序展示全部会话的审批决定,包括规则自动放行。

可恢复删除

文件工具和 Session 删除使用系统废纸篓。Shell 中的 trash 被识别为可恢复删除。可恢复不代表可以删除系统目录或 .git

Shell 中会造成永久删除的命令直接进入 Deny,包括 rmrmdirunlinkfind -delete,以及通过绝对路径、commandenvxargs 或嵌套 Shell 调用的等价形式。需要删除 Workspace 文件时使用 delete tool,将目标移入系统废纸篓。

网络边界

Web 和远端 MCP 的 URL 经过地址检查。loopback、link-local、CGNAT 和内部地址不会被当作普通公网目标。

Browser 把 Chrome 的全部 HTTP、HTTPS 和 WebSocket 流量强制送入本机受控代理,不配置 direct fallback。代理在实际连接前检查单次 DNS 解析的全部结果,并使用已经检查的 SocketAddr 直连;redirect、iframe、子资源和页面脚本请求都经过相同边界。受限地址、解析歧义、超限、timeout 或代理退出都会失败关闭。动作后的 top-level URL 复查继续作为额外防线。

需要用户决定的高风险操作见 Approval

导航

输入关键词以搜索…

↑↓ 移动↵ 打开Esc 关闭