安装 Codex CLI 后,满怀期待地启动它。你告诉它“修复这个代码库中失败的测试”。然而,灾难随即开始:

Codex: I want to run pytest
Allow? (y/n)

你输入了 y。接下来:

Codex: I want to modify test_user.py
Allow? (y/n)

又输入了 y 。一次又一次,每次需要读取一个文件、执行一个命令或者修改一行代码,它都会请求确认。确认,确认,还是确认。这感觉就像跟一个刚入门的实习生合作,他每次连去洗个手间都要问你同不同意。

与此同时,Claude Code 或 Cursor Agent 却可以实现相同的功能,但却不会多说一句话。这是为什么?

原因在于:默认情况下,Codex 被配置为一个“过于谨慎”的助手。这么做是为了安全考虑,尤其是针对一款新产品来说是很合理的。但如果你对操作足够了解,这种保守模式在实际工作中将让人无法忍受。

好消息是:只需几秒钟便能调整过来。

权限模式:approval mode

Codex 使用一种叫做 approval mode(批准模式)的概念来控制需要你授权的情境。默认设置下,它对所有操作都需要你的确认:

  • 执行命令
  • 写入文件
  • 修改代码
  • 创建新文件
  • 运行测试

简单来说:默认状态下,Codex 无法在没有你按下 y 键的情况下做任何事情。可以将其形容为:对每一个操作都需要一次 sudo 操作。

这使得一个本应是自主代理的工具,变成了一场你成为整个过程中最慢环节的无休止对话。

解决方案:使用一个标志

codex --full-auto

从版本 0.1.2 起,--full-auto 是官方的快捷方式,它将 --approval-mode never 和 --sandbox workspace-write 两个参数组合在一起。如果你使用的是旧版本,也可以用完整写法:

codex --approval-mode never

无论选择哪种方法,Codex 都会停止询问你,直接执行命令、修改文件、创建需要的内容。它将真正成为一个自主工作的代理。

想要让设置永久生效?有两种方法:

# 方法1: 设置配置命令
codex config set approval_mode never

# 方法2: 直接编辑配置文件
# ~/.codex/config.toml
approval_mode = "never"

从现在开始,每次启动 Codex,它都不会再进行无休止的打扰。

第二个问题: sandbox(沙盒)

但还有另一个问题会让 Codex 无法顺利工作。即使你取消了所有确认请求,默认的沙盒模式可能仍然过于限制,以至于代理甚至无法在代码库中写入。

对于开发工作而言,你需要选择适当的模式,推荐 workspace-write:

  • 可以读取整个代码库
  • 能修改现有文件
  • 可以创建新文件
  • 能在项目中执行命令

要让 Codex 真正全力工作,需要这样启动:

# 新版本(0.1.2+)
codex --full-auto

# 或者更明确的方式(等效)
codex --approval-mode never --sandbox workspace-write

两个标志——如果你使用的是 --full-auto,就只需一个。这是将一个总是打断你的助手与专注工作的代理区分开来的关键。

创建别名避免重复输入

如果你习惯了在终端里工作(使用 Codex CLI 的人通常会这样),可以创建一个别名:

# Fish shell(现代版本)
alias codex-agent "codex --full-auto"

# Fish shell(明确版本)
# alias codex-agent "codex --approval-mode never --sandbox workspace-write"

# Bash/Zsh
alias codex-agent="codex --full-auto"

从现在开始:

codex-agent

你将拥有一个真正像代理一样工作的 Codex。

一次性任务模式:启动并忘记

有趣的地方在于,当你直接将任务作为参数传递时:

codex-agent "Run the test suite, identify failing tests, \
fix the code and repeat until everything passes."

无需交互式会话,也没有多余对话。Codex 会分析项目、运行测试、识别错误、修改代码、重新运行,直到所有测试通过。你可以悠闲地去喝杯咖啡。

这种模式——即 agentic loop(代理循环)——实际上是所有现代代码代理内部的运作机制。一个自循环,直到任务完成。不同的是,Codex 的默认设置会强迫你参与到这个过程中,成为每一环的中间人。通过这两个标志,你就可以脱身,让循环自己运行。

与 Claude Code 的对比

接下来是 OpenAI 可能不想让你听到的对比:Claude Code 天生就被配置为自动模式。

项目Codex CLI(默认)Codex CLI(优化版)Claude Code
权限管理全部需要许可无需许可仅对破坏性操作需许可
沙盒限制性workspace-write选择性确认的宽松模式
CLI 支持是是原生 CLI 优先
一次性任务模式codex "prompt"codex-agent "prompt"claude --print "prompt"
配置需求0 个标志2 个标志0 个标志

与 Claude Code 相比,它在设置上更简单:允许你在 90% 的操作中顺畅工作,仅对可能破坏性的操作请求确认。这是 Codex 默认情况下本应具备的平衡。

良好提示语的关键作用

一旦 Codex 获得权限,结果的质量将 100% 取决于你的提示语质量。模糊的提示语会产出模糊的结果。

# 不佳

Fix the tests.

# 更好

Fix the failing tests in this repository.
Work autonomously:

- inspect the repo structure
- run tests
- modify code to fix failures
- rerun tests
- repeat until all tests pass

Do not ask for confirmation.

差距是显而易见的。第一个提示可能会让 Codex 修复一个测试后停止;而第二个提示则清晰地告诉它要迭代直至所有工作完成。这类似于告诉工人“修好这个”,还是提供详细的故障清单。

这一点同样适用于 Claude Code 和其他任何代理。approval mode(批准模式)可以避免中断,而提示语的设计则决定了代理所完成工作的质量。

在什么情况下不建议取消权限

直接告诉你“始终使用 --approval-mode never”是不负责任的。请注意:

请勿在未复查的生产代码库中启用此选项。 允许代理自动将更改提交到 main 分支而无人复查,很可能导致灾难。自主模式更适合以下场景:

  • 需要你复查结果的开发分支
  • 你能实时查看动作的交互式会话
  • 范围明确的任务:比如“修复测试”、“格式化此模块”、“更新依赖项”等

对于可能影响生产环境的任务,Claude Code 的选择性确认模式会更为周全:它允许自由工作,但在执行关键操作前会要求你的确认。

30 秒概述

如果 Codex CLI 的反复确认让你抓狂:

# 快速方式(0.1.2+)
codex --full-auto

# 明确方式(等效)
codex --approval-mode never --sandbox workspace-write

# 永久设置
codex config set approval_mode full-auto

一个标志可以将一个过于谨慎的助手转变成一个真正的自主代理。Codex 的默认配置强调安全性而非生产力,现在你知道如何切换了。

本文原文为西班牙语,借助AI翻译。