Codex 斜杠命令(三):权限与安全——精确控制 Codex 能做什么

系列目录

  1. (一)快速入门——最常用的基础命令
  2. (二)对话管理——让你的会话有条不紊
  3. (三)权限与安全——精确控制 Codex 能做什么(本文)
  4. (四)代码审查——提 PR 前的最后一道防线
  5. (五)模型与推理——为任务选择合适的大脑
  6. (六)并行工作与后台——让 Codex 同时处理多个任务
  7. (七)个性化与配置——打造你的专属 Codex
  8. (八)生态集成:插件、技能与 MCP

延伸阅读 · 插件商店完全指南 · Codex vs Claude Code 对比 · 2026 高级模式对比


# 权限与安全 ## 审批策略 - /permissions 切换审批模式 - Auto 自动执行安全操作 - Read Only 仅阅读不修改 - Accept Edits 手动接受每次编辑 ## 权限预设 - workspace-write 默认安全模式 - danger-full-access 完全放开 - 自定义 profiles ## 沙箱细节 - 工作区边界 - 网络访问控制 - /sandbox-add-read-dir (Windows) ## 调试与审计 - /debug-config 配置层级诊断 - /approve 重试被拒绝的操作 ## 安全最佳实践 - 最小权限原则 - .codex/config.toml 项目级配置

为什么权限控制是 Codex 的核心竞争力

AI 编程工具最大的信任问题不是"它会不会写错代码",而是"它会不会在我不知情的情况下删文件、改配置、访问不该访问的网络"。Codex 的权限系统给出了一个分层、可审计的答案:沙箱模式决定 Codex 技术上能做什么,审批策略决定它做之前要不要问你。理解这两个维度,你就能在安全与效率之间找到自己的平衡点。

沙箱是 Codex 在本地执行命令时的隔离边界。它限定 Codex 能读哪些文件、能在哪些目录写、能不能访问网络——这些都由沙箱模式决定。审批策略则控制 Codex 执行操作前是否需要你的确认,从"完全自动"到"每次询问"都有对应的预设。


命令速查表

命令 参数 说明
/permissions 打开审批策略选择菜单
/approve 重试一次被自动审查拒绝的操作
/sandbox-add-read-dir 目录路径 (Windows) 授予沙箱额外的读权限
/debug-config 诊断配置层级和策略要求

/permissions —— 精确控制审批粒度

/permissions

/permissions 打开一个策略选择菜单,你可以根据当前任务的信任级别实时切换:

  • Auto:Codex 在 workspace 内自动读/写/执行命令,离开 workspace 或使用网络时请求确认。这是日常开发的推荐模式。
  • Read Only:Codex 只能读文件,不能修改任何内容。适合查看代码、讨论方案、或让 Codex 解释现有逻辑时使用。
  • Accept Edits:Codex 可以提议修改,但每次编辑都需要你手动接受。适合对代码库不熟悉或修改高风险模块时使用。
  • Full Access:解除所有限制(等同于 danger-full-access 沙箱 + 免审批)。仅在完全受控的临时环境中使用。

切换到 Read Only 后,Codex 依然可以读取和分析代码,但任何写入操作都会被拦截——这是审查陌生代码库时的安全起点。

实际场景:第一次用 Codex 打开一个陌生仓库,先用 Read Only 模式让它熟悉项目结构、解释关键模块。确认它理解正确后,再切换到 Auto 开始动手修改。


沙箱模式的技术细节

Codex 的沙箱不是容器,而是一个基于操作系统原语的权限边界。它通过限制文件系统和网络访问来实现隔离。

沙箱的核心概念是 workspace(工作区)——通常是当前目录和临时目录如 /tmp。用 /status 可以看到当前工作区的可写根目录列表。

默认配置(workspace-write 沙箱)下:

  • Codex 可以在工作区内自由读写和执行命令
  • 离开工作区写文件需要审批
  • 命令的网络访问默认受限

如果你需要 Codex 操作工作区外的文件(如全局配置文件),有两种方式:

  1. 用 /permissions 切换到更宽松的模式
  2. 在 config.toml 中配置额外的读写目录

/approve —— 当你不同意自动审查的判决

/approve

Codex 内置的自动审查机制会拒绝某些高风险操作。当你审查后认为这个操作是安全的,用 /approve 给它一次重试机会。

实际场景:Codex 想要修改 ~/.gitconfig 来设置项目级配置,自动审查拒绝了。你确认这个修改是必要且安全的,运行 /approve,Codex 重试该操作。

注意:/approve 只对最近一次被拒绝的操作生效,且只重试一次。如果再次被拒,你需要调整权限策略或手动执行。


/debug-config —— 当行为不符合预期时

/debug-config

/debug-config 打印当前会话的完整配置诊断信息,包括:

  • 各层级配置文件的加载顺序和内容(全局 ~/.codex/config.toml -> 项目 .codex/config.toml -> profile)
  • 生效的权限策略
  • 实验性功能的开关状态
  • 网络约束和沙箱参数

实际场景:你在项目级 config.toml 中设置了某个选项,但 Codex 似乎没有遵守。/debug-config 可以帮你快速定位是配置键写错了、被上层覆盖了,还是有其他策略在起作用。


安全最佳实践

最小权限起步:接到一个新任务时,从 Read Only 开始。让 Codex 先读代码、出方案,确认方案可行后再放宽权限。这比一开始就 Full Access 然后出了问题再收紧要安全得多。

项目级配置:把稳定的权限策略写在 .codex/config.toml 中,随仓库共享给团队。一个典型的项目级配置:

[permissions]
default = "workspace-write"
ask_before = ["network", "outside-workspace"]

[features]
goals = true

审查关键操作:即使使用 Auto 模式,也要留意 Codex 请求的审批弹窗。审批弹窗不是你工作的打扰——它是 Codex 在告诉你"我要做一件可能影响系统的事情,你确认一下"。


实操清单

  • 打开一个陌生仓库,用 /permissions 菜单将审批策略切换到 Read Only
  • 在 Read Only 模式下让 Codex 读取代码并解释关键模块,确认理解正确
  • 确认无误后,再次用 /permissions 切换到 Auto 模式,开始让 Codex 动手修改
  • 触发一次工作区外写入(如让 Codex 修改 ~/.gitconfig),观察审批弹窗弹出
  • 确认操作安全后运行 /approve,让 Codex 重试刚才被拒绝的操作
  • 在项目根目录创建 .codex/config.toml,写入 [permissions] 配置(default = "workspace-write"ask_before = ["network", "outside-workspace"]
  • 修改配置后运行 /debug-config,确认项目级配置已被正确加载且覆盖了全局设置
  • 如果 /debug-config 显示某项配置未生效,逐层检查全局与项目 config.toml 的键名拼写
  • 在 Windows 环境下,若 Codex 需要读取工作区外目录,使用 /sandbox-add-read-dir <目录路径> 授予额外读权限
  • 体验 Accept Edits 模式:切换后让 Codex 修改一个文件,逐条手动接受或拒绝每处编辑