教程 / Codex 与 AI 编程

Codex 常见问题排查清单:从认证到沙箱

Codex 出问题时,报错往往只写一句“失败了”,真正的原因却在另一层。这份清单把常见故障按“认证 → 沙箱 → 网络 → 指令文件 → 环境”分层,一层一层排除,比反复重装有效得多。

更新于 2026-10-24由 GPTHubs 团队 整理约 10 分钟读完Codex 与 AI 编程

先定位在哪一层

绝大多数故障落在五层里的一层:认证(who)、沙箱与审批(what can it do)、网络(can it reach)、指令文件(what does it know)、运行环境(where does it run)。先判断层,再动手,可以省掉一半的试错。

顺序排查的一层一句话判断方法
1认证与账号codex login status 是否返回成功,模型列表能不能拉到
2沙箱与审批被拒的动作是“改文件/联网/跑命令”里的哪一类
3网络与 TLS登录能过但请求失败,或公司网络下证书报错
4指令文件行为和你写的 AGENTS.md 不符
5运行环境IDE、云端、Windows/WSL 之间的差异
三行基础自检
codex --version
codex login status
codex doctor

认证失败、登录过期、账号不对

认证问题的信号很直接:提示未登录、反复跳浏览器、或者明明登录了却报没有权限。先用一条命令确认当前凭证状态,再决定是重登还是换方式。

确认与重置登录状态
codex login status
codex login
codex logout
现象常见原因处理
提示未登录或凭证失效凭证过期、被登出、换了账号重新 codex login;交互界面里用 /logout 后再登录
浏览器回调打不开在远程机器或容器里,回调端口回不来用 codex login --device-auth,或把登录文件拷进去
登录成功但拉不到模型用的是 API key 而云端需要 ChatGPT 登录云端任务必须用 ChatGPT 账号登录,API key 不行
总被登出工作区被限定,账号不匹配检查强制工作区设置,确认登录的是目标工作区账号
公司网络下证书报错企业 TLS 检查或私有根 CA设置企业根证书变量后再登录

登录缓存由 CLI 和 IDE 插件共用:在一个端登出,另一个端也要重新登录。凭证默认明文存在主目录的 auth.json 里,也可以改成系统凭据库;不管存在哪,都按密码对待,不要提交进仓库。

把凭证放进系统凭据库
# ~/.codex/config.toml
cli_auth_credentials_store = "keyring"

命令被沙箱拦了

沙箱拦截不是 bug,是设计。关键是分清当前是哪一档,以及被拦的是“写文件”“联网”还是“跑命令”。判断依据其实就在错误信息里:被拒的命令与路径会写出来。

档位能做什么典型报错场景
read-only只能读;改文件、跑命令、联网都要审批或直接失败想写一行代码就被拒
workspace-write工作区内可读写、可跑常规命令;工作区外与联网受限写到工作区外的路径失败
danger-full-access没有文件与网络边界几乎不会因沙箱被拦,但风险最高
  1. 01

    看当前档位与可写根目录

    用 /status 查看当前模型、审批策略与可写根目录;用 /permissions 切换权限档位。看不懂配置合并顺序就敲 /debug-config。

  2. 02

    用同一套策略复现

    codex sandbox 会用和内部一致的安全策略跑一条命令,能直接验证“到底是沙箱拦的还是命令本身错了”。

  3. 03

    只放行需要的那条命令

    把常跑的命令加进规则白名单,比把整个会话提到 full access 安全得多。

  4. 04

    确认平台沙箱是否可用

    Linux 需要 bubblewrap;Windows 用原生沙箱;macOS 开箱可用。缺依赖时启动会有告警,按提示装即可。

Linux 上补沙箱依赖
sudo apt install bubblewrap
# 或
sudo dnf install bubblewrap

网络、TLS 与 MCP 连不上

网络层的问题有两种表现:请求根本发不出去(证书、DNS、公司网关),或者工具连不上(MCP 服务启动超时、需要 OAuth)。前者看证书配置,后者看日志和超时设置。

现象常见原因处理
请求报证书或 TLS 错误企业网络做了 TLS 检查,根 CA 不在信任链里设置 CODEX_CA_CERTIFICATE 指向企业根证书
沙箱里 curl 失败但本机可以沙箱默认不放网络用规则放行,或临时提高权限档位
MCP 工具列表是空的服务启动失败或启动超时加大 startup_timeout_sec,用 /mcp verbose 看诊断
MCP 需要登录OAuth 尚未完成codex mcp login <名称>,或在界面里 /mcp login
MCP 工具调用总超时单次工具执行时间不够调大 tool_timeout_sec
企业根证书
export CODEX_CA_CERTIFICATE=/path/to/corporate-root-ca.pem
codex login
MCP 超时设置
[mcp_servers.my_server]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
startup_timeout_sec = 20
tool_timeout_sec = 120

排查 MCP 时先确认配置写在哪:用户级在 ~/.codex/config.toml,项目级在仓库的 .codex/config.toml,且项目级配置只对受信任的项目生效。桌面应用、CLI 和 IDE 插件共用同一份配置,一处写错三处都连不上。

AGENTS.md 好像没生效

指令文件不生效,九成是三个原因:目录不对、文件是空的、或者被上一层的 override 顶掉了。判断顺序永远是:先确认实际加载了哪些文件,再改内容。

看模型实际收到了什么
codex debug prompt-input
# 想确认某个子目录的覆盖是否生效
codex --cd apps/web debug prompt-input
现象常见原因处理
一条规则都没生效当前工作目录不在项目根之下,或文件为空从项目根启动;空文件会被跳过
出现了没写过的规则上层目录有 AGENTS.override.md从最近的目录往上找 override 文件
自定义文件名不生效名字没写进 fallback 列表,或没重启检查配置拼写;改配置后重启 Codex
只有前半部分规则生效总大小超过 32 KiB 上限,后面的被截断调大上限,或把规则拆到嵌套目录
配置像是别人的CODEX_HOME 指向了另一个目录echo $CODEX_HOME 确认,再检查该目录下的配置
调大指令文件上限
# ~/.codex/config.toml
project_doc_fallback_filenames = ["TEAM_GUIDE.md", ".agents.md"]
project_doc_max_bytes = 65536

云端、IDE、Windows 的差异

同一件事在不同端上表现不同,很多时候不是故障,而是端与端的能力差异。比如云端任务不接受 API key 登录、IDE 插件不提供定时任务管理界面、WSL1 已经不被支持。

场景典型症状处理
云端任务一直排队或不动账号未开通、仓库未授权、环境未就绪确认用 ChatGPT 登录,检查仓库访问与环境;用 codex cloud list 看状态
云端改动拉不回来本地有冲突,git apply 失败先在干净工作区应用,或手动对照 diff 处理
IDE 插件连不上未登录,或与 CLI 的登录状态不一致在插件里重新登录;确认与 CLI 共用同一份缓存
Windows 原生沙箱降级提示沙箱受限按提示用 /setup-default-sandbox 走管理员流程
WSL 里跑不动WSL1 不受支持,或仓库放在挂载盘升级到 WSL2;把仓库放在 Linux 家目录下
  1. 01

    先确认版本和端

    codex --version 看 CLI;桌面应用用的是它自带的那份,功能可能先到一个端。两端版本差太多时,先统一再排查。

  2. 02

    任务卡住先看是不是在等审批

    无人值守或后台运行时,最容易“卡”在等人点确认。切到该会话看一眼,或调整审批策略。

  3. 03

    终端卡了就地重开

    关掉终端面板再用快捷键开回来,跑 pwd、git status 验证;仍然无响应就等任务结束后重启应用。

  4. 04

    找日志

    会话记录在主目录的 sessions 目录(默认 ~/.codex/sessions),macOS 应用日志在 ~/Library/Logs/com.openai.codex/ 下按日期分目录。

求助前先收集这些

把下面几项准备好,能让你在提 issue 或找同事时直接被回答,而不是来回问十轮。注意日志和会话记录里可能有密钥与业务数据,发出去之前先脱敏。

  • codex doctor 的报告
  • codex --version,以及你用的是 CLI、IDE 插件还是桌面应用
  • codex login status 的结果(不要贴令牌本身)
  • 出问题的那条命令,或那段最小可复现的提示词
  • 完整报错文本,尤其是被拒绝的命令与路径
  • 操作系统与版本;Windows 用户注明是原生还是 WSL,以及 WSL 版本
  • 相关的配置片段(脱敏后的 config.toml),以及 /debug-config 的层顺序
  • /status 显示的模型、审批策略与可写根目录
一次收集完
codex doctor > codex-doctor.txt
codex --version >> codex-doctor.txt
codex login status >> codex-doctor.txt 2>&1
uname -a >> codex-doctor.txt

提交反馈时可以在输入框敲斜杠调出反馈入口,它会带上会话 ID,方便定位到具体那次运行。

常见问题

为什么同样一条命令,昨天能跑今天被拦?

检查三件事:权限档位有没有被改过、工作目录是不是换了(工作区外的路径不在可写范围)、以及策略是否被上层配置覆盖。用 /status 看当前可写根目录,用 /debug-config 看配置层的合并顺序,基本能定位到是哪一层变了。

登录一直循环跳浏览器怎么办?

多半是回调地址回不来:远程服务器、容器或跳板机上很常见。改用设备码登录,或把已登录机器的凭证文件安全地拷过去(按密码对待),也可以用端口转发把回调端口接回本地。

云端任务必须用 ChatGPT 账号登录吗?

是。云端任务需要 ChatGPT 登录,API key 只能用于本地按量调用,不能用来跑云端任务。如果你一直在两种方式之间切换,先确认当前用的是哪一种。

升级后功能反而不见了?

终端和 IDE 插件的新功能有时会先到其中一个端。先用 codex --version 确认版本,再检查是不是配置里把对应特性关掉了(例如某些实验特性有独立开关)。仍然不对就按上面的清单收集信息再反馈。

官方文档与参考

本文依据上述官方文档整理;价格、额度与功能会随官方更新变化,第三方中转站的行为以其自身说明为准。