Codex 的 approval policy(批准策略)和 execpolicy(执行策略)

一、Codex 的 approval policy(批准策略)和 execpolicy(执行策略)

  • agent可能会执行不可预测的命令(比如删除文件、访问敏感目录、运行恶意脚本),可以通过policy弹出提醒 , 这和 Bubblewrap(bwrap)二者是独立的安全层。

具体行为

  • 默认/推荐模式 (如 --sandbox workspace-write --ask-for-approval on-request):

    Codex 在执行破坏性命令 (如 rmrm -rfdelete 等)时,会主动弹出确认提示,让你审查命令后再决定允许或拒绝。即使命令在 Bubblewrap 沙箱内运行,也不会自动执行。

  • 你可以通过自定义规则进一步加强(推荐):

    ~/.codex/rules/ 中用 Starlark 定义策略,例如强制 rm / -rf 必须 prompt:

    复制代码
    prefix_rule(
        pattern = ["rm", "-rf"],
        decision = "prompt",
        justification = "Destructive operation needs confirmation"
    )

    这样 Codex 会更严格对待删除命令。

二、启动最好加参数:codex --sandbox workspace-write --ask-for-approval on-request

  1. 在 Linux bash shell(或终端)中启动 Codex 时,直接在 codex 命令后面加上这些参数即可:
bash 复制代码
codex --sandbox workspace-write --ask-for-approval on-request

这会以推荐的安全模式启动 Codex 会话:--sandbox workspace-write:允许 Codex 在当前工作目录(workspace)和 /tmp 等受限路径下读写文件,但无法随意修改系统其他地方。

--ask-for-approval on-request:低风险操作可自动执行,破坏性命令(如 rm -rf 等)会弹出确认提示让你审查。

直接输入上面那行命令,按回车后就会进入 Codex 的交互界面(TUI),并应用这些设置。

其他常用方式:

复制代码
简写形式(-s 和 -a):
bash 复制代码
codex -s workspace-write -a on-request
复制代码
想更安全(只读模式):
bash 复制代码
codex --sandbox read-only --ask-for-approval on-request
复制代码
永久设置(推荐)每次都打参数比较麻烦,你可以把设置写到配置文件里:编辑 ~/.codex/config.toml   
(如果没有就创建):
toml 复制代码
sandbox_mode = "workspace-write"
approval_policy = "on-request"

之后直接 codex 启动就会使用这些设置。CLI 参数的优先级更高(会覆盖配置文件)。验证当前设置:启动后输入 /status 或 /approvals,就能看到生效的 sandbox 和 approval 模式。

  1. 参数意思
    codex --sandbox workspace-write --ask-for-approval on-request 的意思是:

以受限沙盒模式运行 Codex,每次需要写入文件时都先询问你是否批准。

具体拆解:

--sandbox workspace-write-s workspace-write

启用沙盒限制,只允许 Codex 在当前工作区内写入文件,禁止它执行网络请求、安装软件包、或修改工作区以外的系统文件。

--ask-for-approval on-request-a on-request

每当 Codex 想执行一个操作(比如修改文件、运行命令)时,暂停并显示具体的操作内容,等你手动确认后才继续执行。


实际效果:

Codex 会告诉你"我打算执行 xxx 操作",你看完后选择 批准拒绝,它才会动手。整个过程你有完全的控制权,不会悄悄改动任何东西。

适合用在:不太熟悉某个代码库、或者任务比较重要、不想让 AI 自动乱跑的场景。

三、检查 approval policy和execpolicy的设置

要验证默认/推荐模式(--sandbox workspace-write --ask-for-approval on-request)下 Codex 是否会对破坏性命令(如 rmrm -rf 等)主动弹出确认提示,以及如何查看当前设置,有以下几种实用方法:

1. 最直接的方式:在 Codex 会话中查看状态

启动 Codex 后(推荐用推荐模式启动):

  • 输入 /status ------ 显示当前会话的配置,包括 sandbox 模式、approval policy 等关键信息。
  • 输入 /approvals ------ 专门查看/切换 approval 相关设置,通常会列出当前模式并允许选择(Auto / Read-only / Full 等选项)。

这些是官方推荐的命令,能实时看到当前生效的 sandbox 和 approval 配置。

2. 查看配置文件(config.toml)

Codex 的设置主要保存在 ~/.codex/config.toml(用户主目录下)。

查看命令

bash 复制代码
cat ~/.codex/config.toml

或直接用 Codex 自身:

bash 复制代码
codex config show

重点关注以下键值(推荐模式对应):

  • sandbox_mode = "workspace-write"
  • approval_policy = "on-request" (或等效的 approval 设置)

如果没有这些设置,默认行为通常接近推荐的 Auto 模式。

3. 实际测试验证提示行为

最可靠的验证方法是故意触发破坏性命令

  1. 用推荐模式启动 Codex:

    bash 复制代码
    codex --sandbox workspace-write --ask-for-approval on-request
  2. 在会话中让它执行类似命令,例如:

    • "删除 test.txt 文件" 或 "运行 rm -rf some_temp_dir"
    • 或者直接让它生成并执行 shell 命令。

预期行为(on-request 模式下):

  • Codex 应该主动弹出确认提示,显示命令内容,让你审查后选择允许(Approve)或拒绝。
  • 低风险命令可能自动执行,但破坏性操作(如 rm、删除、覆盖关键文件等)通常会触发提示。

如果没有弹出提示,可能是:

  • 当前模式是 never(检查 config 或用 /approvals 切换)。
  • 使用了 --dangerously-bypass-approvals-and-sandbox(--yolo 模式)。
  • 配置被覆盖或有 bug(某些版本提示可能只显示命令前半部分)。

4. 其他检查命令

  • codex --help 或具体 flag 帮助,确认启动参数。
  • 检查自定义 rules(~/.codex/rules/ 目录下的 Starlark 文件),这些可以进一步强制某些命令必须 prompt。

推荐启动方式(每次都明确指定,更保险):

bash 复制代码
codex --sandbox workspace-write --ask-for-approval on-request

四、其他

  • 不会提醒的情况
    • 使用 --ask-for-approval never(或 -a never)或 --dangerously-bypass-approvals-and-sandbox(--yolo)模式时,危险命令可能直接运行(仅受 Bubblewrap 沙箱限制)。
    • Full-auto 模式下,部分低风险命令自动执行,但破坏性操作仍可能触发额外审查(取决于配置)。
    • 某些历史 bug 或特定版本中,提示可能不完善(只显示命令前半部分)。

Bubblewrap 的作用在这里

Bubblewrap 不会阻止 rm 命令本身,但会极大降低风险

  • Codex 通常只能在 workspace(项目目录)和 /tmp 等受限路径下操作。
  • 即使 rm -rf 执行了,也很难删到系统关键文件(如 ~ 以外的内容),因为沙箱限制了文件系统视图。
  • 但仍不推荐完全关闭 approval ------ 沙箱不是万能的(可能仍有误删项目文件风险)。

实用建议

  1. 查看当前模式:运行 /status/approvals(在 Codex 会话中)。
  2. 推荐启动方式:codex --sandbox workspace-write --ask-for-approval on-request
  3. 想更安全:结合 execpolicy 规则 + 保持 approval 开启。
  4. 极端安全:用 read-only 沙箱 + 手动审查所有 shell 命令。

总结 :在正常 Bubblewrap + 默认 approval 配置下,Codex 会提醒 你确认 rm 命令,不会偷偷自动删除。这是 Codex 多层安全设计(sandbox + approvals + rules)的一部分。

相关推荐
天蓝色的鱼鱼1 小时前
当AI开始替我写代码,我还要纠结选Vue还是React吗?
vue.js·react.js·ai编程
恋猫de小郭1 小时前
AI 时代开源协议将消亡,malus 讽刺性展示了这一点
前端·人工智能·ai编程
沐泽__2 小时前
单层神经网络含义
ai编程
可爱の小公举2 小时前
Redis面试高频考点全解析
人工智能·学习·职场和发展·ai编程
刀法如飞2 小时前
AI时代的大数据底层结构:Palantir Ontology深度解析
大数据·人工智能·ai编程
人月神话-Lee2 小时前
两个改动,让这个iOS OCR SDK识别成功率翻了一倍
ios·ocr·ai编程·身份证识别·银行卡识别
财经资讯数据_灵砚智能2 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年5月5日
人工智能·python·信息可视化·自然语言处理·ai编程
Carson带你学Android2 小时前
别再乱学了!深度解读 Google 官方发布 Android 6 大核心 Skills
android·前端·ai编程
沐泽__3 小时前
多头注意力机制含义
ai编程