codex exec是专为无人值守自动化设计的非交互模式,不开界面、不等人工确认、结果可被脚本捕获;交互模式则需人工全程盯屏按回车,适合模糊边界任务。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在本地项目中让 Codex 自动改代码、跑测试、生成 PR,但发现敲 codex 进去后总要手动按回车确认每一步,而写进 CI 脚本时又卡在「等待批准」界面不动——这说明你还没分清交互模式和 codex exec 的根本分工:前者需要活人盯着,后者专为没人值守的自动化场景设计。
交互模式:适合人坐在屏幕前逐步推进
在项目根目录直接运行 codex,就进入全屏交互式 TUI 界面。它会自动加载当前 Git 仓库结构、读取 AGENTS.md、建立上下文记忆,并把终端划分为对话区、输入框和状态栏三块区域。
每次你输入一句话任务(比如“修复 login.ts 中的 CORS 错误”),Codex 就启动 Agent Loop:读文件 → 规划修改 → 在沙盒里执行 → 跑测试 → 看报错 → 再规划。关键操作(如写文件、删目录、执行 bash 命令)默认触发 【ask-for-approval】,必须你按回车才继续。
这种模式适合日常开发中需要反复确认、边界模糊的任务,比如重构模块、调试多层嵌套逻辑、或边聊边试新方案。
exec 模式:一句话丢进去,跑完就退,结果可被脚本捕获
codex exec 不开界面、不维持会话、不等人工干预。它把整个任务当成一次性的原子操作来处理,全程无交互,输出严格分离:进度信息走 stderr,最终结果走 stdout。
方法一:直接带提示词执行codex exec "explain src/api/handlers.ts"
这行命令会在当前目录启动只读沙盒,读取指定文件并输出解释,结束后立即退出,返回码为 0 表示成功。
方法二:配合 --output-last-message 把结果存入文件codex exec "generate README.md" -o README.md
注意:-o 只保存最终输出内容,不包含中间思考或 diff。如果任务失败,文件不会被创建或覆盖。
方法三:用管道传入上下文 + 提示词git diff HEAD~1 | codex exec "analyze what changed and suggest test coverage"
此时 stdin 同时作为上下文(diff 内容)和提示词的一部分,Codex 会先解析 diff,再按指令分析。这步不能加引号包裹整个管道命令,否则 shell 会报错。
权限与沙箱行为差异
交互模式默认启用 --sandbox=read-only,但你可以随时用 /permissions 命令临时放开写权限;而 exec 模式下沙箱策略必须显式声明,不加 --sandbox=write 就永远无法修改任何文件——这是硬性安全限制,不是可选项。
第一步:检查当前 exec 默认沙箱档位codex exec --help | grep sandbox
配置 OpenClaw 多提供商认证与 OpenAI Codex OAuth 备用方案,实现自动模型切换,适用于多 OpenAI Codex 账户设置。
第二步:强制启用写权限(仅当你明确需要改文件时)codex exec "update package.json version" --sandbox=write
第三步:若需更高权限(如执行 npm install),必须叠加 --allow-command=install,否则命令直接被拦截。不加这项,npm install 永远不会运行。
这一步漏掉 --allow-command,exec 就会在执行环节静默跳过,既不报错也不提示,只在 stderr 输出一条 “command not allowed” 日志——很容易误判为任务完成。
怎么选:看有没有人在场
你在终端里敲命令、眼睛盯着屏幕、准备随时按回车?用 codex。
你要把任务塞进 GitHub Actions 的 yml 文件、放进 crontab 定时任务、或者写成 Makefile 的一个 target?必须用 codex exec。
你希望 Codex 改完代码后自动提交 git commit?交互模式下可以,exec 模式下必须额外加 --allow-command=commit 并确保 git 配置已就绪,否则 commit 步骤会被跳过。
这一步不配置 --allow-command=commit,exec 就不会调用 git,也不会报错,只会安静地结束。










