01
它是什么:本地沙箱优先,云端随时补位
Codex CLI 是 OpenAI 官方的编码 Agent,源码在 github.com/openai/codex、Apache-2.0 协议,核心用 Rust 写成单个本地二进制。它和本站其他终端 Agent 最大的差异在设计哲学上:先沙箱,后审批——命令默认关进操作系统级的沙箱里跑(macOS 用 Seatbelt,Linux 用 bubblewrap + seccomp),沙箱内的读操作不打扰你;一旦要写文件、要联网这种越界动作,才弹出来问你。
Codex 不只是 CLI。同一套能力铺开成一个家族:终端里的 codex(TUI 与脚本两用)、IDE 扩展、桌面 App(codex app),以及 chatgpt.com/codex 上的 Codex Web——在网页或 GitHub 上派任务,云端环境跑完把 diff 拉回本地。CLI 里的 codex cloud 和 codex apply 就是这条云端通道的本地入口。
开源这件事对使用者也很实际:changelog 公开可查、issue 区能看到真实反馈、CI 里可以钉死某个版本避免「昨晚升级后行为变了」。用官方工具的同时保留了对它的可见性。
计费走 ChatGPT 订阅:Plus、Pro、Business、Edu、Enterprise 都含 Codex 额度,首次启动用 ChatGPT 账号登录即可;也可以改用 API key 按量付费(需要额外配置)。
- 适合:信任沙箱模型、想让 Agent 少打扰你的日常开发;脚本与 CI 里的非交互任务;把独立任务派给云端并行跑;跨工具共享 AGENTS.md 约定。
- 不适合:网络完全隔离的受限环境(沙箱联网要显式配置);对审批弹窗有强依赖的流程(它的哲学是沙箱兜底而非步步确认)。
还有一个容易忽略的点:Codex 提供 /import 命令,可以直接迁移 Claude Code 的配置、项目文件和近期会话。从别家迁移过来的成本,比想象中低得多。
- 开发商
- OpenAI(官方 CLI)
- 开源协议
- Apache-2.0(github.com/openai/codex)
- 实现语言
- Rust,发布为单一二进制
- 版本节奏
- 0.16x(2026-10 底),发布极快,以 npm 页为准
- 平台
- macOS 12+ · Linux
- 原生 Windows
- 实验支持,建议 WSL2
- 登录
- ChatGPT 账号或 API key
- 项目约定
- AGENTS.md(开放标准,工具间通用)
02
安装:npm 一条命令,或官方脚本拿二进制
推荐 npm 方式——npm 包里带的是预编译好的 Rust 二进制,装完就能跑。不碰 Node 的机器走官方安装脚本,macOS 也可以 Homebrew。
系统要求不高:macOS 12+、Ubuntu 20.04+ / Debian 10+,Windows 11 建议 WSL2;内存 4GB 起步(8GB 更稳);Git 2.23+ 可选但强烈建议装——内置的 PR 助手和 diff 能力都依赖它。
# 需要 npm/Node 在 PATH 里(二进制本身是 Rust,不依赖 Node 运行) npm install -g @openai/codex # 验证 + 以后升级 codex --version npm install -g @openai/codex@latest
# macOS / Linux:下载独立二进制 + 校验 curl -fsSL https://chatgpt.com/codex/install.sh | sh # Windows(PowerShell) powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex" # 装完重开终端验证 codex --version
# macOS(cask 形式) brew install --cask codex # 内置的自更新命令也认 brew 安装 codex update
codex doctor,它会检查安装、配置、登录态和沙箱运行环境。Linux 上沙箱依赖 user namespaces,受限容器里跑不动时 doctor 会告诉你原因。升级与卸载
# 内置自更新(各安装渠道都认) codex update # npm 安装的:重装最新版 / 卸载 npm install -g @openai/codex@latest npm uninstall -g @openai/codex # brew 安装的: brew upgrade --cask codex brew uninstall --cask codex
装好了却 command not found:先查 PATH
三种渠道的可执行文件落在不同位置,新装的路径往往要重开终端才进 PATH。逐一定位:
# 找到它装在哪 which codex npm config get prefix # npm 装的:全局 bin 在 $(prefix)/bin # PATH 里有没有这些目录 echo $PATH | tr ':' '\n' | grep -E 'npm|homebrew' # 不改配置,直接用绝对路径验证能跑 /opt/homebrew/bin/codex --version
03
登录与首次运行:ChatGPT 授权,然后信任这个目录
第一次敲 codex 会让你选登录方式:Sign in with ChatGPT(推荐,订阅额度)或 API key。浏览器里授权一次,凭证存在本地。之后每个新仓库第一次启动还会问你是否信任该目录——这是沙箱体系的门口岗哨。
$ cd ~/your-project && codex 选择登录方式 → Sign in with ChatGPT → 浏览器完成授权 该目录首次运行 → 确认信任,进入 TUI > /status model / approval policy / writable roots / token 用量 一屏可见
信任确认只针对目录,做过一次就记住。换了新仓库会再问一次——这不是烦人,是它在替你守门。
# 浏览器授权登录(订阅用户) codex login # 命令行方式(设备码 / API key)也有 codex logout # 共用机器上记得清凭证 codex login status
-
01
进仓库启动
cd ~/your-project && codex。工作目录就是它的工作区边界,跟 Claude Code、Kimi Code 同一戒律。 -
02
跑一次 /init
生成 AGENTS.md 脚手架,把构建命令、目录结构、代码风格写进去并提交到 git,全队共享。
-
03
观察沙箱如何工作
让它「读一遍 src 并总结」——只读操作全程无弹窗;再让它「建个文件」——写操作会被沙箱拦下或请求审批。这两步看完,你就理解 Codex 了。
-
04
用 /status 核对状态
当前模型、审批策略、可写目录、token 余量一屏看全,不确定就先看它。
# 交互 TUI(默认) codex # 非交互:一条任务跑完拿结果就走 codex exec "解释 build 脚本做了什么,输出到 stdout" # 恢复上次会话(--last 直接接最近一次) codex resume --last
codex resume 随时能翻旧会话接着干,codex fork 还能把旧会话复制一份分头探索。从 Claude Code 迁移过来:/import
已经在用 Claude Code?不用从零开始。会话里跑 /import,它会把 Claude Code 的配置、项目文件和近期会话列出来,你勾选哪些要迁移,它负责搬进 Codex 的配置目录和本地文件。AGENTS.md 和 CLAUDE.md 的写法高度相通,约定文件基本可以照搬。
> /import # 选择要迁移的配置 / 项目文件 / 历史会话 # 注意:任务运行中不可用,需在本地 TUI 会话里执行
会话管理:分叉、归档与压缩
> /fork # 复制当前对话为新线程,试另一条思路 > /side 顺便确认这个方案有没有明显的安全问题 # 临时支线提问,不打断主任务 > /compact # 长对话先压缩,留住关键结论 > /archive # 归档并退出;codex unarchive 可恢复
注意区分:/new 开新对话但不清屏,/clear 清屏并开新对话,Ctrl-L 只清屏不动对话。归档用 /archive,删除用 /delete——后者不可恢复,还连带删掉派生的子会话。
04
核心概念:沙箱、AGENTS.md、分层配置、云端
沙箱与审批:两层独立旋钮
Codex 的安全模型是两个独立设置的组合。沙箱模式管「命令能碰什么」:read-only(默认,只能读)、workspace-write(可写工作区 + 临时目录)、danger-full-access(无沙箱)。审批策略管「什么时候问你」:默认 on-request(模型自己判断何时请求审批),也可设 never(从不问,失败直接返回给模型)。会话里用 /permissions 随时切预设(如 Read Only、Auto),配置层面写进 config.toml 持久化。
两档怎么搭:日常在别人仓库里围观,read-only 就够;自己的项目开 workspace-write,写文件不打扰你,只有联网、写工作区之外这类越界动作才会请求审批。审批弹出来时看清命令再放行——沙箱挡住了 90%,剩下 10% 的判断权在你。
特别注意:workspace-write 下网络默认是关的——npm install 装不上依赖多半是这个原因,解锁方式见第 07 节。
model = "gpt-5.3-codex" # 模型名以 /model 列表为准 approval_policy = "on-request" sandbox_mode = "workspace-write" # workspace-write 的细则(可选) [sandbox_workspace_write] network_access = true # 放行沙箱内联网,默认 false # writable_roots = ["~/logs"]
AGENTS.md:一份写、处处用的项目约定
/init 在当前目录生成 AGENTS.md 脚手架。它是开放标准(agents.md),不止 Codex 读。层级从上往下合并:全局的 ~/.codex/AGENTS.md、仓库根的 AGENTS.md、再到子目录里的 AGENTS.md——越靠近你工作文件的约定优先级越高。内容写法与 CLAUDE.md 同理:命令化、条目化,别写散文。
~/.codex/AGENTS.md # 全局个人约定,所有项目生效 ~/your-project/AGENTS.md # 仓库根,随 git 提交,全队共享 ~/your-project/src/AGENTS.md # 模块级,处理该目录时优先生效
config.toml 分层与排查
配置在 ~/.codex/config.toml,支持 profiles([profiles.xxx] 配 --profile 切换)。企业托管场景还有更高优先级的 requirements.toml 层。搞不清「为什么这个设置没生效」时,/debug-config 会把每一层的优先级和来源打印出来。
MCP 与云端任务
MCP 服务器配在 config.toml 的 [mcp_servers.*] 段,/mcp 查看会话里可用的外部工具。云端侧:chatgpt.com/codex 派发的任务跑在云端环境里,本地用 codex cloud 浏览、用 codex apply 把云端 agent 产出的 diff 以 git apply 方式落到工作区;GitHub 上的 PR 也能让 Codex 自动做 code review。
[mcp_servers.docs] command = "npx" args = ["-y", "@modelcontextprotocol/server-filesystem", "/tmp/docs"] # 会话里用 /mcp 查看是否连上、有哪些工具
danger-full-access 和 --dangerously-bypass-approvals-and-sandbox 只留给容器与一次性虚拟机。05
速查表:子命令、斜杠命令、沙箱、配置
下面这块表格能搜。忘了某个命令叫什么,直接搜 沙箱、审批、恢复 之类的关键词。
| 命令 | 作用 |
|---|---|
| codex | 交互 TUI 会话(默认入口) |
| codex "<任务>" | 进入 TUI 并附带一句开场任务 |
| codex exec "<任务>" | 非交互执行,输出完退出;提示词可用 stdin 传入 |
| codex exec --json | 事件流以 JSONL 输出,供脚本消费 |
| codex exec --output-last-message <file> | 把最终回复写入指定文件,CI 里好用 |
| codex resume [--last] | 恢复历史会话;--last 直接接最近一次 |
| codex fork | 复制旧会话为新线程,分头探索不破坏原记录 |
| codex review | 非交互跑一次代码评审 |
| codex apply | 把 Codex agent(云端)产出的 diff 以 git apply 落地 |
| codex cloud | 浏览 Codex Cloud 任务并取回本地(实验特性) |
| codex login / logout | 登录(浏览器/设备码/API key)与登出 |
| codex mcp | 管理外部 MCP 服务器 |
| codex doctor | 体检:安装、配置、登录态、沙箱运行环境 |
| codex sandbox | 在 Codex 提供的沙箱里直接跑一条命令调试 |
| codex agents | 打开 Agent 中心,浏览与切换各会话线程 |
| codex app | 启动桌面 App(未装会引导安装) |
| codex update / completion | 自更新 / 生成 shell 补全脚本 |
| codex --sandbox <模式> | 启动时指定沙箱模式(read-only 等,exec 也认) |
| codex -C <目录> | 指定工作目录再启动 |
| codex --worktree | 在托管的新 git worktree 里开工,改动隔离 |
| codex --add-dir <目录> | 额外可写目录(跨仓库任务) |
| codex -i <图片> | 附带截图/设计稿作为输入(可逗号分隔多张) |
| codex --profile <名> | 套用 config.toml 里定义的整组配置 |
| codex exec --skip-git-repo-check | 允许在非 git 目录里跑非交互任务 |
| 命令 | 作用 |
|---|---|
| /init | 在当前目录生成 AGENTS.md 脚手架 |
| /model | 切换模型与推理力度 |
| /permissions | 切审批预设(如 Read Only / Auto) |
| /plan [任务] | 切到计划模式,先出方案再动手 |
| /review | 让它审查当前工作区改动 |
| /diff | 显示 git diff(含未跟踪的新文件) |
| /mention <路径> | 把文件/目录明确附进对话 |
| /status | 模型、审批策略、可写根、token 用量 |
| /usage | 账户 token 用量与限额重置 |
| /compact | 总结压缩历史对话,释放上下文 |
| /new | 同一 CLI 里开新对话(不清屏) |
| /resume | 从会话列表挑一个恢复 |
| /fork | 把当前对话克隆成新线程 |
| /mcp [verbose] | 列出会话可用的 MCP 工具 |
| /skills | 浏览并套用本地 skills |
| /goal <目标> | 给线程挂一个持续追踪的任务目标 |
| /approve | 对自动评审拦下的操作放行重试一次 |
| /debug-config | 打印配置分层与生效来源,排配置问题 |
| /clear | 清屏并开新对话(Ctrl-L 只清屏不清对话) |
| /archive | 归档当前会话并退出(不删记录,可恢复) |
| /memories | 开关记忆的注入与生成 |
| /agent | 切换到某个子代理线程查看/继续其工作 |
| /raw | 原始滚动模式,方便选中复制长输出 |
| /copy | 复制最近一次完整回复(快捷键 Ctrl-O) |
| /ps /stop | 查看 / 停止后台终端任务 |
| /fast | 开关模型的 Fast 服务档(视目录而定) |
| /statusline /title /theme | 自定义状态栏、终端标题、高亮主题 |
| /ide | 把 IDE 打开的文件与选区带进下一条提示 |
| /vim /keymap | Vim 编辑模式 / 自定义 TUI 快捷键映射 |
| /apps /plugins | 浏览连接器(以 $slug 引用)/ 管理插件 |
| /hooks | 查看并信任生命周期钩子 |
| /quit /exit | 退出 CLI |
| 设置 / 值 | 含义 |
|---|---|
| sandbox_mode = "read-only" | 默认档。可读可执行,写文件必须过审批 |
| sandbox_mode = "workspace-write" | 可写工作区与临时目录;联网默认关闭 |
| sandbox_mode = "danger-full-access" | 无沙箱。只留给隔离环境 |
| [sandbox_workspace_write] network_access | true 时放行沙箱内网络,默认 false |
| [sandbox_workspace_write] writable_roots | 额外可写目录白名单 |
| [sandbox_workspace_write] exclude_slash_tmp | true 时把 /tmp 排除出可写范围 |
| approval_policy = "on-request" | 默认。模型自行决定何时请求你审批 |
| approval_policy = "never" | 从不询问,失败直接回给模型处理 |
| /permissions 预设 | 会话内一键切 Read Only / Auto 等预设 |
| default_permissions = ":workspace" | 新版权限档案::read-only / :workspace / :danger-full-access |
| [permissions.<名>.network.domains] | 按域名允许/拒绝联网,最小化放行 |
| --approve-for-me | 自动评审代你放行(workspace-write + 自动审批),别名 not-so-yolo |
| --dangerously-bypass-approvals-and-sandbox | 全关。别名 --yolo,只在容器里用 |
| 文件 / 配置项 | 作用 |
|---|---|
| ~/.codex/config.toml | 主配置:模型、审批、沙箱、MCP、profiles |
| model / model_provider | 默认模型与供应商(可接第三方) |
| [profiles.<名>] | 配置组,codex --profile 切换整套设定 |
| [mcp_servers.<名>] | MCP 服务器:command + args 启动方式 |
| AGENTS.md(仓库根) | 项目约定,/init 生成,随 git 共享 |
| ~/.codex/AGENTS.md | 全局个人约定,对所有项目生效 |
| 子目录 AGENTS.md | 模块级约定,离工作文件越近优先级越高 |
| tui.vim_mode_default = true | 编辑器默认 Vim 模式(会话内 /vim 临时切) |
| tui.keymap / tui.theme | 自定义快捷键映射 / 高亮主题(/keymap /theme) |
| requirements.toml | 企业托管层,优先级高于个人配置 |
没有匹配的内容。换个词试试,比如「沙箱」「审批」「恢复」。
06
实战:本地修 bug + 云端派任务,两条路各走一遍
先走本地 TUI 闭环,再把一个独立任务扔给云端,最后把结果拉回来。
cd ~/your-project codex > /init # 首次:生成 AGENTS.md 并按团队习惯改好 > /plan 把订单导出从同步改成异步任务,评估影响面 # 它产出方案与文件清单,你确认后退出 plan 模式开干 > 按方案实施,改完跑测试 > /diff # 亲眼过一遍每个改动 > /review # 让另一个视角再查一遍
并行:--worktree 隔离开工
大改动不想弄脏工作区,让 Codex 在托管的新 git worktree 里干活——改动隔离在独立目录,主工作区保持干净,完成后自己决定合不合:
codex --worktree
> 重构 orders 模块的状态机,保持测试全绿
评审先行:/review 与 codex review
提交前让它换一个视角看一遍改动。TUI 里 /review 审当前工作区;脚本化场景用非交互的 codex review,把评审意见直接产出成文本。它默认用会话模型评审,也可以在 config.toml 里用 review_model 单独指定。
# TUI 里:审完 /diff 逐条核对 > /review # 脚本里:非交互评审,结论直接打到 stdout codex review
非交互:塞进脚本与 CI
# 一条任务:改完自动跑测试,最终结论写进文件 codex exec "修复 issue #42 描述的空指针,跑 npm test 验证" \ --output-last-message /tmp/result.md # 事件流接程序,或从 stdin 喂长任务 codex exec --json "统计 TODO 数量并按模块分组输出" cat task.md | codex exec -
云端:派出去,拉回来
云端任务的完整循环:在 chatgpt.com/codex 上选好环境(绑定你的 GitHub 仓库)派任务,云端 Agent 在隔离环境里自己跑构建和测试,完成后你会得到一个可审阅的 diff。本地两条命令接住它:
# 1) 在 chatgpt.com/codex 或 GitHub 上派发任务(选好环境) # 2) 云端跑完后,本地浏览并取回 codex cloud codex apply # 把云端 diff 以 git apply 落到工作区
GitHub 侧的协作也值得一用:仓库连上 Codex 后,PR 可以交给它自动做 code review,评审意见直接留在 PR 里。人负责决策,它负责把每个 PR 先过一遍眼。
把常用设定固化成 profile
[profiles.safe] sandbox_mode = "read-only" approval_policy = "on-request" [profiles.fast] sandbox_mode = "workspace-write" approval_policy = "on-request" # 用法:codex --profile fast
配套文件长什么样:一份能直接抄的 AGENTS.md
# 项目:订单服务(Node 20 + pnpm) ## 常用命令 - 安装依赖:pnpm install - 跑测试:pnpm test(改 src/ 后必须跑) - 本地启动:pnpm dev ## 约定 - 包管理只用 pnpm,禁止 npm install - 提交信息用中文,格式:模块: 动作 - src/orders/ 是核心域逻辑,改动前先读 src/orders/README.md
按你仓库的真实命令改,别照抄。提交进 git 让全队共享——这是 AGENTS.md 和个人笔记最大的区别。
07
避坑:四个高频翻车点
Codex 的坑大多和它的沙箱哲学有关:系统在替你守门,你得知道门在哪。
坑一:命令被沙箱拦下 / npm install 失败
症状:写文件成功但 npm install 报网络错误、测试跑不起来。原因几乎总是 workspace-write 下网络默认关闭。三种解法,按胆量递增:当场在审批里放行这一次;临时用 /permissions 切到更宽的预设;在 config.toml 里对信任的目录开 [sandbox_workspace_write] network_access = true。别忘了重启会话让配置生效。
# 新版权限档案可以按域名精细化(beta) default_permissions = "dev-net" [permissions.dev-net.filesystem] ":minimal" = "read" [permissions.dev-net.filesystem.":workspace_roots"] "." = "write" [permissions.dev-net.network] enabled = true [permissions.dev-net.network.domains] "registry.npmjs.org" = "allow"
坑二:AGENTS.md 死活不生效
自查四件事:文件名必须是 AGENTS.md,全大写,没有后缀;位置要在仓库根或当前工作目录,放错层级读不到;修改后要开新会话,旧会话不会热加载;/init 生成的只是脚手架,里面的注释没删、约定没填,等于没写。用 /status 和 /debug-config 核对它到底加载了哪几层。
- 文件名拼成 agents.md / AGENT.md / AGENTS.MD——都不行,标准就是全大写 AGENTS.md。
- 放在仓库根上一级或 home 下以为「全局生效」——全局层在 ~/.codex/AGENTS.md,不是随便哪个上级目录。
- 写完忘了 git add——队友拉不到,CI 环境也读不到。
- 在一个会话里改了 AGENTS.md 就指望立刻生效——重新
/new或重启会话。
坑三:非 git 目录跑不了 exec
codex exec 出于安全默认要求 git 仓库(改动可追溯)。临时在乱目录跑个只读任务,加 --skip-git-repo-check;但正经任务永远该在 git 仓库里跑——沙箱 + 可回滚的 diff 是它的安全底线。
# 在非 git 目录跑一次性任务(仅限只读场景) codex exec --skip-git-repo-check --sandbox read-only \ "分析 ~/logs/app.log 里的报错分布,输出 TOP 5"
更简单的做法:临时 git init 一下。沙箱模式用 read-only 时它也不会写任何文件。
坑四:从 Claude Code 过来的心智错位
四点差异提前打好预防针:安全模型——Codex 先沙箱后审批,Claude Code 靠权限模式弹窗,所以别在 Codex 里找 --dangerously-skip-permissions 的等价焦虑,先看沙箱档位;记忆文件——AGENTS.md 是开放标准、按层级合并,CLAUDE.md 是 Claude 生态的名字(Codex 甚至提供 /import 迁移 Claude Code 的配置);会话操作——Codex 的 /new 不清屏、/clear 清屏且开新对话,跟直觉略反;审批词表——这里叫 /permissions 与审批预设,不叫 permission modes。记不住就 /status,一屏看清当前档位。
反过来从 Codex 回 Claude Code 也一样会错位:那边写 CLAUDE.md、弹权限审批、快捷键是 Shift+Tab 轮换模式。两个工具各守各的约定,别指望肌肉记忆无缝迁移——这正是本站把它们各写一页的原因。
08
进阶方向与官方资源
- developers.openai.com/codex — 官方文档总站:快速上手、CLI 参考、斜杠命令、配置指南。
- CLI 斜杠命令清单 — 全部内置命令的官方说明(本页速查表底本)。
- github.com/openai/codex — 开源仓库:源码、changelog、issue 区。
- npmjs.com/package/@openai/codex — npm 包页:最新版本号与安装命令。
- AGENTS.md 指南 — 项目约定文件的层级与写法。
- config.toml 参考 — 全量配置键说明(配合 config-basic / config-advanced)。
- chatgpt.com/codex — Codex Web:云端任务、环境配置、GitHub 集成。
09
收尾:照着勾一遍
0 / 5