必须在WSL终端内配置OPENAI_API_KEY环境变量,因WSL与Windows环境隔离;临时用export命令,永久则写入~/.zshrc或~/.bashrc并source生效,密钥不可带引号或空格,且需验证echo和env输出无引号。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Win11 WSL环境下启动Codex报错“Missing environment variable `OPENAI_API_KEY`”,说明CLI根本没读到密钥——不是Key无效,而是加载路径断了。WSL的环境变量和Windows主机完全隔离,PowerShell里设的$env:OPENAI_API_KEY对WSL毫无作用,必须在Linux子系统内单独配置。
确认当前终端是否在WSL中
执行 uname -a,若输出含 Microsoft 或 WSL 字样,说明已在WSL内;若提示命令未找到或显示Windows内核信息,说明你还在Windows PowerShell或CMD里——【所有后续操作必须在WSL终端中进行】。
用 wsl -l -v 查看当前运行的发行版名称(如 Ubuntu-24.04),记下名字,后面配置文件路径会用到。
在WSL中设置OPENAI_API_KEY环境变量
方法一:临时生效(仅当前终端会话)
直接运行:export OPENAI_API_KEY="sk-xxx"(把 sk-xxx 替换为你的真实密钥,不要带空格、引号或换行)
方法二:永久生效(推荐)
① 打开对应shell配置文件:
→ 若用bash:运行 nano ~/.bashrc
→ 若用zsh(Ubuntu 24.04默认):运行 nano ~/.zshrc
② 在文件末尾新增一行:export OPENAI_API_KEY="sk-xxx"
③ 保存退出后,立即生效:source ~/.zshrc(或 source ~/.bashrc)
⚠️ 注意:密钥前后不能有空格,也不能用单引号或双引号包裹——WSL某些shell版本会把带引号的值当字符串字面量处理,导致Codex解析失败。
验证环境变量是否真正生效
运行 echo $OPENAI_API_KEY,应完整输出你的密钥(以sk-开头);如果返回空白,说明上一步没写对位置或没执行source。
通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存
再运行 env | grep OPENAI,确保输出行是 OPENAI_API_KEY=sk-xxx,而不是 OPENAI_API_KEY='sk-xxx' 或 OPENAI_API_KEY="sk-xxx"——带引号即为无效格式。
这一步不通过,Codex启动时必然报 missing 错误,别急着改config.toml。
检查Codex是否从环境变量读取(而非config.toml)
Codex CLI优先读取环境变量,只有当 OPENAI_API_KEY 不存在时,才 fallback 到 ~/.codex/config.toml 中的 api_key 字段。
因此,如果你已在WSL中正确设置了环境变量,就【不要在config.toml里重复填写api_key】——二者冲突时,Codex行为未定义,可能静默忽略环境变量。
可临时重命名 config.toml 测试:mv ~/.codex/config.toml ~/.codex/config.toml.bak,再运行 codex,若不再报 missing 错误,说明环境变量已起效。

















