Codex 的 Key 要和模型服务配套使用。OpenAI Platform Key 用于官方 API 计费;第三方服务的 Key 应按对应 Provider 配置;ChatGPT 登录则使用账户的订阅或工作区权限。先选路线,再配置地址与模型,才能避免“换 Key 仍然报错”。资料核对于 2026 年 10 月 12 日。
先确定你使用哪种认证
官方认证文档支持 ChatGPT 登录和 API Key 登录,用于本地桌面端、CLI 与 IDE。Codex cloud 需要 ChatGPT 登录;API Key 不会自动获得依赖工作区或云端的功能。组织还可能限制允许的登录方式。
使用第三方模型服务时,Key、Provider、Endpoint 和 Model ID 必须来自同一套接入说明。不要拿第三方 Key 到 OpenAI 官网登录,也不要把 ChatGPT 订阅余额当成 API 余额。
官方 OpenAI Key:从终端登录并检查状态
先在 OpenAI Platform 创建 Key,并把它放入当前进程可读取的 OPENAI_API_KEY 环境变量。真实值不要写进命令历史、仓库或文章;可由系统凭证工具、交互输入或 CI Secret 注入。下列命令本身不包含密钥。
codex login --with-api-key从标准输入读取 Key。macOS/Linux 的 Bash 或 Zsh 可以通过已设置的变量输入:
printenv OPENAI_API_KEY | codex login --with-api-key
Windows PowerShell 可使用:
$env:OPENAI_API_KEY | codex login --with-api-key
随后查看状态,而不要打开并打印 auth.json:
codex login status
如需切换登录路线,先确认退出会影响当前本地会话,再执行 codex logout,之后重新登录。官方说明 CLI 与扩展共享登录缓存,退出可能使另一客户端也需要重新认证。
还没有设置变量时,下面用交互输入临时读取 Key,不把真实值写进命令本身。Bash/Zsh 示例只适用于该 shell:
printf 'OpenAI API Key: ' >&2
IFS= read -r -s OPENAI_API_KEY
printf '\n' >&2
export OPENAI_API_KEY
printenv OPENAI_API_KEY | codex login --with-api-key
unset OPENAI_API_KEY
PowerShell 示例:
$secureKey = Read-Host 'OpenAI API Key' -AsSecureString
$env:OPENAI_API_KEY = [System.Net.NetworkCredential]::new('', $secureKey).Password
$env:OPENAI_API_KEY | codex login --with-api-key
Remove-Item Env:OPENAI_API_KEY
$secureKey = $null
命令退出后再运行 codex login status。清除变量不会删除 Codex 已存的登录凭证;需要退出认证时使用 codex logout。第三方 env_key 路线则必须让指定变量在 Codex 运行期间保持有效,不能先 unset 再启动客户端。
第三方 Provider:用 env_key 指定专用变量
当前官方配置支持 Provider 从 env_key 指定的变量读取密钥。以下是通用示例,必须把地址和模型替换为服务商明确支持 Codex Responses 协议的实际值;它不是 AICodeWith 的专用配置。
model = "PROVIDER_MODEL_ID"
model_provider = "my-provider"
[model_providers.my-provider]
name = "My Provider"
base_url = "https://YOUR_PROVIDER_HOST/v1"
wire_api = "responses"
env_key = "MY_PROVIDER_API_KEY"
这些 Provider 字段放在用户级 ~/.codex/config.toml;Windows 默认对应用户目录中的 .codex/config.toml。项目级 .codex/config.toml 不能覆盖机器级 Provider 和认证相关字段。表名 my-provider 必须与 model_provider 一致。
另一个认证选项是 requires_openai_auth = true,表示使用 OpenAI 认证机制。官方明确说明,此时 env_key 会被忽略。因此不要把两个字段同时写上,并期待专用环境变量仍优先生效。选择哪种方式,应以对应服务的接入文档为准。
环境变量设置了却不生效怎么办
变量必须存在于启动 Codex 的那个进程环境。终端设置不会自动进入已启动的桌面应用;新开终端、重启客户端或重新启动服务后再验证。CI 的 Secret 也必须注入运行 Codex 的步骤,而不只是安装依赖步骤。
Bash/Zsh 检查变量是否存在,不打印真实值:
test -n "${MY_PROVIDER_API_KEY:-}" && echo "Key 已设置" || echo "Key 未设置"
PowerShell 可使用:
if ($env:MY_PROVIDER_API_KEY) { "Key 已设置" } else { "Key 未设置" }
变量存在只说明进程可读取它,不代表 Key 有效或当前 Provider 正在使用它。下一步仍要核对模型和真实请求。
接入 AICodeWith 时用专用教程
AICodeWith 的 Codex 接入使用专用地址和认证方式,不要直接套用上面的通用 Provider 模板。完整步骤见接入教程:
按错误类型定位
401:保留错误文本,检查 Key 归属、是否撤销、当前登录缓存和 Provider 认证方式。若设置了 requires_openai_auth,先检查实际认证缓存,不要只检查 env_key。
404:核对 base_url 与 Responses 协议,特别是服务商是否有 Codex 专用路由。不要不断盲加 /v1,也不要先更换全部凭证。model not found:检查模型 ID、渠道和 Key 的可用模型范围。
429:根据响应区分瞬时限流、额度和服务方限制。等待重试只能处理部分限流;额度不足需要查看对应计费账户。网络或 TLS 错误则应先查连接,不能归因于 Key 无效。
Key 已创建却提示额度不足时,分别检查计费账户余额、Key 自身限制和模型权限。API Key 登录按对应 API 账户计费,不使用 ChatGPT 订阅的包含额度;第三方服务的限额与官方账户也是独立的。
配置完成后怎样验收
进入一个测试项目,发出“只读取 README,概述启动步骤,不修改文件”的任务。核对客户端显示的模型、返回内容和工作区变化;使用第三方服务时,按时间、Key 和模型匹配后台调用记录。登录状态、配置文件与真实请求三者一致,才说明接入路径符合预期。



