
Codex CLI:OpenAI 开源的本机命令行编程 Agent,终端内读改代码、执行命令与审阅变更|部署与使用全指南
项目仓库: https://github.com/openai/codex
开源协议:Apache-2.0(仓库 LICENSE,Copyright © OpenAI)
· 运行语言:Rust(codex-rs Cargo 工作区) ·
交付形态:本地命令行交互界面(TUI)、非交互执行器(codex exec)、本地后台
app-server 与可选桌面端联动 · 官方未提供 Docker 镜像 ·
默认对外端口:无(CLI/TUI 不监听固定 Web 端口) · 官方文档:Codex Documentation
非官方声明:本文是基于官方 README、仓库
docs/目录、配置 Schema 与 CLI 源码整理的部署使用指南,不代表 OpenAI 官方立场。Codex、ChatGPT、OpenAI 等名称归各自权利人所有;本文不附带任何模型令牌、账号密码或会话凭据,所引用的套餐权益、模型目录与计费口径均以 OpenAI 官方账号页面与服务条款为准。项目按现状(AS-IS)提供,本文不构成对代码改动安全性、生成结果正确性、商用授权或平台账号状态的任何担保。
1 项目简介
Codex CLI 是 OpenAI 开源的一款运行在用户本机电脑上的命令行编程 Agent(coding agent)。按照官方 README 的自述,它是 “a coding agent from OpenAI that runs locally on your computer”:你在终端里用自然语言提出任务,Agent 会在当前代码仓库内浏览文件、读取代码、提出并应用补丁、执行 shell 命令、审阅变更,全过程通过终端交互界面(TUI)展示审批请求、命令结果与改动差异。
需要先区分 OpenAI Codex 产品体系中几个不同形态,避免把线上服务与本地工具混为一谈:
- Codex CLI(本文对象):本机终端里的开源命令行
Agent,源码在
openai/codex仓库的codex-rsRust 工作区中。 - Codex IDE 扩展:面向 VS Code、Cursor、Windsurf 等编辑器的插件形态,入口见官方 IDE 安装文档 developers.openai.com/codex/ide。
- Codex 桌面应用:在已安装 CLI 的 macOS / Windows
环境中执行
codex app可拉起桌面端,也可访问 Codex App 页面 获取。 - Codex Web(云端 Agent):OpenAI 的云端任务型 Agent,在线入口为 chatgpt.com/codex,与本机 CLI 是两套部署形态。
CLI 本身是一个本地客户端与编排层:模型推理通过登录后接入的 OpenAI 服务完成,也可以在配置中切换到用户自配的兼容 Provider 或本地模型运行时;代码文件、补丁与命令执行发生在本机沙箱之内。
1.1 核心信息一览
| 项目项 | 内容 |
|---|---|
| 项目名称 | Codex CLI(可执行文件 codex,仓库
openai/codex,源码根目录 codex-rs/) |
| 仓库地址 | github.com/openai/codex |
| 项目定位 | OpenAI 开源、本机运行的命令行编程 Agent,终端内完成代码浏览、读写、命令执行与变更审阅 |
| 开源协议 | Apache-2.0(见仓库 LICENSE) |
| 运行语言 | Rust(Cargo workspace:codex-rs);发布物含 macOS /
Linux / Windows 原生二进制、npm 包、Homebrew Cask 与官方安装脚本 |
| 官方系统要求 | 取自仓库 docs/install.md:macOS 12+、Ubuntu 20.04+ /
Debian 10+、Windows 11(WSL2 口径);Git 2.23+ 为可选推荐(内置 PR
辅助功能需要);内存 4GB 最低、8GB 推荐 |
| 交付形态 | 交互式 TUI、非交互模式 codex exec、本地后台 app-server
守护进程、桌面端联动命令 codex app |
| 默认对外端口 | 无固定 Web 端口;CLI/TUI 是终端程序,本地 app-server 由 CLI 内部管理,不对外暴露默认 HTTP 服务端口 |
| 配置目录 | 默认 ~/.codex/(即 CODEX_HOME),含
config.toml、认证凭据、历史记录、日志、主题、技能等;可用
CODEX_HOME 环境变量整体覆盖 |
| 本地入口 | 终端执行 codex
进入交互会话;codex exec "<任务>"
进入非交互模式;codex review 发起变更审阅 |
| 官方文档 | Codex Documentation;仓库文档目录 docs/ |
| 源码构建 | Rust 工具链 + Cargo 构建 codex-rs 工作区;详见第 7
节 |
1.2 适用场景
- 在个人或团队的本地代码仓库中,用自然语言描述需求,让 Agent 通读相关文件、给出实现方案并直接落盘补丁,再由人工审阅差异后接受或拒绝。
- 存量代码理解:让 Agent 解释模块结构、调用关系与某段代码的行为,生成代码梳理文档或单元测试雏形。
- 非交互自动化:在 CI、脚本或定时任务中使用
codex exec以无人值守方式执行修复、审阅或批量任务,事件以 JSONL 输出供流水线解析。 - 代码审阅:用
codex review对未提交改动、指定基线分支差异或某个 commit 进行非交互审阅,输出问题清单与改进建议。 - 工具扩展:通过 MCP(Model Context Protocol)接入外部服务与本地工具,扩展 Agent 可调用的能力边界;通过插件(plugins)与市场(marketplace)管理扩展来源。
- 团队规范沉淀:在仓库根目录维护
AGENTS.md与项目级.codex/配置,把编码规范、目录约定与安全要求注入每次会话上下文。
1.3 能力边界(官方口径)
- 本地客户端不等于本地大模型:Codex CLI 运行在本机,但默认通过 ChatGPT 账号或 API Key 接入 OpenAI 云端模型完成推理;代码内容、提示词与工具结果会随请求发送到所选用的模型后端。切换到本地或自托管 Provider 后,对应数据流以该 Provider 为准。
- 模型能力以所选后端为准:支持的模型列表、上下文长度、推理强度档位、联网搜索模式均由当前模型目录(model catalog)与后端能力决定;CLI 不承诺在任何后端下提供完全一致的功能子集。
- 命令执行受沙箱与审批策略约束:Agent 提议的 shell
命令先经过平台沙箱策略(
read-only/workspace-write/danger-full-access)与审批策略(on-request/never/ 细粒度 granular 规则)两层控制;各平台沙箱实现不同(macOS Seatbelt、Linux bubblewrap / Landlock、Windows 受限令牌),详见 8.4 节与第 10 节。 - 桌面端、IDE
扩展与云端任务是独立形态:
codex app仅在 macOS / Windows 提供;IDE 扩展安装路径见官方文档;云端 Codex Web 的任务队列、权限与计费由 ChatGPT 账号体系管理,不在本机 CLI 配置范围内。 - 仓库不接受外部代码 Pull Request:官方
docs/contributing.md明确说明,社区贡献以 Issue 报告、复现步骤、日志、根因分析与设计讨论为主,代码改动由 Codex 团队负责;本指南属于第三方整理文档,与官方文档口径冲突时以官方仓库与文档站最新版本为准。 - 官方未提供 Docker 部署路径:仓库内没有官方
Dockerfile与docker-compose.yml;本文第 6、7 节分别对应官方安装渠道与源码构建,不编造 Compose 服务、端口与环境变量。
2 功能特性
以下特性整理自官方 README、配置 Schema、CLI
源码(codex-rs/utils/cli、codex-rs/exec、codex-rs/tui、codex-rs/cli)与
TUI 斜杠命令定义;具体菜单位置与参数名称以安装版本内置帮助与
codex --help 输出为准。
2.1 交互式终端会话(TUI)
- 进入仓库目录执行
codex即启动交互 TUI:上方为会话转录区(模型回复、工具调用、命令输出与改动差异),底部为输入框,状态行展示当前模型、推理强度、权限模式与任务状态。 - 输入框支持多行编辑、历史检索、粘贴突发检测、Vim
模式开关(
/vim)、外部编辑器唤起;鼠标选择复制、右键粘贴行为可在配置中调整。 - 会话可随时发起新对话(
/new)、保留现场分叉(/fork)、恢复历史会话(/resume、/resume --last)、归档(/archive)或永久删除(/delete)。 - 终端失焦时自动生成会话摘要(
auto_recap);对话过长时自动压缩上下文,也可手动执行/compact立即压缩、/recap生成当前会话回顾。 - 内置 Plan
模式(
/plan)用于只规划不执行的阶段;可设置长任务目标(/goal)并在任务进行中查看。
2.2 非交互执行与代码审阅
codex exec(别名codex e)以非交互方式运行一个新会话,适合脚本与 CI:支持事件 JSONL 输出(--json)、把最后一条 Agent 消息写入指定文件(--output-last-message/-o)、输出响应结构 Schema(--output-schema)、临时不落盘(--ephemeral)与跳过 Git 仓库检查(--skip-git-repo-check)。codex review专门用于代码审阅:--uncommitted审阅暂存、未暂存与未跟踪改动;--base <分支>对比指定基线;--commit <SHA>审阅单个 commit(可配--commit-title);也可以附带自定义审阅指令。- 支持在独立 Git worktree
中运行会话(
--worktree),把实验性改动隔离在新工作树中。
2.3 模型与 Provider 配置
- 登录方式一:启动后选择 Sign in with ChatGPT,使用
ChatGPT 账号套餐(Plus、Pro、Business、Edu、Enterprise 等可包含的 Codex
使用额度,权益以账号页为准)登录;方式二:使用 API Key 通过
codex login --with-api-key从标准输入读入后保存。 - 内置模型目录之外,可在
config.toml的[model_providers.<id>]中追加自定义 OpenAI 兼容 Provider,配置基础 URL、密钥环境变量、请求头、重试与流式超时、线协议等;model_provider字段指定当前使用的 Provider。 - 本地开源模型运行时可通过
--oss进入本地模型模式,配合--local-provider <lmstudio|ollama>指定本地服务提供方;对应配置项为oss_provider。 - 模型粒度参数:
model覆盖所选模型、model_reasoning_effort推理强度、model_reasoning_summary推理摘要档位(auto/concise/detailed/none)、model_verbosity输出详略(low/medium/high)、model_context_window上下文窗口覆盖、service_tier服务档位(default/priority/flex,兼容旧fast标识)。 - 历史自动压缩阈值由
model_auto_compact_token_limit控制;工具输出进入上下文的额度由tool_output_token_limit控制。
2.4 沙箱、审批与权限体系
- 沙箱三档模式(
sandbox_mode):read-only(只读)、workspace-write(工作区可写,默认常用档)、danger-full-access(完全访问,绕过沙箱);workspace-write档下可进一步配置可写根目录、网络访问开关与临时目录排除项。 - 审批策略(
approval_policy):on-request(模型在需要时请求人工批准)、never(永不询问,失败直接返回模型),以及granular细粒度结构,分别控制 shell 命令审批、MCP 提示触发、request_permissions工具触发、execpolicy 规则触发、技能脚本审批、MCP 唤起提示等分类是否放行或自动拒绝。 - 一键自动复核模式
--approve-for-me(别名--not-so-yolo):审批请求路由到自动复核器,底层叠加workspace-write沙箱与on-request策略;--dangerously-bypass-approvals-and-sandbox(别名--yolo)跳过全部确认与沙箱,仅应在外部已隔离的环境中使用。 - 项目目录信任级别(
projects中的trust_level:trusted/untrusted)决定套用的默认审批与沙箱策略;命名权限配置文件(permissions)可在--permission-profile中调用。 - 生命周期
Hooks(
hooks)可在会话开始/结束、模型请求前后、工具使用前后、压缩前后等节点挂载外部命令;企业托管配置可通过allow_managed_hooks_only仅保留托管 Hooks。
2.5 MCP 工具接入与插件生态
mcp_servers配置块声明外部 MCP 服务,支持 stdio 命令型与 streamable HTTP 型两类传输;可配置环境变量、HTTP 头、OAuth 登录、启动超时、工具超时、工具白/黑名单与启动就绪策略。codex mcp子命令行管理 MCP 服务:list、get <名称>、add <名称>、remove <名称>、login <名称>(OAuth)、logout <名称>;HTTP 型服务支持 Bearer Token 环境变量、OAuth 客户端标识、客户端密钥、注册策略(AUTO/CIMD/DCR)与资源参数。- 插件体系(
codex plugin)支持add、list、remove与marketplace子命令;marketplaces配置块管理插件市场来源;插件与 MCP 工具的执行权限仍受审批策略约束。 - 技能(Skills)、记忆(Memories)、预设提示(Presets)、协作模式模板等扩展能力通过配置块与
TUI
命令分别管理;
/skills、/memories、/presets在交互界面内进入对应管理面板。
2.6 工程化与会话管理
- 会话持久化在本地 SQLite
状态库与历史文件中;
codex resume、codex fork、codex queue、codex archive、codex unarchive、codex delete完成会话的恢复、分叉、追加消息、归档、取消归档与删除;codex agents打开后台共享服务器上的 Agent 任务总览。 - 历史记录写入
~/.codex/history.jsonl,history.persistence可取save-all(保存全部)或none(不落盘);history.max_bytes限制历史文件大小,超出后淘汰最旧条目。 - 诊断日志默认以有界本地存储记录;显式设置
log_dir后会同时写出纯文本 TUI 日志并把 SQLite 日志库路由到该目录;RUST_LOG环境变量控制 Rust 日志级别。 - 内置网络搜索工具(
web_search)四档模式:disabled(关闭)、cached(缓存)、indexed(索引)、live(实时联网);交互界面--search可在本次会话启用实时联网。 - 其他工程能力:Web
浏览工具(
browser_use)、桌面操作工具(computer_use)、网络代理与域名 / Unix Socket 权限策略(network)、通知命令(notify)、OTEL 遥测导出(otel)、特性开关(features)、Shell 环境变量继承策略(shell_environment_policy)等,细节以配置 Schema 为准。
3 官方界面预览
开篇图即官方 README 中使用的 Codex CLI
封面素材(.github/codex-cli-splash.png)。
进入终端交互会话后,界面主要由以下区域构成(依据 TUI 源码与内置斜杠命令面板整理,实际布局以本机版本为准):
- 会话转录区:展示系统上下文注入、模型回复、工具调用进度、shell 命令执行结果、文件补丁差异与审批弹窗;支持向上滚动检索、原生复制与 Mermaid / 表格 / 数学公式等富文本渲染开关。
- 输入框(composer):多行自然语言输入,支持历史搜索、排队发送(
queue)、Vim 模式与外部编辑器;输入/会弹出内置斜杠命令面板,命令按使用频率排序并附中文之外的官方英文描述。 - 状态行与终端标题:默认展示当前模型与推理强度、当前目录、任务活动状态等条目;
/statusline与/title可分别配置状态行与终端标签条目的显隐顺序,主题色跟随当前语法主题。 - 审批与权限弹窗:命令执行前按审批策略弹出批准 / 拒绝 / 前缀批准 / 会话内批准等选项;MCP 唤起、技能脚本执行、工具权限请求按 granular 规则分类提示。
官方文档站当前在部分网络环境下有访问限制;除 README 封面素材外,仓库未随附其他可直接下载的界面截图,因此本节不额外配图,避免使用非官方或与项目无关的图片。
4 官方跳转链接汇总
5 前置要求与服务器配置
5.1 软件前提
- 操作系统(取自
docs/install.md系统要求表):- macOS 12 及以上;
- Ubuntu 20.04+ / Debian 10+;
- Windows 11(WSL2 口径);README 同时提供 Windows 原生 PowerShell 安装脚本,沙箱能力与受限令牌后端支持范围以官方源码与版本说明为准。
- Git:2.23+,可选但推荐;内置 PR 辅助功能需要 Git 可用。仅使用发布二进制时不强制安装。
- 内存:4GB 最低,8GB 推荐;本地运行模型或同时打开多个会话时建议预留更多系统内存。
- npm 渠道额外要求:本机已安装 Node.js 与
npm;具体受支持的 Node 版本以 npm 包页面
engines字段为准,本文不凭印象写版本号。 - Homebrew 渠道:仅 macOS;先完成 Homebrew
安装后再执行
brew install --cask codex。 - 源码构建额外要求:Rust
工具链(rustup)、Cargo、
just、dotslash、cargo-nextest等,完整步骤见第 7 节。 - 网络要求:首次登录与模型推理需要访问所选模型后端;MCP 服务、插件市场与更新检查的可达性取决于对应服务地址。使用本地模型 Provider 时,只需本机运行时可达。
- 官方未提供 Docker 镜像:仓库内没有官方
Dockerfile与docker-compose.yml;任何第三方打包的容器镜像均不属于官方分发,使用前应自行核验来源、签名与完整性,本文不提供编造的 Compose 路径。
5.2 硬件与系统建议
| 项目 | 官方口径与建议 |
|---|---|
| CPU | 普通现代 x86_64 / ARM64 处理器即可;Agent 编排与终端渲染本身不重,模型推理在云端后端完成 |
| 内存 | 官方口径 4GB 最低、8GB 推荐;本地模型运行时另按运行时与模型大小预留内存 |
| 磁盘 | CLI 二进制、配置、会话历史、日志与技能占用较小;如使用本地模型,需为模型权重单独预留磁盘空间(由本地运行时管理,不计入 CLI 本体) |
| 显卡 | 云端模型模式不依赖本机显卡;本地模型模式由所选运行时(Ollama、LM Studio 等)决定硬件要求,与 CLI 版本无关 |
| 终端 | 支持 ANSI 颜色、交替屏幕缓冲区与鼠标滚轮的现代终端;TUI 提供
--no-alt-screen 兼容模式与
tui.alternate_screen 配置 |
| 网络 | 可访问 ChatGPT 登录回调与模型后端;远程无头服务器场景使用
codex login --device-auth 完成设备码登录(见 10.1 节) |
5.3 目录与环境变量分配
| 项 | 默认值 / 路径 | 用途与说明 |
|---|---|---|
CODEX_HOME |
默认 ~/.codex/ |
CLI 配置、凭据、历史、日志、主题、宠物、技能等的根目录;环境变量
CODEX_HOME 可整体覆盖 |
| 主配置 | $CODEX_HOME/config.toml |
用户级配置;另有托管配置层、项目级 .codex/config.toml
与会话级覆盖,优先级见 8.1 节 |
| 认证凭据 | $CODEX_HOME/auth.json(file 存储后端) |
ChatGPT 会话 / API Key 凭据;也可切换到系统 keyring 或仅内存临时存储 |
| MCP OAuth 凭据 | $CODEX_HOME/.credentials.json(file 存储后端) |
MCP 服务 OAuth 令牌;存储后端可选 keyring / auto / file |
| 历史文件 | ~/.codex/history.jsonl |
交互历史持久化;history.persistence
可关闭落盘,history.max_bytes 限制大小 |
| 日志目录 | $CODEX_HOME/log(未显式配置 log_dir
时) |
显式配置 log_dir 后同时启用纯文本 TUI 日志并路由 SQLite
日志库 |
| 主题目录 | $CODEX_HOME/themes |
自定义语法高亮主题;TUI /theme 切换内置主题 |
| 自定义宠物 | $CODEX_HOME/pets/<pet-id>/pet.json |
终端宠物自定义定义 |
| 项目指令 | 仓库根目录 AGENTS.md |
项目级编码规范与上下文;缺失时按
project_doc_fallback_filenames 依次回退 |
| 项目配置 | 仓库内 .codex/ 目录 |
项目级配置、权限与技能覆盖;通过
project_root_markers(默认
[".git"])向上定位项目根 |
| 端口 | 无固定对外端口 | CLI/TUI 不启动 Web 服务;本地 app-server 守护进程由
codex app-server / codex daemon
相关命令管理,内部通信不占用需要用户手工分配的固定端口 |
不要把模型 API Key、会话令牌、MCP OAuth 凭据写进公开仓库的
config.toml、截图、文档或聊天记录;自定义 Provider 的密钥优先通过env_key指向环境变量注入,参考 8.3 节。
6 方式一:官方安装脚本、npm 与 Homebrew(推荐日常使用)
CLI 工具没有官方 Docker 一键部署,日常使用首选 README 公布的四条官方渠道:安装脚本、npm 全局包、Homebrew Cask、GitHub Releases 原生二进制。
6.1 macOS / Linux:官方安装脚本
README 公布的 Mac / Linux 一键安装命令:
curl -fsSL https://chatgpt.com/codex/install.sh | sh安装脚本默认从 https://releases.openai.com/codex
下载独立安装器;当元数据或资产下载不可用时回退到 GitHub
Releases。若需要强制走 GitHub Releases 渠道,设置环境变量
CODEX_INSTALLER_USE_RELEASES_OPENAI_COM=false(0、no
同样被接受):
curl -fsSL https://chatgpt.com/codex/install.sh | CODEX_INSTALLER_USE_RELEASES_OPENAI_COM=false sh安装完成后在终端执行 codex 即可启动。
6.2 Windows:PowerShell 安装脚本
README 公布的 Windows 安装命令:
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"强制使用 GitHub Releases 渠道:
$env:CODEX_INSTALLER_USE_RELEASES_OPENAI_COM='false'; irm https://chatgpt.com/codex/install.ps1 | iex6.3 npm 全局安装
README 公布的 npm 渠道命令:
npm install -g @openai/codex前置条件是本机已安装 Node.js 与 npm;安装后同样执行
codex 启动。卸载与版本切换以 npm 全局包管理命令为准(如
npm uninstall -g @openai/codex、npm install -g @openai/codex@latest)。
6.4 Homebrew 安装(macOS)
README 公布的 Homebrew 渠道命令:
brew install --cask codex后续升级用 brew upgrade --cask codex;Cask
包与官方安装器、npm
包三者安装路径相互独立,避免在同一台机器上混用多套安装方式导致命令指向不一致。
6.5 GitHub Releases 原生二进制
前往 latest GitHub Release 下载对应平台归档。README 给出的常用资产:
| 平台 | 归档文件 |
|---|---|
| macOS Apple Silicon / arm64 | codex-aarch64-apple-darwin.tar.gz |
| macOS x86_64(旧款 Intel Mac) | codex-x86_64-apple-darwin.tar.gz |
| Linux x86_64 | codex-x86_64-unknown-linux-musl.tar.gz |
| Linux arm64 | codex-aarch64-unknown-linux-musl.tar.gz |
每个归档内是一个名称中带平台后缀的单文件可执行程序(例如
codex-x86_64-unknown-linux-musl),解压后建议重命名为
codex 并放入 PATH 中的目录:
# 以 Linux x86_64 为例(实际文件名以 Release 页面为准)
tar -xzf codex-x86_64-unknown-linux-musl.tar.gz
mv codex-x86_64-unknown-linux-musl ~/.local/bin/codex
chmod +x ~/.local/bin/codex
codex --version6.6 首次登录与启动
- 进入一个代码仓库目录(或任意目录,非仓库场景配合
--skip-git-repo-check),执行:
codex- 首次启动进入登录流程,选择 Sign in with ChatGPT:浏览器打开本机登录回调页面,完成账号授权后回到终端进入会话。ChatGPT Plus、Pro、Business、Edu、Enterprise 等套餐包含的 Codex 额度以 OpenAI 帮助中心 Codex 说明 与账号页面为准。
- 不使用 ChatGPT 套餐时可改用 API Key 认证:把密钥从标准输入交给
codex login --with-api-key,例如:
printenv OPENAI_API_KEY | codex login --with-api-key- 登录状态可用
codex login status查看;退出登录执行codex logout。 - 远程 / 无头服务器没有浏览器时,使用设备码方式登录:
codex login --device-auth- 启动后在输入框输入任务描述回车即可;模型、权限模式、联网搜索等可在 TUI 斜杠命令面板中切换,也可用命令行参数临时覆盖(见第 8、9 节)。
安装渠道之间不要混装:脚本安装器、Homebrew、npm 与 Releases 二进制各自的升级与回滚方式不同;切换渠道前先卸载旧版本,避免终端里的
codex指向旧路径。
7 方式二:Rust 源码克隆与本地构建
适合需要跟踪最新提交、参与本地调试、阅读源码或二次打包的场景。构建步骤取自仓库
docs/install.md。
7.1 克隆仓库与安装 Rust 工具链
# 1. 克隆仓库并进入 Cargo 工作区根目录
git clone https://github.com/openai/codex.git
cd codex/codex-rs
# 2. 安装 Rust 工具链(如本机尚未安装)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
# 3. 安装格式化与 lint 组件
rustup component add rustfmt
rustup component add clippy
# 4. 安装工作区 justfile 使用的辅助工具
cargo install --locked just
# DotSlash 会在首次使用时拉取固定版本的开发工具(如 buildifier)
cargo install --locked dotslash
# 运行 just test 辅助命令使用 nextest
cargo install --locked cargo-nextest7.2 构建与试运行
# 在 codex-rs 目录下构建
cargo build
# 用示例提示启动 TUI
cargo run --bin codex -- "explain this codebase to me"构建产物位于 Cargo 工作区 target/
目录;日常开发与提交前使用根目录 justfile 辅助命令(默认作用于
codex-rs):
# 格式化
just fmt
# 修复指定 crate(替换为你改动的 crate 名称)
just fix -p <crate-you-touched>
# 运行指定 crate 的测试(示例:codex-tui)
just test -p codex-tui
# 通过 nextest 运行整体测试套件
just testdocs/install.md 同时提示:日常本地运行不要使用
--all-features,它会增加构建时间并让 target/
磁盘占用额外编译多套特性组合。
7.3 开发者补充说明
- 项目业务逻辑集中在
codex-corecrate,供各 Rust 界面(TUI、app-server、exec 服务等)复用;不同平台的沙箱后端分别在linux-sandbox、bwrap、mxc-sandbox、shell-command等 crate 中实现。 - 官方
docs/contributing.md明确:不接收外部代码贡献与 Pull Request;本地构建仅用于学习、调试与打包实验,问题反馈请通过 Issue 提交复现步骤、日志与环境信息。 - 本地构建前确认本机 Rust 版本满足工作区
rust-toolchain与各Cargo.toml要求;构建失败先检查rustup show与系统链接器(Linux 需gcc/clang与pkg-config等基础构建组件,按发行版包管理器补齐)。 - 源码调试时可配合 8.6 节日志配置与 9.5
节诊断命令;
codex debug models可导出当前模型目录 JSON,codex debug prompt-input可查看发送给模型的上下文输入结构。
8 配置项说明
8.1 配置文件位置与加载层级
- 用户配置:
$CODEX_HOME/config.toml(默认~/.codex/config.toml)。 - 配置 Profile:
[profiles.<名称>]定义命名配置单元,命令行--profile/-p <名称>叠加$CODEX_HOME/<名称>.config.toml到基础用户配置之上。 - 项目配置:在项目根目录(由
project_root_markers默认标记.git向上查找)内的.codex/目录与AGENTS.md指令文件。 - 托管 / 企业配置:由集中管理方下发的 requirements
与托管配置层;
allow_managed_hooks_only = true只能写在requirements.toml中,用于忽略用户、项目与会话级 Hooks 配置、仅保留托管 Hooks。 - 命令行覆盖:每次启动可用
-c key=value(或--config key=value)追加任意数量覆盖项,支持点号路径嵌套,右侧值按 TOML 解析,解析失败则作为字面字符串。 - 单条命令示例:
codex -c model="gpt-5-codex" -c sandbox_mode="read-only" -c web_search="cached"
config.toml中出现当前版本无法识别的字段时,可加--strict-config让程序直接报错退出,便于尽早发现配置拼写错误。
8.2 核心通用配置表
下表字段均来自仓库
codex-rs/core/config.schema.json;默认值以 Schema
与打包默认值 codex-rs/config/defaults.toml
为准,未列出的字段参考官方 配置参考
与 Schema 最新版本。
| 字段 | 类型 / 取值 | 默认 | 说明 |
|---|---|---|---|
model |
string | 未设置(用内置目录默认) | 覆盖当前选择的模型;模型标识以内置模型目录为准 |
model_provider |
string | 未设置 | 选用 model_providers 映射表中的 Provider 键名 |
model_providers |
object | {} |
用户自定义 Provider 条目;内置 ID 不可覆盖 |
oss_provider |
string | 未设置 | 本地开源模型偏好提供方,如
lmstudio、ollama |
approval_policy |
on-request / never / granular 对象 |
未设置(跟随内置默认) | 命令审批策略;granular 细粒度结构见 8.4 节 |
sandbox_mode |
read-only / workspace-write /
danger-full-access |
未设置(跟随内置默认) | 命令执行沙箱策略 |
sandbox_workspace_write |
object | 见 8.4 节 | workspace-write 模式的可写根、网络与临时目录配置 |
model_reasoning_effort |
string(模型支持的推理强度标识) | 未设置 | 推理强度覆盖;可选档位以当前模型目录为准 |
model_reasoning_summary |
auto / concise / detailed /
none |
未设置 | 推理摘要档位;none 关闭推理摘要 |
model_verbosity |
low / medium / high |
未设置 | GPT-5 系模型输出详略控制(Responses API
text.verbosity) |
model_context_window |
integer(tokens) | 未设置 | 覆盖模型上下文窗口大小 |
model_auto_compact_token_limit |
integer(tokens) | 未设置 | 触发历史自动压缩的 token 阈值 |
model_post_turn_compact_threshold_percent |
integer(百分比) | 未设置 | 末次回复后触发压缩的可用上下文占比 |
tool_output_token_limit |
integer(tokens) | 未设置 | 工具 / 函数输出进入上下文的 token 预算 |
web_search |
disabled / cached / indexed /
live |
未设置 | 联网搜索工具模式 |
service_tier |
string(default / priority /
flex,兼容旧 fast) |
未设置 | 新回合显式请求的服务档位 |
instructions |
string | 未设置 | 注入为 developer 角色消息的系统指令 |
developer_instructions |
string | 未设置 | 注入 developer 角色消息的补充指令 |
project_doc_max_bytes |
integer | 32768 |
项目指令内容总字节上限 |
project_doc_fallback_filenames |
array | [] |
缺少 AGENTS.md 时依次查找的回退文件名 |
project_root_markers |
array | [".git"] |
向上定位项目根目录的标记文件 |
include_permissions_instructions |
boolean | true(打包默认) |
是否注入权限说明 developer 块 |
include_apps_instructions |
boolean | true(打包默认) |
是否注入应用说明 developer 块 |
include_collaboration_mode_instructions |
boolean | true(打包默认) |
是否注入协作模式 developer 块 |
include_environment_context |
boolean | true(打包默认) |
是否注入环境上下文 user 块 |
include_environment_context_time |
boolean | true(打包默认) |
环境上下文是否包含当前日期与时区 |
check_for_update_on_startup |
boolean | true |
启动时检查新版本并提示;集中管理更新时可设为 false |
file_opener |
vscode / vscode-insiders /
windsurf / cursor / none |
vscode(打包默认) |
模型输出中文件引用的 URI 打开方式 |
hide_agent_reasoning |
boolean | false |
从界面 / 输出中隐藏 AgentReasoning 事件 |
show_raw_agent_reasoning |
boolean | false |
在界面 / 输出中显示原始推理内容事件 |
suppress_unstable_features_warning |
boolean | 未设置 | 抑制不稳定特性警告 |
notify |
array | 未设置 | 用户通知触发时派生的外部命令 |
log_dir |
path | 未设置 | 显式设置后启用纯文本 TUI 日志并路由 SQLite 日志库 |
sqlite_home |
path | $CODEX_SQLITE_HOME 或 $CODEX_HOME
下默认位置 |
SQLite 状态库目录 |
cli_auth_credentials_store |
file / keyring / auto /
ephemeral |
file(打包默认) |
CLI 认证凭据存储后端 |
mcp_oauth_credentials_store |
keyring / auto / file |
auto(打包默认) |
MCP OAuth 凭据存储后端 |
telemetry 相关 |
analytics.enabled、feedback.enabled |
未设置(跟随客户端默认) | 关闭 analytics.enabled 可停用本机 OpenAI 分析采集;关闭
feedback.enabled 停止反馈上传与后台 Guardian 审阅留存 |
8.3 模型与 Provider 配置
8.3.1 内置 OpenAI 后端
默认使用 ChatGPT 登录态或内置 OpenAI API
后端;chatgpt_base_url 覆盖 ChatGPT(区别于 OpenAI
API)请求的基础 URL;openai_base_url 覆盖内置
openai Provider 的基础 URL;openai_base_url
之外的自定义端点统一走 [model_providers]。
8.3.2 自定义 Provider 结构
[model_providers.<id>] 支持的字段(取自
ModelProviderInfo Schema):
| 字段 | 用途 |
|---|---|
name |
友好显示名称 |
base_url |
Provider 的 OpenAI 兼容 API 基础 URL |
env_key |
存放该 Provider API Key 的环境变量名;请求时读取环境变量,避免把密钥写入配置文件 |
env_key_instructions |
指引用户获取并配置该环境变量的说明文字 |
http_headers |
静态额外 HTTP 头(键值对) |
env_http_headers |
从环境变量取值的额外 HTTP 头(头名 → 环境变量名) |
query_params |
附加到基础 URL 的查询参数 |
wire_api |
线协议;内置选项为 responses(OpenAI
/v1/responses Responses API) |
requires_openai_auth |
是否要求 OpenAI API Key 或 ChatGPT 登录令牌;为 true
时首启弹出登录界面并使用配置的凭据后端存储 |
request_max_retries |
请求失败最大重试次数 |
stream_idle_timeout_ms |
流式响应空闲超时(毫秒),超时判定连接丢失 |
stream_max_retries |
流式断连重连次数上限 |
websocket_connect_timeout_ms |
WebSocket 连接等待超时(毫秒) |
supports_websockets |
是否支持 Responses API WebSocket 传输 |
supports_standalone_web_search |
是否支持独立联网搜索端点 |
capabilities |
对内置 Provider 能力的可选覆盖;未指定的能力保留既有默认 |
auth |
通过命令获取 Bearer Token 的配置(命令、参数、工作目录、超时与令牌刷新间隔) |
aws |
AWS SigV4 认证配置 |
gateway_oauth |
Provider 网关所需的二级 OAuth 凭据 |
project_id / location |
内置 GCP Provider 的项目 ID 与 Google Cloud 位置(缺省
global,也可由环境变量推导) |
model_catalog_url |
可选的 Codex 原生模型目录完整 URL;未设置时 OpenAI 发现流程走 Codex
后端,base_url 可覆盖推理端点 |
示例骨架(密钥通过环境变量注入,占位值请按自身环境替换):
[model_providers."local-compat"]
name = "本地兼容端点"
base_url = "http://127.0.0.1:1234/v1"
env_key = "LOCAL_COMPAT_API_KEY"
wire_api = "responses"
requires_openai_auth = false
# 指定当前使用的 Provider(取消注释后生效)
# model_provider = "local-compat"
# model = "对应模型标识"Schema 保留
experimental_bearer_token字段用于直接写入 Bearer 令牌,但官方明确不鼓励使用,优先通过env_key或auth命令获取令牌。
8.3.3 本地开源模型
命令行 --oss
进入本地模型模式,--local-provider <lmstudio|ollama>
指定本地运行时;配置层对应 oss_provider = "ollama" 或
oss_provider = "lmstudio"。本地模型的可达地址、模型名与上下文窗口以所选用运行时的配置为准,CLI
不内置模型文件。
8.4 沙箱与审批配置
8.4.1 沙箱模式
sandbox_mode |
行为 |
|---|---|
read-only |
只读文件系统;命令不能改动工作区文件 |
workspace-write |
工作区范围内可写;.git、解析后的 gitdir 目标与
.codex 保持只读(macOS Seatbelt 口径,见
codex-core README) |
danger-full-access |
绕过沙箱完全访问;仅在外部已隔离环境中配合
--dangerously-bypass-approvals-and-sandbox 使用 |
sandbox_workspace_write 子字段:
| 字段 | 默认 | 说明 |
|---|---|---|
writable_roots |
[] |
除主工作区外额外允许写入的根目录列表 |
network_access |
false |
workspace-write 模式下是否允许网络访问 |
exclude_slash_tmp |
false |
排除 /tmp 可写根 |
exclude_tmpdir_env_var |
false |
排除 TMPDIR 指向目录的可写根 |
8.4.2 审批策略
approval_policy = "on-request":模型在判断需要人工确认时发起审批请求。approval_policy = "never":永不询问;执行失败立即返回模型,不再升级到人工审批。- granular 对象
[approval_policy.granular]字段:
| 字段 | 说明 |
|---|---|
sandbox_approval |
shell 命令审批请求(含 with_additional_permissions
内联与 require_escalated)是否放行;false
时对应请求自动拒绝而不弹出 |
mcp_elicitations |
是否允许 MCP 唤起提示 |
request_permissions |
是否允许 request_permissions
工具触发的权限请求提示 |
rules |
是否允许 execpolicy prompt 规则触发的提示 |
skill_approval |
技能脚本执行触发的审批是否放行 |
8.4.3
平台沙箱实现口径(取自 codex-core README)
- macOS:依赖
/usr/bin/sandbox-exec,使用 Seatbelt 配置文件;workspace-write策略在配置的可写根内开放写入,同时保持.git、gitdir 目标与.codex只读;网络与文件读写根由SandboxPolicy统一控制。 - Linux:优先使用 PATH 中当前目录之外找到的
bwrap;bwrap过旧不支持--argv0时走无--argv0兼容路径;缺失时回退到随 Codex 打包的codex-resources/bwrap,并通过常规通知路径给出启动警告;无法创建用户命名空间时同样给出启动警告。WSL2 走普通 Linux bubblewrap 路径;WSL1 不支持 bubblewrap 沙箱,因为无法创建所需用户命名空间,会在进入 bwrap 路径前拒绝对应沙箱命令。 - Windows:遗留
read-only、workspace-write策略等价于完整文件系统读访问;当前实现支持受限令牌后端与提权后端两种路径,精确可读 / 可写根由拆分文件系统策略表示;无法直接执行的策略会失败关闭(fail closed),而不是降级为弱强制。
8.5 MCP 服务配置
[mcp_servers.<名称>] 支持的主要字段(取自
RawMcpServerConfig Schema):
| 字段 | 说明 |
|---|---|
command |
stdio 型服务的启动命令;与 url 二选一必填 |
args |
命令参数数组 |
env |
启动服务时设置的环境变量键值对(仅 stdio 型有效) |
cwd |
服务启动工作目录 |
url |
streamable HTTP 型服务地址;与 command 二选一必填 |
http_headers |
HTTP 静态请求头 |
env_http_headers |
从环境变量取值的 HTTP 请求头 |
bearer_token_env_var |
读取 Bearer Token 的环境变量名(HTTP 型有效) |
auth |
服务认证配置 |
oauth / oauth_resource |
OAuth 配置与资源参数 |
enabled |
是否启用该服务 |
enabled_tools / disabled_tools |
工具白名单 / 黑名单 |
tools |
工具级配置(含审批模式等) |
required |
启动是否要求该服务在线 |
startup_readiness |
启动就绪策略:要求实时连接,或允许使用已缓存的工具目录 |
startup_timeout_ms /
startup_timeout_sec |
启动等待超时 |
tool_timeout_sec |
单个工具调用超时 |
supports_parallel_tool_calls |
是否支持并行工具调用 |
tool_input_schema_max_bytes |
普通 MCP 工具输入 Schema 压缩字节阈值(默认 5000) |
配置示例骨架(命令与参数仅为结构演示,使用时替换为实际服务):
[mcp_servers."example-stdio"]
command = "npx"
args = ["-y", "example-mcp-server"]
env = { "EXAMPLE_API_KEY" = "从环境变量注入,不要直接写密钥" }
enabled = true
[mcp_servers."example-http"]
url = "https://example-mcp.example.com/mcp"
bearer_token_env_var = "EXAMPLE_MCP_TOKEN"
enabled = true也可以不手工编辑文件,使用 codex mcp add 写入配置(见
9.3 节)。
8.6 TUI、历史、日志与其他模块
[tui]:交互界面专项配置,常用字段包括animations(动画总开关,默认true)、auto_recap(失焦自动摘要,默认true)、alternate_screen(auto/always/never)、notifications(桌面通知总开关,默认true)、notification_condition(unfocused/always)、notification_method(auto/osc9/bel)、theme(kebab-case 主题名,覆盖自动明暗判定)、vim_mode_default(默认进入 Vim Normal 模式,默认false)、mouse_scroll_speed、copy_on_select、right_click_paste、status_line/status_line_use_colors、terminal_title、effects(welcome/shimmer/spinner/starfield/progress/effort/title分项动画)、rendering(列表、表格、数学公式、Mermaid 富文本渲染开关)、presets(数字 0–9 保存的快捷输入)、keymap(按上下文重绑快捷键)等。[history]:persistence = "save-all"(默认,落盘全部条目)或"none"(不落盘);max_bytes为历史文件最大字节数,超出后淘汰最旧条目。- 日志:
RUST_LOG环境变量控制 Rust 日志级别;非交互codex exec默认RUST_LOG=error,消息内联打印,无需单独跟踪文件。显式设置log_dir后可查看纯文本 TUI 日志:
codex -c log_dir=./.codex-log
tail -F ./.codex-log/codex-tui.log[hooks]:支持SessionStart、SessionEnd、UserPromptSubmit、PreModelRequest、PostModelRequest、PreToolUse、PostToolUse、PreCompact、PostCompact、Interrupt、Stop、SubagentStart、SubagentStop、PermissionRequest等生命周期节点的命令数组;每个节点可挂多条命令;托管模式下可被企业配置整体覆盖。[skills]:按SKILL.md路径登记用户级技能条目,支持enabled、按名称或路径选择。[profiles]/[projects]:命名配置单元复用;projects按目录记录trust_level(trusted/untrusted)等项目级覆盖。[network]:代理、域名与 Unix Socket 放行规则、本地回环绑定、SOCKS5 与 MITM 钩子等网络策略;详细字段以 Schema 为准。[browser_use]/[computer_use]:浏览器工具与桌面操作工具的来源与应用访问策略,默认按内置安全口径收口。[otel]:OpenTelemetry 导出器类型、协议、TLS 与指标开关;关闭analytics.enabled不影响自定义 OTLP 导出器。
9 常用运维命令
以下命令按日常使用场景整理;子命令与参数以本机
codex --help、codex <子命令> --help
输出为准。
9.1 登录、登出、更新与自检
# 查看当前登录状态
codex login status
# 使用 API Key 登录(密钥从标准输入读入,避免出现在 shell 历史中)
printenv OPENAI_API_KEY | codex login --with-api-key
# 使用访问令牌登录(环境变量 CODEX_ACCESS_TOKEN)
printenv CODEX_ACCESS_TOKEN | codex login --with-access-token
# 无头 / 远程机器设备码登录
codex login --device-auth
# 登出并移除本机保存的凭据
codex logout
# 检查本机安装、配置、认证与运行时健康状态
codex doctor
# 更新到最新版本(安装渠道支持时)
codex update
# 生成 shell 补全脚本(默认 bash,可选 zsh / fish / powershell / elvish 等)
codex completion9.2 交互式启动与常用参数
# 进入当前目录的交互会话
codex
# 启动时直接附带提示词
codex "梳理这个仓库的模块结构并给出测试建议"
# 指定模型与权限模式启动
codex --model "<模型标识>" --sandbox workspace-write --ask-for-approval on-request
# 进入工作目录(短选项 -C)
codex --cd /path/to/project
# 额外可写目录(可重复)
codex --add-dir /path/to/other/dir
# 本地模型模式并指定本地提供方
codex --oss --local-provider ollama
# 本次会话启用实时联网搜索
codex --search
# 不启动共享后台服务器
codex --no-daemon
# 不使用交替屏幕模式,保留终端回滚历史
codex --no-alt-screen
# 命令行配置覆盖(可多次出现)
codex -c web_search="cached" -c tui.theme="dark"
# 临时使用命名 Profile
codex --profile work
# 在新的 Git worktree 中运行会话
codex --worktree常用共享参数(SharedCliOptions):--model/-m、--oss、--local-provider、--profile/-p、--sandbox/-s、--approve-for-me(别名
--not-so-yolo)、--dangerously-bypass-approvals-and-sandbox(别名
--yolo)、--dangerously-bypass-hook-trust、--cd/-C、--worktree、--add-dir、--image/-i(逗号分隔多张附图)。
9.3 MCP 服务管理
# 列出已配置的 MCP 服务
codex mcp list
codex mcp list --json
# 查看单个服务配置
codex mcp list > /dev/null && codex mcp get <名称>
codex mcp get <名称> --json
# 添加 stdio 型服务(-- 后为启动命令与参数)
codex mcp add <名称> --env KEY=VALUE -- <启动命令> [参数...]
# 添加 streamable HTTP 型服务
codex mcp add <名称> --url https://example-mcp.example.com/mcp \
--bearer-token-env-var EXAMPLE_MCP_TOKEN
# OAuth 登录 / 登出指定 MCP 服务
codex mcp login <名称>
codex mcp login <名称> --no-browser --scopes "scope-a,scope-b"
codex mcp logout <名称>
# 移除服务配置
codex mcp remove <名称>HTTP 型服务可选 OAuth
参数:--oauth-client-id、--oauth-client-secret、--oauth-client-registration AUTO|CIMD|DCR、--oauth-resource;添加命令的参数细节以
codex mcp add --help 为准。
9.4 插件、特性开关与会话管理
# 插件列表 / 添加 / 移除 / 市场管理
codex plugin list
codex plugin add <插件标识>
codex plugin remove <插件标识>
codex plugin marketplace
# 列出全部特性开关及其阶段与启用状态
codex features list
# 启用 / 关闭指定特性
codex features enable <feature-key>
codex features disable <feature-key>
# 恢复历史会话(选择器默认;--last 继续最近一次;--all 显示全部目录下会话)
codex resume
codex resume --last
codex resume --all
# 分叉历史会话
codex fork
codex fork --last
# 归档 / 取消归档 / 永久删除会话
codex archive <会话ID或名称>
codex unarchive <会话ID或名称>
codex delete <会话ID或名称>
codex delete --force <UUID>
# 向已有会话追加消息
codex queue <会话ID或名称> "<消息>"
# 打开共享后台服务器上的 Agent 任务总览
codex agents9.5 非交互执行、审阅与诊断
# 非交互方式执行任务(提示词缺省时从 stdin 读取)
codex exec "修复 README 中的拼写错误"
# 事件以 JSONL 输出,最后一条 Agent 消息写入指定文件
codex exec --json --output-last-message ./last-message.md "总结当前仓库变更"
# 不持久化会话文件;跳过 Git 仓库检查;忽略用户配置与规则文件
codex exec --ephemeral --skip-git-repo-check --ignore-user-config --ignore-rules "任务描述"
# 审阅未提交改动(暂存 + 未暂存 + 未跟踪)
codex review --uncommitted
# 对比指定基线分支审阅
codex review --base main
# 审阅单个 commit(可附带审阅标题与自定义指令)
codex review --commit <SHA> --commit-title "提交标题" "重点检查错误处理与边界条件"
# 调试:导出当前模型目录 JSON
codex debug models
codex debug models --bundled
# 调试:查看发送给模型的上下文输入结构
codex debug prompt-input
# 查看后台终端任务与停止
# (TUI 内)/ps 列出后台终端;/stop 停止全部后台终端9.6 备份与恢复建议
| 备份对象 | 路径 | 说明 |
|---|---|---|
| 用户配置 | $CODEX_HOME/config.toml |
含模型、Provider、沙箱、MCP、TUI 等设置 |
| 认证凭据 | $CODEX_HOME/auth.json(file 后端) |
换机迁移需重新登录;不要把凭据纳入版本库 |
| MCP OAuth 凭据 | $CODEX_HOME/.credentials.json(file 后端) |
换机后在 MCP 服务上重新登录 |
| 主题 / 宠物 / 技能 | $CODEX_HOME/themes、$CODEX_HOME/pets、技能目录 |
自定义外观与技能定义 |
| 会话与历史 | SQLite 状态库与 history.jsonl |
按需归档;删除旧会话前先用 codex archive 留档 |
| 项目指令 | 仓库内 AGENTS.md 与 .codex/ |
随代码仓库一并版本管理 |
# 仅备份配置与外观(不含凭据与会话库)的示例打包命令
tar -czf codex-config-backup.tar.gz \
-C ~/.codex config.toml themes/ pets/ 2>/dev/null || true10 常见故障排查
以下问题按官方文档、Schema 说明、codex-core README
平台口径与 Issue 高频场景整理;排查时先用 codex doctor
收集安装、配置、认证与运行时信息,再按小节逐项定位。
10.1 登录回调在无头服务器 / SSH 环境打不开浏览器
- 现象:
codex或codex login启动后提示本地登录服务器地址,浏览器无法在远程机器上打开,授权流程卡住。 - 处理:改用设备码登录:
codex login --device-auth;按终端提示在任意可访问浏览器中完成授权。仍失败时检查本机能否访问 ChatGPT 登录域与回调端口,必要时通过codex login status确认旧凭据状态后codex logout重新登录。
10.2 API Key 登录失败或提示密钥无效
- 处理:确认通过
--with-api-key从标准输入传入密钥(参考命令见 9.1 节),不要使用已废弃的--api-key直接内联传参;检查对应 Provider 的env_key环境变量是否在当前 shell 生效;切换自定义 Provider 时核对base_url、wire_api与后端兼容协议;错误信息中不要附上完整密钥,排查时仅保留脱敏片段。
10.3 Linux 沙箱警告:bwrap 缺失、版本过旧或无法创建用户命名空间
- 现象:启动或命令执行时提示 bubblewrap 不可用、过旧或无法创建用户命名空间;命令被沙箱路径拒绝。
- 口径(
codex-coreREADME):helper 优先使用当前目录之外 PATH 中的bwrap;过旧不支持--argv0时走兼容路径;缺失时回退打包的codex-resources/bwrap并给出启动警告;无法创建用户命名空间同样产生警告。 - 处理:确认系统已安装
bubblewrap且版本支持所需参数;容器化或受限内核环境中用户命名空间可能被禁用,此时应在外部隔离环境中运行,并明确理解danger-full-access模式的风险;WSL1 不支持 bubblewrap 沙箱,需切换到 WSL2 或按官方文档口径选择可用模式。
10.4 只读 / 工作区模式下命令写文件或联网被拒绝
- 原因:
read-only不允许写入;workspace-write默认network_access = false,且.git、.codex等目录保持只读。 - 处理:确有跨目录写入需求时用
--add-dir追加可写根,或在sandbox_workspace_write.writable_roots中声明;需要联网时设置sandbox_workspace_write.network_access = true;不要在常规项目中直接切到danger-full-access解决局部权限问题。
10.5 配置字段不被识别或启动时报配置解析错误
- 处理:加
--strict-config启动,让不识别字段直接报错并定位拼写错误;核对字段层级与 TOML 语法,数组与表内字符串按 Schema 类型书写;使用-c key=value覆盖时右侧值先按 TOML 解析,纯字符串需要加引号;多个 Profile 叠加时用/debug-config(TUI 内)或对应调试命令查看各配置层来源。
10.6 MCP 服务启动失败、工具不出现或超时
- 现象:
codex mcp list中服务标记未就绪;TUI 工具面板看不到该服务工具;启动阶段卡住直到超时。 - 处理:核对
command/args/cwd/env是否在当前 shell 可执行;HTTP 服务核对url、bearer_token_env_var与 OAuth 状态;调整startup_timeout_ms/startup_timeout_sec;把required设为非必填可避免单服务拖慢启动;startup_readiness允许使用已缓存工具目录;查看log_dir下纯文本日志中该服务的连接错误。
10.7 模型不可用、上下文超限或回复被压缩
- 处理:先用
codex debug models核对当前模型目录与可选模型;上下文接近阈值时执行/compact或调整model_auto_compact_token_limit;自定义 Provider 检查model_context_window、流式超时与重试配置;切换model_reasoning_effort、model_reasoning_summary与model_verbosity档位观察是否为后端不支持的组合。
10.8 后台会话 / 任务状态异常或界面行为错乱
- 处理:先用
codex --no-daemon启动绕开共享后台服务器,确认是否由守护进程状态引起;通过codex daemon相关命令查看与重启后台服务(命令集以codex app-server --help/ 文档为准);异常会话用codex archive归档后新建会话;codex doctor检查安装完整性;删除旧状态库前先备份$CODEX_HOME。
10.9 非交互模式退出码、输出格式与 CI 集成问题
- 处理:CI 中固定使用
codex exec --json解析事件流,用--output-last-message提取最终消息;按进程退出状态(codex-exec退出码定义见codex-execcrate)判断成功 / 失败 / 被拒绝;--ignore-rules、--ignore-user-config、--ephemeral仅在受控流水线中使用;不要在无人值守流水线中开启--dangerously-bypass-approvals-and-sandbox。
10.10 升级后命令找不到、版本不一致或安装渠道冲突
- 现象:终端
codex --version与预期版本不符;which codex指向脚本安装器、npm 或 Homebrew 的混合路径。 - 处理:确认当前使用的安装渠道(6.1–6.5
节),卸载其他渠道残留;脚本安装器与 Homebrew
可分别用对应包管理命令移除;npm 渠道用
npm uninstall -g @openai/codex;Releases 二进制删除PATH中的旧文件后替换新归档;codex update仅对支持该机制的安装包生效,npm / Homebrew 渠道请回到对应渠道升级。
10.11 日志获取与敏感信息脱敏
- 常规排障:
codex doctor;详细运行日志:设置log_dir后查看codex-tui.log,并用RUST_LOG=debug调整 Rust 日志级别;非交互模式消息内联打印,无需单独跟踪文件。 - 向 Issue 提交日志前,按
docs/contributing.md要求移除认证令牌、API Key、内网地址与未公开代码片段;官方安全漏洞请走SECURITY.md中的 Bugcrowd 渠道,不要在公开 Issue 中披露。
11 风险与合规说明
以下条款整理自仓库
LICENSE、README、docs/contributing.md、SECURITY.md、docs/open-source-fund.md、配置 Schema 与通用合规口径;如与官方原文不一致,以仓库LICENSE、README 与 Codex Documentation 最新版本为准。
11.1 开源协议(Apache-2.0)
Codex CLI 源码采用 Apache License
2.0(LICENSE 文件,Copyright ©
OpenAI)。Apache-2.0
允许自由使用、修改与再分发,修改后再分发需保留版权声明、许可证副本与显著的修改说明;协议内含专利授权条款,不要求衍生作品强制开源(与
AGPL 等 copyleft
协议不同)。仓库中打包或引用的第三方组件各自遵循其原始许可证,二次集成前应逐项核对。
11.2 账号套餐、API 计费与服务条款
- ChatGPT 账号登录后可使用的 Codex 额度、模型范围与速率限制由所选套餐(Plus、Pro、Business、Edu、Enterprise 等)与 OpenAI 服务条款决定;本文不代表官方承诺具体额度、模型清单或可用性。
- API Key 模式下的调用量按 OpenAI 平台计费规则结算;自定义 Provider 的计费与额度由对应服务提供方规定。
- 官方
docs/contributing.md明确不接收外部代码 Pull Request;社区规则反馈与功能建议通过 Issue 渠道提交,使用者应同时遵守 Contributor Covenant 行为准则。
11.3 代码与数据隐私
- 使用 OpenAI 云端模型后端时,提示词、读取到的代码文件、命令输出与 MCP 工具结果会随 API 请求发送到对应模型后端;在公开代码仓库、私有项目、商业代码与未发布素材上使用前,应确认所在组织的代码外发政策与合规要求。
- 切换到本地或自托管 Provider
后,数据流以该运行时与网络策略为准;
[network]、browser_use、computer_use、MCP 工具仍可能把本机信息发送到外部服务,按需在配置中关闭未使用的工具。 - 认证凭据默认存放在
$CODEX_HOME/auth.json与$CODEX_HOME/.credentials.json;更安全的后端为系统 keyring(cli_auth_credentials_store = "keyring"、mcp_oauth_credentials_store = "keyring");不要把凭据提交到 Git 仓库、截图、公开文档或聊天记录。
11.4 命令执行与沙箱安全
- Agent 可以提议并执行 shell 命令、写入工作区文件;即使在
workspace-write模式下,也应养成审阅补丁差异与审批弹窗后再确认的习惯。approval_policy = "never"与danger-full-access会显著降低安全水位,仅应在容器、虚拟机或其他外部已隔离环境中短期使用。 --dangerously-bypass-hook-trust跳过 Hook 来源持久化信任校验,仅用于已经人工审核过 Hook 来源的自动化场景;自定义 Hooks 与技能脚本等价于在本机执行第三方代码,安装前应阅读其内容与更新状态。- 项目目录信任级别(
trusted/untrusted)影响默认套用的审批与沙箱策略;克隆陌生仓库后先以read-only模式进入会话,审阅后再放宽权限。 - 历史会话、补丁记录与日志可能包含敏感代码与环境信息;备份、归档与分享前先脱敏,公开发布前清理
$CODEX_HOME中不需要的本地记录。
11.5 MCP、插件与供应链风险
- MCP
服务与插件可以访问本机文件、执行命令与发起网络请求;
codex mcp add、codex plugin add的来源应限定为可信市场与明确维护的项目,安装后定期更新并在不用时移除。 - HTTP 型 MCP 服务的 OAuth
凭据按所选后端存储;跨服务复用密钥、错误配置
env_http_headers与bearer_token_env_var可能导致令牌泄露,配置后用codex mcp get <名称> --json复核字段是否指向正确环境变量。 - 第三方 Docker 镜像、打包脚本与安装器不属于官方分发渠道;本文未提供官方 Compose 文件,遇到声称 “Codex 官方镜像” 的第三方产物应核验签名、发布者与更新记录后再决定是否使用。
11.6 生成内容、代码版权与免责声明
- Agent 生成或修改的代码、注释、提交信息与文档建议需要人工复核:可能存在实现错误、安全漏洞、许可证冲突或引用不当;合入主干前应走项目自身的代码审阅、测试与 CI 流程。
- 模型训练数据与输出的版权归属因司法辖区与后端服务条款而异;CLI 不保证生成内容可注册版权、不保证原创性,也不替代法务审查。
- 安全漏洞应按
SECURITY.md指向的 Bugcrowd 项目负责任披露,不要在公开 Issue 中上传账号凭据、模型 Token、未公开代码或敏感配置。
项目按现状(AS-IS)提供,官方不保证在特定操作系统、终端、模型组合与网络环境下持续可用,不保证命令执行结果正确、合规或无侵权风险;使用者自行承担代码改动质量、模型服务条款、数据外发、内容版权与业务损失风险。