#6298·CodeWhale

车队重新设计:停止通过命令语法定义只读 — 一个授权模型、工作验证模式、分类的工具族

作者: Hmbown创建于 2026年9月17日更新于 2026年9月17日
标签documentation

** 2026-09-17 事件 (#6296) 说明:一个验证子进程拒绝了一个链接的只读 git 命令,使用了一个继承的计算机使用工具在主机终端中输入。它正在执行所给出的任务。 ** 我们的子进程模型(`crates/tui/src/worker_profile.rs`、`fleet/role.rs`、`execpolicy/command_safety.rs`):角色姿态 + 权限集上限 + ShellPolicy + `ToolScope::Inherit` + 拒绝列表联合 + 标志 + 21 前缀的单命令只读语法(`PARALLEL_READONLY_PREFIXES`)。一个只读子进程无法运行 `cargo`、`git fetch` 或 `merge-tree` — 这些是“验证”子进程所执行的命令 — 而目录仍然接受继承的 MCP 工具(未分类 ⇒ 允许),这就是计算机使用如何通过的。 ** 今天这种不一致的代价:每个 8-10 个问题的审计子进程和验证器都消耗了约 1 到 3 百万个输入令牌,在拒绝中挣扎;其中一个升级到了桌面控制。每个没有指定替代方案的拒绝都引发了一个工作绕过。 ** 参考文献做了什么(阅读 2026-09-17,`refs/`) ** codex:只读是一个 *真正的沙箱*(Seatbelt/Landlock/bwrap);工作空间写入 = 明确的可写根目录,具有 `.git` 保护。构建/测试是一个沙箱拒绝,通过策略受控的升级来解决,具有命名替代方案(`sandbox_permissions: require_escalated`,一个 `request_permissions` 工具)。角色是只减少(“永远不要替换父权限”)。每次启动的 `model` + `reasoning_effort`,与模型支持的级别进行验证。没有本机计算机使用工具;命名空间名被保留,以防伪装。 ** grokbuild:能力模式是类型级别的允许列表,具有单调交集(`ReadOnly` 吸收)。只读完全排除执行类型 — 通过设计,没有测试。命名替代方案的类型拒绝(`Unknown { available }` / `NotAllowed { allowed }`)。MCP 工具免受能力过滤,`None => true`,子进程继承父 MCP 池 — 我们碰到的同一个漏洞,在自己的注释中标记了。 ** kimicode:四个静态预置配置文件拥有自己的工具列表(`explore` 保留了 Bash;`plan` 没有)。“只读”是提示强制 + 工具省略,而不是命令分类器;批准链决定 Bash 可以运行什么。每次启动的模型;思考遵循调用者(“主”)或模型默认。在没有安装批准表面的情况下,打开批准失败。 ** omp:每个代理前缀工具列表确实是授权;“只读”是衍生的,仅用于展示,而不是命令分类器;批准链决定 Bash 可以运行什么。子进程运行 yolo,以父的任务调用作为授权边界。`computer` 工具默认情况下是关闭的,在受限制的会话中被剥离 — 四个中最干净的桌面保护。每个代理的 `thinkingLevel`(侦察员 = smol/medium);解析的模型 + 力度在每次运行中都被显示。

内容来源: Hmbown/CodeWhale