发布日期:2026-08-24 | 话题:Codex 桌面端 / 完全访问 / 审批弹窗 / 权限配置

Codex 桌面端(OpenAI,2026 年)的权限体系由沙箱(sandbox_mode)和审批策略(approval_policy)两个完全独立的控制维度构成,选择"完全访问(Full Access)"只把沙箱旋钮拧到了 danger-full-access,不会自动关掉 on-request 审批策略,这是绝大多数用户卡住的根本原因。在此之上还有四种额外触发场景:MCP/App 工具的破坏性注解审批是硬编码无法绕过、Auto-review 状态 UI 被误认为拦截弹窗、会话重连后运行时权限状态与 UI 显示不同步(已知 bug,Issue #29054)、以及新旧权限配置体系混用引发静默冲突。本文逐一拆解这五类原因,给出桌面端 UI 操作路径(两步解锁)、config.toml 永久配置方案和 --yolo 命令行一步到位三种完整解法,并说明为什么官方建议用 auto-review 替代完全关闭审批。


在这里插入图片描述

先给一句话答案

“完全访问”(danger-full-access)解决的是"能不能动",弹窗由"要不要问"(approval_policy)独立控制。两个旋钮必须同时拧,才能真正消灭弹窗。


沙箱与审批:两个完全独立的维度

官方文档的原话是:

“sandbox_mode sets what the agent can technically do… and approval_policy sets when it must stop and ask you.”

两者关系如下:

维度 控制的事 配置键 桌面端入口
沙箱(sandbox) 文件系统边界、网络访问权 sandbox_mode 权限菜单的沙箱档位
审批(approval) 何时暂停等待用户确认 approval_policy “替我审批”/"完全访问"旁的独立开关

沙箱三档

沙箱模式 文件系统 网络 典型场景
read-only 只读,不可编辑 关闭 审查不可信代码库
workspace-write(默认) 工作区内可写 默认关闭 日常开发
danger-full-access 无限制 无限制 仅限隔离容器

审批策略三档

审批策略 行为 何时使用
on-request(默认) 沙箱越界时暂停询问 日常推荐
untrusted 所有状态变更操作都问 高安全要求
never 完全不弹窗,仅靠沙箱约束 CI 自动化场景

类比:沙箱是驾照允许你跑多快,审批是每次出发前的"确认出发吗"提示音——换了驾照并不关掉提示音。


原因一:沙箱拧满了,审批旋钮没动(最常见)

这是三分之二以上用户遇到的根本原因。

桌面端权限菜单中"Full Access"对应的是 danger-full-access 沙箱模式,但审批策略默认仍然是 on-request。在 on-request 下,Codex 会在以下任一情形停下来等你:

  • 需要访问沙箱边界之外的资源
  • 执行被标记的命令
  • 发起网络请求

由于 danger-full-access 本身移除了文件系统边界,出圈的机会确实少了,但网络请求、特定工具调用仍然触发。

解决方式:两个设置同时改

在桌面端 UI 里:选择"Full Access"权限档位,并在同一界面开启"Approve for me"(即 auto-review 或 approval_policy = "never")。

通过 config.toml 配置:

sandbox_mode    = "danger-full-access"
approval_policy = "never"

通过命令行一步到位:

codex --dangerously-bypass-approvals-and-sandbox
# 缩写别名
codex --yolo

--yolo 的本质是同时关闭沙箱边界和审批弹窗,不只是其中一个。


原因二:桌面端 UI 的"Full Access"需要两步解锁

这是另一个高频卡点:桌面端权限菜单里默认看不到 Full Access 选项。

正确操作路径:

  1. Settings → General → Permissions:找到"Full access"开关,先打开它
  2. 这一步只是把该选项加入权限下拉菜单,并不会立即生效
  3. 回到对话界面,点击权限菜单,选择"Full access"
  4. 同时确认"Approve for me"是否已开启

GitHub 社区有大量帖子的根本原因就在这里——用户以为第 1 步完成后就自动生效了(Reddit r/codex,2026 年 5 月)。


原因三:破坏性工具调用的审批是硬编码的,无法被关掉

即使 --yolo 全开,以下类型的操作仍然触发审批

  • MCP 工具或 App 工具调用中携带"破坏性注解(destructive annotation)"的操作
  • 具有不可逆风险的操作(删除数据、强制重置 git、发送邮件、对外发布)

官方文档的原话是:

“app/MCP tool calls with destructive annotations still require approval unless the tool advertises a read annotation.”

这是设计行为,不是 bug。逻辑是:沙箱边界可以由配置关闭,但工具本身声明的破坏性操作需要人类确认,这一层无法通过权限设置绕过。遇到这类弹窗,点一次"本次批准"即可继续;如果某个工具高频触发,联系工具提供方在声明中降低注解级别。


原因四:Auto-review 的状态 UI 被误认为拦截弹窗

桌面端的审批界面分两种,外观相似但性质完全不同:

类型 出现条件 是否阻塞执行
人工审批请求 approval_policy 触发,等待你点击 ✅ 阻塞
Auto-review 状态指示 审查者 Agent 正在评估 ❌ 不阻塞,仅展示

当你开启"Approve for me"(即 approvals_reviewer = "auto_review")时,界面会显示"Reviewing → Approved/Denied"等状态标签。这些状态条看起来像弹窗,但不会暂停 Agent 执行,属于信息展示。

如果你看到的是这类状态而非真正的批准按钮,Codex 实际上并没有停下来——它只是在告诉你审查者做了什么决定。


原因五:重连后权限状态丢失(已知 Bug)

GitHub Issue #29054(2026 年 6 月)记录了一个重现稳定的 bug:

在 Full Access 模式下,Codex 桌面端重启或远程连接重置后,UI 仍然显示 Full Access,但实际执行行为变成了需要手动批准

会话元数据(JSONL 日志)中的权限字段是正确的(approval_policy: "never"sandbox_policy: danger-full-access),但运行时的审批门控仍然生效——两者出现了不同步。

目前官方标记为 bug,无官方修复时间表。

临时应对方式:

  • 重连后在权限菜单重新选一次"Full Access"强制刷新运行时权限状态
  • 长任务建议用 /goal 而非普通对话触发,/goal 在重启后的权限恢复更稳定
  • 同样的 bug 在 Windows 独立桌面端也有记录(Issue #24934),根因是嵌入式 CLI 版本(0.133.0)与系统 PATH 上的独立 CLI 版本(0.131.0)不一致

原因六(补充):新旧权限配置体系冲突

Codex 有两套权限配置体系,混用会产生不可预测行为

体系 关键字段 说明
旧体系 sandbox_mode + approval_policy CLI 长期支持
新体系 default_permissions + [permissions] 桌面端推荐

官方文档明确:

“Permission profiles do not compose with the older sandbox settings. Configure either default_permissions and [permissions], or sandbox_mode and approval_policy — not both.”

如果你的 config.toml 里同时出现了两套字段,部分设置会被静默忽略,导致看起来"Full Access 已配置"但审批仍然生效。

排查方法:检查 ~/.codex/config.toml,确保只使用一套配置体系,删掉另一套的字段。


真正关掉弹窗的三种完整方式

方式 A:桌面端 UI(推荐新手)

  1. Settings → General → Permissions → 打开"Full access"使其出现在菜单中
  2. 打开"Approve for me"使其出现在菜单中
  3. 对话界面权限菜单 → 选择"Full access"
  4. 同一菜单确认"Approve for me"已勾选(注意:这两项各自独立,都需要选)

方式 B:config.toml 永久生效

# 沙箱和审批同时配置,使用旧体系
sandbox_mode    = "danger-full-access"
approval_policy = "never"

方式 C:命令行单次运行

codex --dangerously-bypass-approvals-and-sandbox "你的任务描述"

为什么官方不建议同时关掉两个?

danger-full-access + approval_policy = "never" 是技术上最危险的组合:

  • 沙箱移除了文件系统和网络的边界
  • 审批关掉了最后一道人工确认
  • 恶意项目可以直接读取凭证、写入系统路径、向外发送数据

官方文档将其列为"高频误用模式"之一(OpenAI Codex 安全文档,2026 年)。官方推荐的生产安全配置是:

sandbox_mode       = "workspace-write"
approval_policy    = "on-request"
approvals_reviewer = "auto_review"   # 用 AI 审查替代人工点击

这样既不需要每步手动点击,又保留了安全审查层。如果需要调试外部依赖、访问网络,用 writable_roots 添加特定目录,或用 Rules 精确放行指定命令前缀,比直接拉满沙箱权限更安全。

开发者在构建需要多模型调用的工作流时,可以通过标准化 API 接口管理模型切换,例如通过兼容 OpenAI 格式的推理接入层(如七牛云 AI 推理服务)统一管理 API Key 和调用权限,避免在本地配置文件中明文存放多个密钥——这与 Codex 的 apiKeyEnv 最佳实践思路一致。


常见问题

Q:桌面端的"Full Access"和 CLI 的 --dangerously-bypass-approvals-and-sandbox 是同一个东西吗?

不完全是。CLI 的 --dangerously-bypass-approvals-and-sandbox--yolo同时关闭了沙箱边界和审批策略。桌面端的"Full Access"仅对应 danger-full-access 沙箱,审批策略由"Approve for me"单独控制。两者合起来才等价于 --yolo

Q:开了"Full Access"之后,破坏性操作弹窗是 bug 吗?

不是。携带破坏性注解的 MCP/App 工具调用的审批是硬编码在工具层的,和 approval_policy 无关,沙箱设置同样无法绕过。这是设计行为,目的是在工具本身声明了不可逆风险时强制要人类确认。

Q:Auto-review 和手动审批在界面上怎么区分?

手动审批会显示"Approve / Approve for session / Decline"按钮,Agent 执行暂停等待你点击。Auto-review 状态指示只显示"Reviewing → Approved/Denied/Aborted"等标签,Agent 不暂停,这些只是告知你审查者做了什么决定。

Q:重连后权限失效怎么办?

这是已知 bug(Issue #29054),官方尚无修复。临时方案:重连后在权限菜单重新切换一次"Full Access"强制刷新运行时状态。长期任务推荐用 /goal 触发,权限恢复比普通会话更稳定。

Q:config.toml 和桌面端 UI 哪个优先级更高?

桌面端 UI 的设置会覆盖 config.toml 中对应的字段(当前会话生效)。永久生效需要修改 config.toml;只改 UI 选项重启后可能恢复默认。建议将关键配置固化到 config.toml,UI 调整用于临时覆盖。


总结

Codex 桌面端"选了 Full Access 还弹窗"的核心原因,是沙箱和审批是两个独立开关这一设计被大多数用户忽视了。真正消灭弹窗需要两个维度同时配置。在此之上,破坏性工具注解的硬编码审批、Auto-review UI 的视觉混淆、重连权限状态丢失、新旧配置体系冲突,是另外四个独立触发源。

官方文档建议(OpenAI,2026 年):日常开发不需要也不应该完全关掉审批,用 approvals_reviewer = "auto_review" 替代人工点击是更合理的平衡——沙箱保边界,AI 审查代替手动批准,既减少打断又保留安全兜底。

本文内容基于 Codex 桌面端 2026 年 6-8 月版本,权限体系处于持续演进中,建议结合官方文档确认当前行为。


延伸资源

  • OpenAI Codex 官方安全文档:learn.chatgpt.com/docs/agent-approvals-security
  • Auto-review 审查者配置:learn.chatgpt.com/docs/sandboxing/auto-review
  • 已知 Bug 追踪(重连权限丢失):github.com/openai/codex/issues/29054
  • AI 编程工具 API 统一接入配置:https://www.qiniu.com/ai/agent
Logo

葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。

更多推荐