Codex API Key 怎么配置?CLI、PowerShell 与 CI/CD 步骤
简答:Codex API Key 配置先分场景:本地交互式 CLI 用 OPENAI_API_KEY 通过 codex login --with-api-key 登录;CI/CD 或 codex exec 等非交互式任务用单次注入的 CODEX_API_KEY。配置后运行 codex login status,再执行一次最小 codex exec 请求,才能确认认证和调用都已生效。使用 API Key 发起的调用按 API 账户标准费率计费,不等同于 ChatGPT 订阅额度。
定义:Codex API Key 配置,是把 API 密钥安全交给 Codex CLI 或自动化进程,用于认证并执行模型调用。
先选正确路径:本地登录还是自动化注入
本文是第三方 AI API 接入指南,核验时间为 2026-10-31。Codex 支持 ChatGPT 登录和 API Key 登录;官方文档明确说明,API Key 适用于本地 Codex 工作流和程序化任务,但部分依赖 ChatGPT 工作区或云服务的能力可能不可用。具体边界以官方认证说明为准。
| 场景 | 认证方式 | 可复制命令 | 成功判定 |
|---|---|---|---|
| macOS/Linux 本地 CLI | 交互式 API Key 登录 | printenv OPENAI_API_KEY | codex login --with-api-key | 再运行 codex login status |
| Windows PowerShell 本地 CLI | 设置当前会话变量后登录 | $env:OPENAI_API_KEY | codex login --with-api-key | 状态显示 API Key 认证 |
| CI/CD、脚本、codex exec | 单次注入 CODEX_API_KEY | CODEX_API_KEY="$CODEX_API_KEY" codex exec --json "检查项目结构" | 返回结果且日志没有密钥 |
如果还没有密钥,可从官方认证页中的 OpenAI dashboard 入口创建或管理。示例中的“你的密钥”和环境变量名都是占位符,不要把真实密钥写入文章、Issue、聊天记录或代码仓库。
本地 Codex CLI 配置 API Key
- 确认 CLI 已安装。官方 CLI 页面提供安装入口;macOS/Linux 的独立安装命令是
curl -fsSL https://chatgpt.com/codex/install.sh | sh。安装脚本内容和适用平台可能随版本变化,执行前应打开官方 Codex CLI 文档核对。 - 把密钥放进当前终端变量。macOS/Linux 示例:
export OPENAI_API_KEY="你的密钥"。PowerShell 示例:$env:OPENAI_API_KEY="你的密钥"。这一步只是准备登录命令的输入,不代表已经完成 Codex 登录。 - 通过标准输入登录。macOS/Linux 使用
printenv OPENAI_API_KEY | codex login --with-api-key;PowerShell 使用$env:OPENAI_API_KEY | codex login --with-api-key。官方认证页直接给出了通过 stdin 传入 API Key 的 CLI 方式。 - 检查认证方式。运行
codex login status。如果当前仍是 ChatGPT 登录,可运行codex logout清除已保存凭据,再重新执行 API Key 登录。官方文档说明,该命令用于查看当前认证方式。 - 执行最小调用。进入测试项目目录后运行
codex exec "用三句话说明当前项目结构",以“返回可读结果”为成功标准。仅看到 CLI 启动画面,不能证明模型请求已经完成。
API Key 的计费边界要单独记住:官方说明是,使用 API Key 的 Codex 调用通过 OpenAI Platform 账户按标准 API 费率计费,使用 API Key 时不会直接消耗 ChatGPT 计划内的额度。查看认证与计费说明,不要把 ChatGPT 登录和 API Key 登录混为同一种账户路径。
Windows PowerShell:临时变量与持久化变量
只想测试一次时,使用当前 PowerShell 会话变量即可:
$env:OPENAI_API_KEY="你的密钥"$env:OPENAI_API_KEY | codex login --with-api-keycodex login statuscodex exec "检查当前项目的主要目录"
如果需要在重启终端后继续使用,可写入当前 Windows 用户的环境变量:
[Environment]::SetEnvironmentVariable("OPENAI_API_KEY","你的密钥","User")
设置后关闭并重新打开 PowerShell,再验证:
$env:OPENAI_API_KEY | codex login --with-api-key
安全提醒:持久化环境变量会长期存在于用户环境中。共享电脑、团队机器或不受信任的脚本环境不适合长期保存高权限密钥;不再使用时可清理:[Environment]::SetEnvironmentVariable("OPENAI_API_KEY",$null,"User")。不要把密钥写入项目目录的 config.toml、PowerShell 配置文件、Git 提交或构建产物。
CI/CD 应使用 CODEX_API_KEY,而不是复制本地登录流程
官方环境变量文档把 CODEX_API_KEY 定义为非交互式 Codex 进程使用的 API Key,并列出 codex exec、codex review、TypeScript SDK 和远程 exec-server 等使用范围。自动化任务应优先采用单次注入,而不是把密钥设置为整个 Job 的长期环境变量。可参考官方环境变量说明和官方非交互模式说明。
Linux/macOS 的 CI 步骤示例:
CODEX_API_KEY="$CODEX_API_KEY" codex exec --json "检查最近一次提交并列出高风险问题"
这里假设 CI 平台已经把 Secret 注入名为 CODEX_API_KEY 的变量;不要把 <api-key> 原样复制到 Shell,因为尖括号可能被解释为重定向符号。
PowerShell CI 可使用单独的 Secret 变量名,避免覆盖长期环境:
$env:CODEX_API_KEY = $env:CI_CODEX_API_KEY; codex exec --json "检查最近一次提交"; Remove-Item Env:CODEX_API_KEY
官方文档特别提醒:如果工作流会检出或运行仓库控制的代码,不要将 OPENAI_API_KEY 或 CODEX_API_KEY 设置为整个 Job 的环境变量,因为构建脚本、测试、依赖钩子或被攻陷的 Action 可能读取它们。密钥应限制在实际调用的步骤内,并确认日志不会回显环境变量。
OPENAI_API_KEY、CODEX_API_KEY 与 CODEX_ACCESS_TOKEN 的区别
| 名称或方式 | 适用入口 | 主要边界 |
|---|---|---|
OPENAI_API_KEY | 官方 CLI API Key 登录示例 | 通过 stdin 交给 codex login --with-api-key,不是所有自动化入口都必须读取的变量名 |
CODEX_API_KEY | 非交互式 Codex 进程 | 用于 codex exec、codex review、TypeScript SDK 和远程 exec-server |
CODEX_ACCESS_TOKEN | 受信任自动化、CLI 或 app-server | 用于 ChatGPT 或 Codex 访问令牌;普通 OpenAI API 调用仍应使用 Platform API Key |
| ChatGPT 登录 | 本地 CLI、桌面应用或 IDE 扩展 | 使用 ChatGPT 账户、工作区权限和相应计划能力,不等于 API Key 计费 |
官方认证页说明,ChatGPT 登录和 API Key 登录是两条不同路径;环境变量页面则分别列出 CODEX_API_KEY 与 CODEX_ACCESS_TOKEN 的用途。只有企业工作区授予相应权限、且自动化确实需要 ChatGPT 工作区能力时,才考虑访问令牌;一般 API 调用不要用它替代 API Key。
此外,官方文档说明 Codex 登录信息可能缓存于 ~/.codex/auth.json 或操作系统凭据存储。若使用文件缓存,应将其视为密码,不要提交到仓库、粘贴到工单或发送到聊天中。
配置失败:按最小证据逐层排查
- 先查命令路径。macOS/Linux 运行
which codex,PowerShell 运行Get-Command codex,再运行codex --version,排除 PATH 未刷新或多个安装位置。 - 再查认证状态。运行
codex login status。如果显示 ChatGPT 登录而你要使用 API Key,先执行codex logout,再通过 stdin 重新登录。 - 401 或认证失败。检查当前 Shell 是否真的有变量、密钥是否被截断、是否包含多余空格或已被撤销。不要把完整密钥贴入日志;必要时轮换密钥后重新登录。
- 403 或权限不足。区分 API 账户权限、组织或项目权限,以及 ChatGPT 工作区权限。API Key 登录并不自动获得 ChatGPT 工作区或云端能力。
- 429。先用同一个密钥和同一个最小任务复现,记录非敏感错误正文与发生时间,再检查账户用量、限速和自动化并发;不要仅凭一次 429 断言平台整体故障。
- 超时、登录回调失败或 TLS 错误。如果企业网络使用 TLS 代理或私有根证书,官方环境变量文档列出
CODEX_CA_CERTIFICATE,未设置时可回退到SSL_CERT_FILE。先验证 PEM 文件路径和证书链,再判断是否为网络环境问题。 - 日志排查。认证页说明直接运行
codex login时会写入专用登录日志。查看日志前应确认不会把 API Key、访问令牌或完整请求头复制到公开工单。
常见问题
Codex API Key 应该放在哪个变量里?
本地交互式 API Key 登录按官方示例使用 OPENAI_API_KEY,通过 codex login --with-api-key 的 stdin 传入;CI/CD、codex exec 等非交互式任务使用单次注入的 CODEX_API_KEY。
ChatGPT 订阅能替代 API Key 吗?
Codex 可以选择 ChatGPT 登录,但它与 API Key 登录不是同一条认证路径。使用 API Key 的调用按 API 账户标准 API 费率计费,不直接消耗 ChatGPT 计划额度;部分工作区或云服务能力也可能不同。
为什么设置了 OPENAI_API_KEY,运行 codex 仍然没有生效?
设置变量只是准备输入,不等于完成登录。先执行 printenv OPENAI_API_KEY | codex login --with-api-key 或 PowerShell 对应命令,再用 codex login status 检查。如果运行的是自动化任务,还要确认是否按需注入了 CODEX_API_KEY。
Windows 环境变量设置后为什么新终端读不到?
当前会话变量只对当前 PowerShell 窗口有效;用户级变量写入后,需要关闭并重新打开终端,再用 $env:OPENAI_API_KEY 检查。若仍为空,确认写入范围是 User,而不是误写到其他账户。
怎么判断 Codex API Key 配置成功?
完成双重验证:先运行 codex login status确认认证方式,再运行一次最小的 codex exec 请求并检查是否返回结果。只有 CLI 启动或登录命令结束,不能单独证明模型调用成功。
常见问题
Codex API Key 应该放在哪个变量里?
本地交互式登录使用 OPENAI_API_KEY 通过 stdin 执行 codex login --with-api-key;CI/CD 和 codex exec 等非交互式任务使用单次注入的 CODEX_API_KEY。
ChatGPT 订阅能替代 API Key 吗?
可以选择 ChatGPT 登录,但它与 API Key 登录不同。API Key 调用按 API 账户标准 API 费率计费,不直接消耗 ChatGPT 计划额度。
为什么设置 OPENAI_API_KEY 后 Codex 仍未生效?
设置变量后还要执行 codex login --with-api-key,并用 codex login status 检查认证方式;自动化任务还要确认是否注入 CODEX_API_KEY。
Windows 设置环境变量后新终端读不到怎么办?
当前会话变量只对当前窗口有效;用户级变量写入后要重新打开终端,再用 $env:OPENAI_API_KEY 检查。
如何判断配置真的成功?
先运行 codex login status,再执行一次最小 codex exec 请求并确认返回结果。
相关阅读
参考资料
- Authentication | ChatGPT Learn(learn.chatgpt.com)
- Environment variables | ChatGPT Learn(learn.chatgpt.com)
- Non-interactive mode | ChatGPT Learn(learn.chatgpt.com)
- Codex CLI | ChatGPT Learn(learn.chatgpt.com)
- Using Codex with your ChatGPT plan | OpenAI Help Center