环境变量最常见的误区是:
我刚才 export 过,所以 Codex 一定能读到。
实际上,变量可能只存在于当前终端,变量名也可能和 Provider 配置里的 env_key 对不上。
先确认名字,再确认进程和作用域。
先确认 Provider 要读哪个变量
例如:
[model_providers.custom]base_url = "https://<VERIFIED_BASE_URL>/v1"env_key = "PROVIDER_API_KEY"wire_api = "responses"
这时 Codex 读取的是:
PROVIDER_API_KEY
你设置成 OPENAI_API_KEY,并不会因为两者都“像 API Key”就自动等价。
macOS / Linux:当前终端
export PROVIDER_API_KEY='REDACTED'
安全检查变量是否存在:
if [ -n "$PROVIDER_API_KEY" ]; then echo "PROVIDER_API_KEY is set"else echo "PROVIDER_API_KEY is missing"fi
不要直接 echo 完整 Key。
清除当前会话:
unset PROVIDER_API_KEY
如果变量写进了 ~/.zshrc、~/.bashrc 等启动文件,新终端还会再次加载,需要把对应那一行一起撤掉。
Windows PowerShell
当前 PowerShell 进程:
$env:PROVIDER_API_KEY = 'REDACTED'
检查是否存在:
if ($env:PROVIDER_API_KEY) { 'PROVIDER_API_KEY is set'} else { 'PROVIDER_API_KEY is missing'}
清除:
Remove-Item Env:PROVIDER_API_KEY
长期持久化前,先在干净环境里验证变量名和启动方式。
.env 文件不是自动答案
项目里存在 .env,不代表 Codex CLI 会自动加载它。
是否生效取决于 shell、启动脚本或项目工具。
至少检查 .gitignore:
.env.env.*
团队如果只需要共享变量名,可以提交 .env.example,不要提交真实密钥。
变量已经设置,为什么还失败
按顺序查:
env_key和变量名是否完全一致;- Codex 是否从设置变量的同一个终端启动;
- Key 是否多了空格、引号或换行;
- 当前
model_provider是否真的指向这段配置; - Base URL 和模型 ID 是否正确;
- 是否混用了两套认证方式。
OpenAI 当前文档特别说明:
如果自定义 Provider 设置了:
requires_openai_auth = true
Codex 会使用 OpenAI 认证,并忽略 env_key。
所以不要同时设计两条相互冲突的 Key 读取路线。
如果用 AI Code With
如果你希望用环境变量管理 AI Code With Key,可以为 Codex 单独创建一个 Key,再用一个容易识别的变量名,例如:
AICODEWITH_API_KEY
然后让 Provider 的 env_key 指向它。
但要注意:AI Code With 当前 Codex 专页使用的是另一套 OpenAI-auth 风格配置。
两种方式不要混在一起。
最稳的做法是:选一套认证路线,跑通后再固化。
相关阅读
- Codex API Key 怎么配置
- Codex config.toml 配置指南
- Codex auth.json 是什么
资料来源
- OpenAI Authentication:https://developers.openai.com/codex/auth
- OpenAI Advanced Configuration:https://developers.openai.com/codex/config-advanced
- OpenAI Configuration Reference:https://developers.openai.com/codex/config-reference
- AI Code With Codex:https://docs.aicodewith.com/zh/docs/codex-cli


