<!-- title: Codex免API：白嫖订阅八个闸门 -->
<!-- domain: tips-tricks -->

## 导语

如果你还在为 OpenAI API key 充值、再拿它喂编码工具，那你可能白花钱了。OpenAI 自家的开源终端编码 agent **Codex CLI**（Apache-2.0 协议，仓库 `github.com/openai/codex`）有一个被国内开发者普遍忽略的入口：直接用你的 **ChatGPT Plus / Pro / Business / Edu / Enterprise 订阅**登录，跑代码、改仓库、跑命令，全部走订阅额度，**完全不需要单独的 API key，也不走 API 计费**。装上 `codex` → 选 **Sign in with ChatGPT** 就行。

但问题来了——绝大多数人装完只会敲一句 `codex "帮我改个 bug"`，连它三层安全闸门、PR 自审、云端 best-of-N 这些核心能力都没摸到。这轮情报我挖了 Codex CLI 的 **8 个隐藏开关**，每个都能直接抄、立刻省事省钱，而且国内基本没人系统讲过。

---

## 开关一：别买 API 了，用 ChatGPT 订阅登录（价格差）

这是最大的信息差。很多人以为 Codex CLI 必须配 API key，于是充了值才发现额度飞快。

**操作步骤**：

```shell
# macOS / Linux 一键安装
curl -fsSL https://chatgpt.com/codex/install.sh | sh
# 或：npm install -g @openai/codex / brew install --cask codex

codex          # 启动后选 "Sign in with ChatGPT"
```

- **预期效果**：直接吃你的 ChatGPT 订阅额度（Plus / Pro / Business / Edu / Enterprise 均可），不产生 API 账单。
- **适用场景**：个人开发者、学生、没有公司 API 预算的小团队。
- **国内注意**：需要能正常访问 ChatGPT 的网络环境；订阅账号本身已是付费，等于把"聊天额度"复用为"写代码额度"。

> 真正需要 API 计费的只有一种情况：大批量非交互跑批（见开关七的 `cloud exec`），那时切 API key 才更划算。

---

## 开关二：三层安全闸门，大多数人只开了一层（认知差）

你印象里"Codex 会问我要不要执行"——那只是最外层。它其实是**沙箱**和**审批**两个独立维度叠加，组合出完全不同的安全姿态。

**沙箱模式（`sandbox_mode`）** 决定它能碰什么：

| 取值 | 行为 |
|------|------|
| `read-only` | 只读探查，不改文件、不跑命令，等你批 plan（咨询模式） |
| `workspace-write`（默认） | 工作目录内自由读写+跑命令；碰目录外或联网才停下来问 |
| `danger-full-access` | 全机器 + 网络放开，不问。**仅在你信任仓库和任务时慎用** |

**审批策略（`approval_policy`）** 决定何时停：

| 取值 | 行为 |
|------|------|
| `untrusted` | 几乎每步都问 |
| `on-failure` | 失败才问 |
| `on-request`（默认） | 按需问 |
| `never` | 不问（配合沙箱才有意义） |
| `granular` | 见开关三，按类别细控 |

**怎么用**：陌生仓库先用 `read-only` 探一遍（让它先看懂代码、产出 plan，一个字都不改）；确认方向对了，再升到 `workspace-write` 让它动手。两种模式都能在交互会话里随时切换，不必退出重启。

```mermaid
flowchart TD
    A[收到任务] --> B{信任这个仓库吗?}
    B -- 陌生/不信任 --> R[read-only 探查<br/>只读 + 出 plan]
    R --> C{plan 看着靠谱?}
    C -- 否 --> A
    C -- 是 --> W[workspace-write 执行<br/>目录内自由动手]
    W --> D{需要联网/跨目录?}
    D -- 是 --> P[弹出审批确认]
    D -- 否 --> E[自动完成]
    P -->|批准| E
    B -- 高度信任 + 离线脚本 --> F[danger-full-access<br/>不问, 谨慎]
    F --> E
    style R fill:#e8f4ff,stroke:#1f6feb
    style W fill:#fff4e8,stroke:#d97706
    style F fill:#ffe8e8,stroke:#dc2626
```

---

## 开关三：granular 审批——只放行你要的那一类 prompt

默认审批是"一刀切问/不问"。但 Codex 支持把不同类别的审批**各自独立开关**，写进 `~/.codex/config.toml`：

```toml
approval_policy = { granular = {
  sandbox_approval    = true,   # 沙箱升级请求允许弹出
  rules               = true,   # execpolicy 规则命中的命令允许弹出
  mcp_elicitations    = false,  # MCP elicitation 直接拦掉
  request_permissions = false,
  skill_approval      = false   # skill 脚本执行要问
} }
```

- **效果**：比如你想让"规则命中的命令"自动走、但 MCP 工具向你确认——`granular` 就是干这个的。
- **场景**：重度接了 MCP server、又想保留人工闸门的进阶玩家。

---

## 开关四：execpolicy 规则 + 内联单元测试（最隐蔽的安全特性）

这是整篇里 99% 国内用户没听过的功能。你可以在配置层旁的 `.codex/rules/` 目录里写**命令规则**，精确控制哪些命令能在沙箱外跑：

```toml
# 每次跑 `gh pr view` 前先问我
[[rules]]
pattern    = ["gh", "pr", "view"]
action     = "prompt"
justification = "查看 PR 需要批准"

# 这些是"内联单元测试"，加载时校验规则是否真的命中
match    = ["gh pr view 7888", "gh pr view --repo openai/codex"]
not_match = ["gh pr --repo openai/codex view 7888"]   # pattern 必须是精确前缀
```

三个关键点让它比一般 allowlist 强：

1. **action 三档**：`allow`（直接跑）/ `prompt`（每条问）/ `block`（直接拒）。多条规则命中时取**最严格**那条。
2. **match / not_match 是单元测试**：规则一写错（比如正则没对上），加载阶段就报错，不用等真出事才发现。
3. **tree-sitter 拆分复合命令**：这是最狠的一点。如果 Codex 想跑 `bash -lc "git add . && rm -rf /"`，它不会把整串当成一条放行，而是用 tree-sitter 解析成两条命令分别评估，**最严格结果胜出**——`git add` 放行也没用，`rm -rf /` 那条会把它整体拦下来。等于堵死了"用安全命令走私危险命令"这条路。

- **效果**：把 `npm test`、`make`、`pytest` 这类只读无害的命令 `allow` 掉，省掉大量无聊确认，同时危险命令一条都漏不掉。
- **场景**：CI 无人值守、对 Agent 执行权限高度敏感的生产仓库。

---

## 开关五：/review 子命令——开 PR 前零成本自审

很多人不知道 Codex 自带一个**只读 code reviewer**。它读你的 diff、按优先级给可执行的修改建议，**全程不碰工作树**。

**四种触发方式**：

- **本地分支**：自动找 upstream 的 merge base，diff 你这边的活，开 PR 前先把最大风险点揪出来。
- **暂存区**：把 staged / unstaged / untracked 全扫一遍，commit 前自查。
- **某个 commit**：列最近 commit，挑一个 SHA 让它读精确变更集。
- **自定义措辞**：直接给指令，比如 "Focus on accessibility regressions"（盯无障碍回归），同一个 reviewer 引擎跑。

每次 `/review` 在 transcript 里都是独立一 turn——代码演进后你可以**重跑对比**，看建议有没有变化。

- **效果**：相当于配了个不睡的同事帮你过 diff，提 PR 前自查一遍，省掉来回 review 的回合。
- **场景**：独立开发者没人帮你 review、团队想卡 PR 质量门禁。

---

## 开关六：subagent 并行——大任务拆分，但要算清 token 账

Codex 支持 **subagent workflow** 把大任务拆给多个子 agent 并行干。但有个反常识的设定：**它只有在你明确要求时才 spawn**（比如直接说"用 subagent 并行处理这几个模块"），不会自作主张。

**权衡要点**：每个 subagent 各自独立调用模型和工具，token 消耗明显高于单 agent 跑同样的事。

- **适合**：大规模重构、多模块并行迁移、长任务。
- **不适合**：小修小补——并行开销比串行还贵。
- **怎么判断**：任务能干净切成互不干扰的几块、每块都够"重"（值得独立的上下文）才上 subagent；否则老实单 agent。

---

## 开关七：把 Codex 当 CI 工人——exec / resume / cloud exec 三件套

这是把它从"聊天工具"升级为"自动化工人"的三个命令：

**1. `codex exec` —— 非交互，可接脚本**

```shell
codex exec "fix the CI failure"        # 跑完把最终 plan + 结果 pipe 回 stdout
```

最终输出能被 shell 接走，常见玩法：自动更新 changelog、给 issue 排序、PR 合并前跑编辑检查。

**2. `codex resume` —— 续传，不丢上下文**

```shell
codex resume                  # 弹出最近会话选择器（可看摘要）
codex resume --last           # 直接跳到当前目录最近那次
codex resume <SESSION_ID>     # 指定某次
codex resume --cd ../backend  # 续传时换个工作目录
```

续传保留原 transcript、plan history 和审批记录，你可以接着给新指令。本地会话存在 `~/.codex` 下，断点续跑不用重喂上下文。

**3. `codex cloud exec` —— 云端 best-of-N**

```shell
codex cloud exec --env ENV_ID --attempts 3 "Summarize open bugs"
```

`--attempts 1–4` 让云端生成多条解；提交失败会**非零退出**，正好能塞进 CI/脚本判定成败。环境 ID 来自你的 Codex cloud 配置。注意：这一档走的是云端，**才适合切到 API key 计价**（见开关一）。

```mermaid
sequenceDiagram
    participant U as 你/CI
    participant L as 本地 Codex
    participant C as Codex Cloud
    U->>L: codex exec "fix CI"
    L-->>U: plan + 结果(stdout, 可接管道)
    U->>L: codex resume --last
    L-->>U: 恢复 transcript, 等新指令
    U->>C: codex cloud exec --attempts 3 "..."
    C-->>C: 并行生成 3 条解
    C-->>U: 返回最优 / 失败非零退出
    Note over U,C: 失败非零退出 → 直接接 CI 判定成败
```

---

## 开关八：省额度 + 省手指的隐藏配置与交互

最后这一组是"用了就回不去"的小开关：

- **图片生成是个额度刺客**：Codex 内置图片生成（出图标、banner、占位图），但它**平均比普通一轮快 3–5 倍消耗订阅额度**。偶尔出一张没事，**批量出图**时务必设环境变量让它改走 API 计价，否则订阅额度秒空。
- **环境变量默认会脱敏**：`shell_environment_policy` 默认过滤掉名字里含 `KEY`/`SECRET`/`TOKEN` 的环境变量，防止泄给模型。**但调试时**如果你的脚本就靠这些变量（比如要读 `DATABASE_TOKEN`），会被悄悄滤掉导致 Agent 看不到——这时开 `ignore_default_excludes` 把它们保留下来。
- **推理强度可调**：`model_reasoning_effort` 调模型推理强度，难任务拉高、简单活压低省额度。
- **联网搜索三档**：`web_search = "cached" | "live" | "disabled"`，默认 cached；要最新结果设 `live`，完全不联网设 `disabled`。
- **装 shell 补全**：`codex completion zsh` 再把 `eval "$(codex completion zsh)"` / `autoload -Uz compinit && compinit` 写进 rc 文件，命令补全+省敲键。
- **TUI 隐藏交互**（实测好用的几条）：会话里 `/model` 随时切模型；`/clear` 清屏、`/status` 看状态、`/mcp` 管 MCP server；**Codex 运行中**可以把下一条输入（普通 prompt、斜杠命令、shell 命令都行）**排队**给下一轮；composer 里 **上下箭头**翻草稿历史；写长 prompt 可以**调出 `$EDITOR`** 在编辑器里写完再发回 composer；模糊文件搜索能把工作区路径直接塞进你的消息。

---

## 信息差总结：你知道的 vs 别人不知道的

| 维度 | 大多数人以为 | 实际（信息差） |
|------|------------|--------------|
| 计费 | 必须买 API key | ChatGPT 订阅登录直接吃额度，0 额外 API 费 |
| 安全 | 会问要不要执行 | sandbox_mode × approval_policy 两层独立叠加 |
| 细控 | 一刀切问/不问 | `granular` 按类别（rules/mcp/skill…）各自开关 |
| 规则 | 不知道有 | `.codex/rules/` + 内联单元测试 + tree-sitter 防走私 |
| 自审 | 手动让 AI 看 | `/review` 四模式只读 reviewer，可重跑对比 |
| 并行 | 不会自动拆 | subagent 显式触发，但更费 token |
| 自动化 | 只能聊天 | exec / resume / cloud exec 三件套可接 CI |
| 额度 | 不知道哪里烧的 | 图片生成吃 3–5x 额度；环境变量默认脱敏会坑调试 |

---

## 行动指南（接下来你可以做什么）

1. **今天就省钱**：`curl -fsSL https://chatgpt.com/codex/install.sh | sh`，`codex` 选 Sign in with ChatGPT，把充值的 API 留给真正需要计费追踪的批量任务。
2. **建一道安全网**：在 `~/.codex/config.toml` 配 `sandbox_mode = "workspace-write"`，再在 `.codex/rules/` 加一条把 `npm test` / `pytest` 设成 `allow`、把 `rm` 设成 `block` 的规则，用 match 单测校验。
3. **卡 PR 质量门**：下次提 PR 前先跑一次 `/review` 按本地分支自查，把"无障碍回归""并发安全"这类自定义措辞存成常用 prompt。
4. **接进 CI**：挑一个稳定任务（如"总结未关闭 bug"）用 `codex cloud exec --attempts 3` 跑通，非零退出接 CI 判定。
5. **避坑**：批量出图前设环境变量走 API 计价；调试需要密钥环境变量时再开 `ignore_default_excludes`。

---

## 参考来源

- Codex CLI 官方仓库（README、安装、登录）：https://github.com/openai/codex
- Codex CLI 功能总览（沙箱/审批/review/subagent/cloud exec）：https://developers.openai.com/codex/cli/features
- 完整 config.toml 配置参考（granular/writable_roots/reasoning/web_search）：https://developers.openai.com/codex/config-reference
- 执行策略与规则（execpolicy、tree-sitter 拆分、内联单测）：https://developers.openai.com/codex/exec-policy
- 斜杠命令目录（/model /review /clear /status /mcp 等）：https://developers.openai.com/codex/cli/slash-commands

---
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护。
> 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
