Codex 報「missing environment variable」怎麼辦:env_key、MCP 環境變量、命令讀不到變量的官方配置說明

Codex 提示缺少環境變量,多半出在自定義模型提供方的 env_key、MCP 伺服器的 env_vars 或 shell_environment_policy 上。官方沒有單獨解釋這條報錯,本文按官方配置文檔說明每個設定的作用和排查順序。

NNathaniel bigo··原創首發·AI 輔助撰寫
11 分鐘讀完
資料核對於 2026-10-27 · 依據官方文檔與公開資料整理 其他 帳號
本文根據 Codex 官方配置文檔(Advanced Configuration、配置參考、環境變量、Config basics)和 MCP 文檔整理,資料核對於 2026-10-27。官方沒有單獨解釋「missing environment variable」這句報錯,本文說明官方配置裏和環境變量有關的設定,幫你對號入座。配圖為本站整理的示意圖,不是軟件截圖。

適用於誰

  • 在 config.toml 裏配置了第三方或公司網關作為模型提供方,啟動時提示缺少某個環境變量的人;
  • 配置了 MCP 伺服器,提示缺少令牌或密鑰的人;
  • 讓 Codex 運行命令時,命令讀不到自己設定的變量的人;
  • 在腳本或 CI 裏跑 codex exec 的人。

結論先說

  1. 報錯點名了一個變量名,就去 config.toml 裏找它。 自定義模型提供方的密鑰來自 env_key:官方寫法是 env_key = "變量名",Codex 會讀取本機裏這個名字的環境變量。變量名是你自己在配置裏決定的,Codex 沒有固定的變量名,所以要保證配置裏寫的名字和你設定的變量名完全一致。
  2. 變量要在啟動 Codex 的那個環境裏存在。 在一個終端裏設定的變量,通常只對那個終端和它啟動的程序可見,用別的方式(比如從圖標啟動桌面 App、IDE)啟動的 Codex 不一定能讀到。這是環境變量的通用規則,不是 Codex 文檔裏的特別說明。
  3. MCP 伺服器的變量用 env_vars 聲明要轉發的變量,令牌變量用 bearer_token_env_var 指定名字。
  4. Codex 運行的命令讀不到變量,看 shell_environment_policy,它控制傳給被啟動命令的環境變量。
  5. 不要把令牌直接寫進配置文件:官方把 experimental_bearer_token 標為不推薦,應使用 env_key。

缺少環境變量:對照官方配置

圖:本站根據 Codex 官方文檔:配置參考 與 環境變量 整理的示意圖

一、自定義模型提供方的 env_key

官方認證文檔和配置文檔裏的說法:在 config.toml 裏定義了自定義模型提供方後,有三種認證方式:

  • requires_openai_auth = true:使用 OpenAI 的認證,之後用 ChatGPT 或 API 密鑰登入,適合經過 LLM 代理訪問 OpenAI 模型;
  • env_key = "變量名":從本機該名字的環境變量裏讀取這個提供方的 API 密鑰;
  • 兩者都不設:Codex 認為提供方不需要認證,適合本地模型。

官方的示例配置裏,一個提供方寫成這樣:

toml
[model_providers.mistral]
name = "Mistral"
base_url = "https://api.mistral.ai/v1"
env_key = "MISTRAL_API_KEY"

意思是:Codex 向這個提供方發請求時,會去環境裏找名為 MISTRAL_API_KEY 的變量,找不到就會提示缺少。官方環境變量文檔也明確寫了:提供方的密鑰變量名是你用 env_key 自己選的,不是 Codex 固定讀取的變量。配置參考裏還有一個可選的 env_key_instructions,用來寫這個密鑰怎麼獲取的提示。

給自定義提供方設定密鑰變量

圖:本站根據 Codex 官方文檔:Advanced Configuration 整理的示意圖

不要混用認證方式:官方配置參考寫明,命令式認證(auth 表,用命令輸出令牌)不要和 env_key、experimental_bearer_token、requires_openai_auth 同時使用。第三方模型怎麼接入,見 /guides/codex-third-party-models-deepseek-gemini-grok 和 /guides/deepseek-codex-setup。

二、MCP 伺服器的環境變量

官方 MCP 文檔裏,STDIO 類伺服器的幾個與環境有關的選項:

  • env:給伺服器設定的環境變量;
  • env_vars:允許並轉發給伺服器的環境變量,可以寫變量名,也可以寫帶來源的對象,官方示例:env_vars = ["LOCAL_TOKEN", { name = "REMOTE_TOKEN", source = "remote" }];
  • HTTP 類伺服器還有 bearer_token_env_var(放在 Authorization 裏發送的令牌變量名)和 env_http_headers(請求頭名到環境變量名的映射,值從環境裏取)。

提示缺少 MCP 用的變量時,對照你的 MCP 配置,看它引用了哪個變量名,再確認啟動 Codex 的環境裏有同名變量。MCP 的完整配置見 /guides/codex-mcp-config。

三、命令讀不到變量:shell_environment_policy

這是另一種「缺少變量」:Codex 在沙箱裏運行命令時,命令裏的程序讀不到你以為存在的變量。官方說明,shell_environment_policy 控制 Codex 傳給被啟動命令的環境變量:

  • inherit = "none" 從空環境開始,inherit = "core" 繼承一組精簡的核心變量;
  • set = { MY_FLAG = "1" } 顯式設定一些值;
  • [shell_environment_policy.filters] 用模式(支持 * 和 ?,不區分大小寫)排除或只包含某些變量,一旦任何一條用了 include,就只保留匹配包含規則的變量,已被排除的變量不會被 include 恢復;
  • ignore_default_excludes 預設是 true,也就是不自動過濾名字裏含 KEY、SECRET、TOKEN 的變量,設成 false 才會啟用這個自動過濾。

所以命令讀不到某個變量時:看你的配置裏有沒有 inherit = "none"、include 規則或排除規則把它擋掉了。官方還寫明,舊的 exclude 和 include_only 數組不要和 filters 在同一層配置裏同時使用,否則 Codex 會拒絕這種組合。配置文件的位置和優先級見官方 Config basics:命令行參數最高,其次是項目 .codex/config.toml(只有信任的項目才加載),再到用戶的 ~/.codex/config.toml。

四、腳本、CI 和 CODEX_HOME

官方環境變量文檔列的幾個:

  • CODEX_API_KEY:給 codex exec 這樣的非交互進程提供 API 密鑰。官方建議在運行倉庫裏的受控代碼時,只在需要的那一行設定,而不是對整個作業設定;
  • CODEX_ACCESS_TOKEN:給受信任的自動化提供訪問令牌,要持久登入用 codex login --with-access-token;
  • CODEX_HOME:Codex 狀態的根目錄(配置、登入、日誌、會話、技能都在這裏),預設 ~/.codex。如果你設定了它,這個目錄必須已經存在;
  • RUST_LOG:控制日誌詳細程度,排查時可以用,分享日誌前注意清除密鑰。

五、還是不行

常見問題

Q:為什麼 Windows 上設定了變量還是讀不到?

官方文檔沒有給 Windows 下設定變量的專門說明。通用的原則是:變量要對啟動 Codex 的進程可見。設定之後要重新啟動 Codex,必要時重新打開終端。

Q:密鑰寫在 config.toml 裏行不行?

官方把直接寫令牌的 experimental_bearer_token 標為不推薦,應使用 env_key。config.toml 裏不要放密鑰,也不要提交到代碼倉庫。

Q:想用 DeepSeek 或別的第三方模型?

見 /guides/deepseek-codex-setup。

參考資料

  • Codex 官方文檔:Advanced Configuration — https://learn.chatgpt.com/docs/config-file/config-advanced
  • Codex 官方文檔:Configuration Reference — https://learn.chatgpt.com/docs/config-file/config-reference
  • Codex 官方文檔:Environment variables — https://learn.chatgpt.com/docs/config-file/environment-variables
  • Codex 官方文檔:Config basics — https://learn.chatgpt.com/docs/config-file/config-basic
  • Codex 官方文檔:Model Context Protocol — https://learn.chatgpt.com/docs/extend/mcp
需要開通或續費?ChatGPT Plus 充值 →

Nathaniel 的更多內容

  1. 01

    Claude 登入報錯對照(帳號被停用以外):There was an error logging you in、收不到登入電郵、驗證碼、Google 登入的處理

    Claude 登入不上,除了帳號被停用,還有登入出錯、收不到登入電郵、在另一台裝置點連結、想設密碼、Google 登入異常等情況。本文按官方登入幫助整理各提示的原文和處理,帳號被停用另見專門文章。

    Claude0
  2. 02

    Claude 提示「Something went wrong」怎麼辦:限額、消息過長、容量緊張、登入出錯的官方報錯對照

    Claude 報 Something went wrong 或別的錯誤?官方《Troubleshoot Claude error messages》把常見錯誤分成限額、消息過長、登入出錯、容量緊張四類,並給了各自的原文和處理。本文逐項整理,並說明官方沒有單獨解釋籠統的出錯提示。

    Claude0
  3. 03

    DeepSeek 除了「伺服器繁忙」還有哪些報錯:網頁版提示對照和 API 錯誤碼 400、401、402、422、429、500、503

    DeepSeek 報錯不只有伺服器繁忙。本文把官方常見問題裏的網頁版提示(上載失敗、運行環境異常、帳號停用、電郵域名不支持)和 API 錯誤碼匯成對照表,給出官方的原因和處理,並鏈到各篇詳細文章。

    其他 AI 工具0
  4. 04

    Gemini 提示「此帳號無法使用」(Can't access this service)怎麼辦:帳號類型、年齡、Family Link 與工作學校帳號的官方條件

    Gemini 提示 Can't access this service,意思是這個帳號目前不符合使用條件。官方寫明瞭可用的帳號類型、年齡要求和 Family Link 帳號不能用。本文按帳號類型對照,並給出 Something went wrong 的處理。

    Gemini0
  5. 05

    Gemini Pro 免費試用、學生優惠到期後怎麼辦:自動轉付費、重新驗證 SheerID、取消後會失去什麼

    Google AI Pro 學生優惠或試用到期後會怎樣?官方說會自動轉為正常付費的 Plus 或 Pro,會提前通知;沒有按時重新驗證 SheerID 會失去優惠。本文按官方幫助中心整理到期規則、取消後失去的內容和第三方訂閱的處理。

    Gemini0
  6. 06

    Gemini 怎麼切換模型:Flash-Lite、Flash、Pro、Argon 的選擇步驟、思考等級和自動選擇

    Gemini 網頁版怎麼手動切換模型?官方步驟是點聊天框底部當前模型再選,需要有 Google AI 方案,帶鎖圖標的要升級。本文按官方說明整理各方案可選模型、思考等級預設值和自動模型選擇。

    Gemini0

同產品的其他教學

  1. 01

    Codex 常見報錯總表:429、401、登入失敗、連接中斷、缺少環境變量、沙箱、Computer Use、遠程控制,看到哪條讀哪篇

    把 Codex 最常見的報錯和問題匯成一張對照表:429、401、Token exchange failed、stream disconnected、missing environment variable、Windows 沙箱失敗、Computer Use 找不到、遠程控制連不上,各給一句處理方向並鏈到詳細文章。

    ChatGPTCodex0
  2. 02

    Codex 插件在哪裝:桌面 App 的 Plugins 標籤、CLI 的 /plugins、IDE 為什麼沒有,以及插件和技能、MCP 的區別

    Codex 的插件在 ChatGPT 桌面 App 的 Plugins 標籤裏裝,命令行輸入 /plugins,IDE 插件不支持。本文按官方文檔講各入口怎麼裝、裝完怎麼用、用 API 密鑰登入時有什麼限制,以及插件、技能、MCP 伺服器的區別。

    ChatGPTCodex0
  3. 03

    Codex Windows 版怎麼下載安裝:ChatGPT 桌面 App 官方入口、winget 命令、開發工具與 WSL 設定

    Windows 上的 Codex 現在是 ChatGPT 桌面 App 裏的一個入口。官方給了微軟商店下載地址和 winget 安裝命令,原生用 PowerShell 加 Windows 沙箱,也可切到 WSL2。本文按官方文檔講安裝、登入、建議裝的開發工具、管理員運行和常見小問題。

    ChatGPTCodex0
  4. 04

    Codex 遠程控制授權失敗怎麼辦、遠程 SSH 怎麼用:手機配對電腦、Remote Control、連接 SSH 主機的官方步驟

    用手機遠程控制電腦上的 Codex,配對不成功或授權失敗?官方 Remote connections 文檔寫了配對步驟和五類常見問題,也講了怎麼把桌面 App 連到 SSH 主機、怎麼在主機之間交接對話。本文按官方文檔整理,並給出一張排查對照圖。

    ChatGPTCodex0
  5. 05

    Codex 沙箱初始化失敗怎麼辦(Windows):沙箱設定失敗、錯誤 1385、Everyone 可寫警告與 MXC、elevated、unelevated 怎麼選

    Windows 上 Codex 沙箱設定失敗、命令跑不起來、提示錯誤 1385 或 Everyone 可寫?官方文檔列了常見原因和處理,本文逐項整理,並說明 mxc、elevated、unelevated 三種實現的區別。

    ChatGPTCodex0
  6. 06

    Codex 找不到 Computer Use 怎麼辦:插件在哪裝、地區限制、macOS 權限與 Windows 前台運行說明

    ChatGPT 桌面 App 的 Computer Use 能讓 Codex 看螢幕、點滑鼠、操作桌面應用,但官方寫明它只在支持的地區可用,需要裝 Computer Use 插件並開啟開關。本文按官方文檔講插件在哪裝、macOS 要給哪兩個權限、Windows 為什麼會佔用前台,以及找不到時的排查。

    ChatGPTCodex0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~