OpenAI 身分驗證
使用 OpenAI 模型時,Codex 支援兩種登入方式:
- 使用 ChatGPT 登入,透過訂閱方案取得存取權
- 使用 API 金鑰登入,依使用量計費
ChatGPT 桌面版應用程式、Codex CLI 和 IDE 擴充功能都支援這兩種登入方式,可用於本機工作。Codex 雲端則必須使用 ChatGPT 登入。
您的登入方式也決定適用哪些管理控制措施與資料處理政策。
- 使用 ChatGPT 登入時,Codex 的使用會遵循您的 ChatGPT 工作區權限、角色型存取控制 (RBAC),以及 ChatGPT Enterprise 的資料保留與資料駐留設定。
- 使用 API 金鑰時,則會遵循您 API 組織的資料保留與資料共用設定。
對於受管理的工作區,身分驗證只是存取控制的其中一層。 工作區成員資格與佈建決定誰能登入, 而席位和工作區角色則決定他們可使用哪些產品介面與功能。 在 ChatGPT 桌面版應用程式、Codex CLI 或 IDE 擴充功能中執行本機工作時, 權限設定檔會限制智慧體能在裝置上執行的動作。 請參閱 群組與佈建 及角色與工作區權限, 以規劃這些控制措施。
使用 ChatGPT 登入
當您從 ChatGPT 桌面版應用程式、Codex CLI 或 IDE 擴充功能使用 ChatGPT 登入時,登入流程會開啟瀏覽器視窗。登入後,瀏覽器會將您的認證資料傳回 Codex。
ChatGPT 網頁版
開啟 ChatGPT 並登入,然後選擇您要使用的工作區。 ChatGPT 網頁版會將已通過身分驗證的工作階段保留在瀏覽器中。
ChatGPT 桌面版應用程式
在未登入畫面上,選取 繼續登入, 然後在瀏覽器中完成登入流程。
Codex CLI
執行 codex login,然後在瀏覽器中完成登入流程。
若沒有有效的工作階段,這是預設的身分驗證方式。
IDE 擴充功能
在未登入畫面上,選取 使用 ChatGPT 登入, 然後在瀏覽器中完成登入流程。
使用 API 金鑰登入
您也可以使用 API 金鑰登入 ChatGPT 桌面版應用程式、Codex CLI 或 IDE 擴充功能。請從 OpenAI 儀表板取得 API 金鑰。
ChatGPT 桌面版應用程式
在未登入畫面上,選取 使用其他方式登入並輸入金鑰, 然後選取 繼續。
Codex CLI
透過 stdin 將金鑰以管線方式傳給 codex login:
printenv OPENAI_API_KEY | codex login --with-api-key IDE 擴充功能
在未登入畫面上,選取 使用 API 金鑰並輸入金鑰,然後選取 確定。
OpenAI 會透過您的 OpenAI Platform 帳戶,依標準 API 費率收取 API 金鑰的使用費用。請參閱 API 定價頁面。
API 金鑰身分驗證支援本機 Codex 工作流程, 但部分依賴 ChatGPT 工作區存取權或雲端服務的功能會受限或無法使用。 如需比較各方案的支援情況,請參閱 功能可用性。
在 Codex CLI 及 ChatGPT 桌面版應用程式中的 Codex 使用 API 金鑰身分驗證時, 您也能存取受支援的 OpenAI 精選外掛程式。 部分外掛程式無法使用,因為其連線流程需要目前不受支援的 OAuth 功能。 請參閱使用外掛程式。
使用 API 金鑰登入時,Codex 會採用標準 API 定價,而不會使用 ChatGPT 方案內含的點數。
對於以程式執行的 Codex CLI 工作流程,例如 CI/CD 作業,請使用 API 金鑰身分驗證。請勿在不受信任或公開的環境中提供 Codex 執行功能。
檢查身分驗證狀態或登出
開啟個人資料選單,確認目前使用的帳戶和工作區。 若要結束該瀏覽器中的 ChatGPT 網頁版工作階段,請選取 登出。
開啟個人資料選單,查看目前的帳戶或 API 金鑰狀態。 選取登出 即可清除目前的認證資料。
執行 codex login status 以查看目前使用的身分驗證方式。
若使用已儲存的身分驗證資料,請執行 codex logout 以清除目前的認證資料。
當處理程序選用工作負載身分時,Codex 會拒絕 codex login 和
codex logout,因為身分驗證由處理程序環境控制。
開啟個人資料選單,查看目前的帳戶或 API 金鑰狀態。 選取登出 即可清除目前的認證資料。
使用 Codex 存取權杖進行企業自動化
在 ChatGPT Enterprise 工作區中,管理員可授予存取權杖權限,讓獲准的成員建立 Codex 存取權杖,用於受信任的非互動式 Codex 本機工作流程。若自動化作業需要在不透過瀏覽器登入的情況下存取 ChatGPT 工作區、使用由 ChatGPT 管理的 Codex 使用資格,或套用企業工作區控制措施,請使用存取權杖。
存取權杖適用於受信任的指令碼、排程器及私有 CI 執行器。一般 OpenAI API 呼叫則應繼續使用 Platform API 金鑰。
如需設定步驟,以及權限、輪替與撤銷的相關指引,請參閱 存取權杖。
如果您的雲端平台、CI 系統或叢集 已簽發短效工作負載 Token,請使用 工作負載身分聯盟, 而不要儲存 OpenAI 認證資料。
如果您的環境已提供 Codex 存取權杖,請透過管線將它傳給 CLI:
printenv CODEX_ACCESS_TOKEN | codex login --with-access-token 保護您的 Codex 雲端帳戶
Codex 雲端會直接與您的程式碼庫互動,因此需要比許多其他 ChatGPT 功能更嚴密的安全防護。請啟用多因素身分驗證(MFA)。
若使用社群登入供應商(Google、Microsoft、Apple),則不必在 ChatGPT 帳戶上啟用 MFA,但可透過該社群登入供應商設定 MFA。
如需設定說明,請參閱:
若透過單一登入(SSO)存取 ChatGPT,您組織的 SSO 管理員應強制要求所有使用者使用 MFA。
若使用電子郵件地址和密碼登入,必須先為帳戶設定 MFA,才能存取 Codex 雲端。
若您的帳戶支援多種登入方式,且其中一種是電子郵件地址和密碼,即使您使用其他方式登入,也必須先設定 MFA,才能存取 Codex。
登入快取
當您使用 ChatGPT 或 API 金鑰登入 ChatGPT 桌面版應用程式、Codex CLI 或 IDE 擴充功能時,登入資料會儲存至快取並重複使用。CLI 和擴充功能共用同一份快取登入資料。若從任一端登出,下次啟動 CLI 或擴充功能時,就必須重新登入。
Codex 會將登入資料快取於本機的純文字檔案 ~/.codex/auth.json,或作業系統專用的認證資料存放區中。
對於使用 ChatGPT 登入的工作階段,Codex 會在使用期間於 Token 到期前自動更新 Token,因此使用中的工作階段通常能持續進行,不需要再次透過瀏覽器登入。
認證資料儲存
使用 cli_auth_credentials_store 控制 Codex CLI 儲存快取認證資料的位置:
# file | keyring | auto | ephemeral
cli_auth_credentials_store = "keyring"file會將認證資料儲存在CODEX_HOME(預設為~/.codex)下的auth.json中。keyring會將認證資料儲存在作業系統的認證資料存放區中;若該存放區無法使用,則會失敗。auto會在作業系統的認證資料存放區可用時使用該存放區,否則改用auth.json。ephemeral僅在目前處理程序的記憶體中保留憑證。
如需完整的 config.toml 結構描述,請參閱
組態參考資料。
管理員可以透過
本機身分驗證要求,強制設定 cli_auth_credentials_store 和 chatgpt_base_url。
使用者無法透過 config.toml 或 CLI 覆寫設定來覆寫這些要求。
如果使用檔案儲存方式,請像保護密碼一樣保護 ~/.codex/auth.json:其中
包含存取權杖。請勿將其提交至程式碼庫、貼到工單中,或在
對話中分享。
強制指定登入方式或工作區
在受管理的環境中,管理員可以限制使用者可採用的身分驗證方式:
# Only allow ChatGPT login or only allow API key login.
forced_login_method = "chatgpt" # or "api"
# When using ChatGPT login, restrict users to a specific workspace.
forced_chatgpt_workspace_id = "00000000-0000-0000-0000-000000000000"如果目前使用的憑證不符合設定的限制,Codex 會將使用者登出並結束執行。
這些設定也可以透過舊版受管理的設定提供。 如需管理員強制執行登入限制的相關資訊,請參閱 在本機管理身分驗證。
登入診斷
直接執行 codex login 時,會在
設定的記錄目錄中寫入專用的 codex-login.log 檔案。當你需要偵錯瀏覽器登入或
裝置代碼驗證失敗的問題,或支援人員要求提供登入專用記錄時,可以使用這個檔案。
自訂 CA 憑證套件
如果你的網路使用企業 TLS Proxy 或私有根 CA,請在登入前
將 CODEX_CA_CERTIFICATE 設為 PEM 憑證套件。若
未設定 CODEX_CA_CERTIFICATE,Codex 會改用 SSL_CERT_FILE。相同的
自訂 CA 設定會套用至登入、一般 HTTPS 請求,以及安全的 WebSocket
連線。
export CODEX_CA_CERTIFICATE=/path/to/corporate-root-ca.pem
codex login在無頭裝置上登入
使用 Codex CLI 登入 ChatGPT 時,在某些情況下,瀏覽器登入介面可能無法運作:
- 你在遠端或無頭環境中執行 CLI。
- 你的本機網路組態封鎖了 localhost 回呼,而 Codex 會在你登入後透過這個回呼將 OAuth Token 傳回 CLI。
遇到這些情況時,建議優先使用裝置代碼身分驗證(測試版)。在互動式登入介面中,選擇 使用裝置代碼登入,或直接執行 codex login --device-auth。如果裝置代碼身分驗證在你的環境中無法運作,請使用其中一種替代方式。
建議優先使用:裝置代碼身分驗證(測試版)
- 在 ChatGPT 安全性設定(個人帳戶)或 ChatGPT 工作區權限(工作區管理員)中啟用裝置代碼登入。
- 在執行 Codex 的終端中,選擇下列其中一個選項:
- 在互動式登入介面中,選取 使用裝置代碼登入。
- 執行
codex login --device-auth。
- 在瀏覽器中開啟連結並登入,然後輸入一次性代碼。
如果你的環境無法使用裝置代碼登入,請使用下列其中一種 替代方式。
替代方式:在本機完成身分驗證並複製驗證快取
如果你能在具備瀏覽器的電腦上完成登入流程,就可以將快取的憑證複製到無頭電腦。
- 在可使用瀏覽器登入流程的電腦上,執行
codex login。 - 確認登入快取存在於
~/.codex/auth.json。 - 將
~/.codex/auth.json複製到無頭電腦上的~/.codex/auth.json。
請像保護密碼一樣保護 ~/.codex/auth.json:其中包含存取權杖。請勿將其提交至程式碼庫、貼到工單中,或在對話中分享。
如果作業系統將憑證儲存在憑證存放區,而非 ~/.codex/auth.json 中,這個方式可能不適用。請參閱
憑證儲存,瞭解如何設定檔案儲存方式。
透過 SSH 複製到遠端電腦:
ssh user@remote 'mkdir -p ~/.codex'
scp ~/.codex/auth.json user@remote:~/.codex/auth.json或使用不需要 scp 的單行指令:
ssh user@remote 'mkdir -p ~/.codex && cat > ~/.codex/auth.json' < ~/.codex/auth.json複製到 Docker 容器中:
# Replace MY_CONTAINER with the name or ID of your container.
CONTAINER_HOME=$(docker exec MY_CONTAINER printenv HOME)
docker exec MY_CONTAINER mkdir -p "$CONTAINER_HOME/.codex"
docker cp ~/.codex/auth.json MY_CONTAINER:"$CONTAINER_HOME/.codex/auth.json"若要在受信任的 CI/CD 執行器上以更進階的方式運用同一做法,請參閱
在 CI/CD 中維持 Codex 帳戶身分驗證(進階)。
該指南說明如何讓 Codex 在正常執行期間更新 auth.json,
然後保留更新後的檔案供下一個作業使用。自動化仍建議
預設使用 API 金鑰。
替代方式:透過 SSH 轉送 localhost 回呼
如果你能在本機電腦與遠端主機之間轉送連接埠,就可以透過通道連接 Codex 的本機回呼伺服器(預設為 localhost:1455),使用標準的瀏覽器登入流程。
- 從本機電腦啟動連接埠轉送:
ssh -L 1455:localhost:1455 user@remote- 在該 SSH 工作階段中執行
codex login,然後在本機電腦上開啟輸出的網址。
其他模型供應商
在組態檔中定義自訂模型供應商時,你可以選擇下列其中一種身分驗證方式:
- OpenAI 身分驗證:設定
requires_openai_auth = true即可使用 OpenAI 身分驗證。接著,你可以使用 ChatGPT 或 API 金鑰登入。透過 LLM Proxy 伺服器存取 OpenAI 模型時,這個方式很實用。當requires_openai_auth = true時,Codex 會忽略env_key。 - 環境變數身分驗證:設定
env_key = "<ENV_VARIABLE_NAME>",即可使用名稱為<ENV_VARIABLE_NAME>的本機環境變數所提供的供應商專用 API 金鑰。 - 不使用身分驗證:如果未設定
requires_openai_auth(或將其設為false),且未設定env_key,Codex 就會假設供應商不需要身分驗證。這個方式適合本機模型。