任务说明
让危险命令识别覆盖带控制流的 bash -lc 脚本、/bin/rm、分离或组合的 f 选项以及 --force,同时不把 -- 后面的文件名误判为选项。
开始前准备
给 Codex 的执行步骤
- 1Fork 或克隆公开仓库,检出 rust-v0.144.4,并在新分支确认工作树干净。
- 2先让 Codex只读分析 shell-command 的 bash 解析、command_safety 和 core exec policy 测试入口。
- 3先添加 forced rm 变体与 shell loop 的失败测试,保存失败命令和关键输出。
- 4要求 Codex实施最小解析与检测变化,不执行任何真实 rm 命令;测试数据只构造字符串参数。
- 5运行定向测试、格式检查和 git diff --check,再对照官方 PR #33455 的文件范围复盘差异。
预期代码变更
- ·codex-rs/shell-command/src/bash.rs:增加从复杂 shell 语法提取静态 literal command 的解析路径。
- ·codex-rs/shell-command/src/command_safety/is_dangerous_command.rs:识别可执行文件名和 rm force 选项变体。
- ·codex-rs/core/src/exec_policy_tests.rs:增加 danger-full-access 下 shell loop 仍需审批的回归测试。
测试命令
just test -p codex-shell-command && just test -p codex-core exec_policy && just fix -p codex-shell-command && just fix -p codex-core && just fmt && git diff --check结果边界
这是未预先执行的可复现实验,不声称上述命令已在 codex.study 环境通过。;官方 PR #33455 的 Validation 是上游提交者记录,只能作对照,不能冒充学习者自己的运行证据。;通过标准是本地目标测试退出码为 0 且新增用例覆盖预期变体;测试总数可能随依赖和平台变化。;练习不得执行真实破坏性删除,只测试命令字符串的解析与策略结果。
复盘问题
- ·先写失败测试是否帮助 Codex锁定了正确抽象层?
- ·实现是否把动态 shell 内容误当成已证明安全?
- ·你的 diff 与上游修复在文件范围、命名和边界用例上有何差异?
参考来源
优先使用 OpenAI 官方文档与官方仓库。外部来源会单独标识。
- openai/codex GitHub Repository
官方来源 · https://github.com/openai/codex
- openai/codex Release 0.144.5
官方来源 · https://github.com/openai/codex/releases/tag/rust-v0.144.5
- openai/codex PR #33455
官方来源 · https://github.com/openai/codex/pull/33455
