3行でいうと
- 手元で使う入り方は、ChatGPTアカウント(既定はブラウザ。ブラウザが使えないときは、ベータのデバイスコード)と、APIキーです。CIなどの自動化には、公式が「APIキーを基本」と書いています。ChatGPTに結びついた認証を無人で使う道として、アクセストークン(BusinessとEnterpriseの機能)、サービスアカウント、ワークロードID(ベータ)が、別のページに用意されています。
- 認証情報の保存場所は、設定
cli_auth_credentials_storeで決まります。~/.codex/auth.jsonは平文のファイルで、公式は「パスワードと同じに扱う」と書いています。CIにこのファイルを置く方法も公式にありますが、条件が多く、公開リポジトリには使わないと明記されています。 - 管理者向けには、ログイン方式やワークスペースを縛る設定、アクセストークンの作成を許す権限、有効期限の上限があります。方式が変わるときは、環境変数の優先順位、片方でのログアウトが両方に効くこと、ワークロードIDが他より先に使われることなど、「いつの間にか別の認証になっていた」が起きる場所に注意が要ります。
この記事は、公式ドキュメントを2026年10月24日に読んでまとめたものです。この記事は、実際に使って確かめた記録ではありません。運営者はCodexを入れていますが、使い心地はこの記事には書いていません。コマンド、設定名、環境変数、画面の項目名は公式の表記を写したもので、動作確認はしていません。公式の文章は要約の形で取得したため、長い引用はせず、ほとんどを言い換えています。権限や契約に関わる所は、公式が書いていることを伝えることを優先しました。セキュリティや契約の助言ではありません。
先に結論
- まず自分の状況を決める。 「自分のパソコンで人が使う」なら、ChatGPTアカウントでのサインインが公式の基本です。「CIや定期実行で、人がいない」なら、公式の第一候補はAPIキーです。
- APIキーで入ると、使えない機能がある。 クラウド(Codex cloud)、GitHubのPRレビュー、Slack連携などは、公式の料金ページの表で「unavailable」です。
- 認証情報のファイルは、鍵そのもの。
auth.jsonには更新用のトークンも入ります。コミット、チケット、チャット、ログに出さない、が公式の書き方です。 - ChatGPTアカウントで無人運転したいなら、道は3つ。 ①
auth.jsonをCIの秘密情報として持ち回る方法(信頼できる私有のランナーのみ)、②アクセストークン(BusinessとEnterprise)、③サービスアカウントやワークロードID(管理された環境向け)です。 - 管理者は、入り方そのものを縛れる。 ローカルのシステムの
requirements.tomlに、ログイン方式、許可するワークスペース、認証情報の保存方式、サービスのURLを書く方法があります。
前提:用語をそろえる
- ChatGPTでサインイン:ChatGPTのアカウントで入る方法です。公式は「サブスクリプションでの利用」と説明しています。
- APIキーでサインイン:OpenAI Platformで発行したキーで入る方法です。ChatGPTのプランに含まれるクレジットは使わず、標準のAPI料金で請求されると、公式は説明しています。
- アクセストークン、サービスアカウント、ワークロードID:ChatGPTのワークスペースの身元で、人がいない作業を動かすための道具です。違いは後の節で説明します。
requirements.toml:管理者が置く「縛り」の設定ファイルです。要件に合わない設定があると、クライアントは合う値に戻してユーザーに知らせる、と Managed configuration のページにあります。ユーザーのconfig.tomlは、その範囲の中での既定値という位置づけです(これは僕らの読みです)。- キーリング(keyring):OSが持つ認証情報の保管庫のことです。
ログイン方式を並べる
公式のAuthenticationのページ、アクセストークンやサービスアカウントなどのページ、料金のページを合わせて、方式を並べました。「公式のどこに」の列は、僕らが読んだページです。
| 方式 | 使える場所 | 請求・権限の考え方 | 公式のどこに書かれているか |
|---|---|---|---|
| ChatGPTでサインイン(ブラウザ) | デスクトップアプリ、CLI、IDE拡張。Codex cloudはこれが必須 | サブスクリプション。ワークスペースの権限が効く | Authentication |
| ChatGPTでサインイン(デバイスコード) | CLI。ブラウザの使えない環境向け。公式はベータと書く | 同上。事前に設定画面で有効にする必要がある | Authentication |
| APIキー | CLI、デスクトップアプリ、IDE拡張、SDK、codex exec |
API料金で従量課金。APIの組織の保持・データ共有の設定に従う | Authentication、Pricing |
| アクセストークン(個人) | CLIの codex exec、アプリサーバーなどの信頼できる自動化 |
作った人として動く。BusinessとEnterpriseのワークスペース向けと書かれている | Codex access tokens |
| サービスアカウントのトークン | 同上。CLI 0.142.0以降が必要と書かれている | 人ではなくアカウントとして動く。サービスアカウントは従量課金のプランにある | Service accounts |
| ワークロードID | Codexの実行環境(環境変数とトークンのファイル) | 一時的なトークンに交換される。ベータで、ワークスペースごとに有効化が必要 | Workload identity federation |
| 組織のゲートウェイ | ローカルのクライアント。ゲートウェイのURLと資格情報を組織が配る | ゲートウェイ側の管理。設定は後の節 | Connect to a gateway |
| Amazon Bedrock | CLI、アプリ、IDE、SDK、codex exec |
AWSの資格情報。ChatGPTサインインも OPENAI_API_KEY も使わない |
Use Codex with Amazon Bedrock |
Codexのクラウド(Codex cloud)は、ChatGPTでのサインインが必須です。これは前のガイド(01)に書いたとおりで、今回読んだ認証のページにも同じ記載があります。
手元で使う:入り方の手順
画面ごとの入り方
公式のAuthenticationのページに、画面ごとの手順があります。
| 画面 | ChatGPTで入る | APIキーで入る | ログアウト |
|---|---|---|---|
| Web | chatgpt.comでサインインし、ワークスペースを選ぶ | (ページには書かれていない) | プロフィールのメニュー |
| デスクトップアプリ | 「Continue to sign in」 | 「Sign in another way」 | プロフィールのメニュー |
| CLI | codex login(認証情報がなければ既定でこれが始まる) |
printenv OPENAI_API_KEY \| codex login --with-api-key |
codex logout |
| IDE拡張 | 「Sign in with ChatGPT」 | 「Use API Key」 | プロフィールのメニュー |
CLIのコマンド
公式の例は、次のとおりです。
# ブラウザでChatGPTにログイン(既定)
codex login
# APIキーでログイン(標準入力から渡す)
printenv OPENAI_API_KEY | codex login --with-api-key
# アクセストークンでログイン(標準入力から渡す)
printenv CODEX_ACCESS_TOKEN | codex login --with-access-token
# デバイスコードでログイン
codex login --device-auth
# 今の方法を確かめる / 保存した認証情報を消す
codex login status
codex logout
- キーを
--with-api-keyに標準入力で渡す形なので、コマンドの引数にキーそのものを書かずに済みます。これは僕らの読みで、公式がこの理由を述べているわけではありません。 codex login statusは、認証情報があれば終了コード0で終わり、自動化のスクリプトで使える、とコマンド一覧のページにあります。codex logoutは、APIキーとChatGPTの両方の保存済み認証情報を消し、フラグはない、と書かれています。セッションの中の/logoutは、現在のユーザーのローカルの認証情報を消します。- ワークロードIDが環境変数で選ばれているときは、
codex loginとcodex logoutは拒否されます(Authenticationのページ)。 - 個々のフラグの細かい説明(フラグの表)は、コマンド一覧のページの要約には含まれておらず、読めていません。手元で
codex login --helpを見るのが確実です。
最初の10分(公式に書かれている範囲)
codex login statusで、すでにログインしているかを見る。- していなければ
codex loginを実行し、ブラウザでサインインする。 - 請求や機能の都合でAPIキーを使うなら、
printenv OPENAI_API_KEY | codex login --with-api-key。 - 入れたら、CLIの中の
/statusで、今のモデルや設定を見る(01で書いたコマンドです)。 - ログアウトは
codex logout。CLIとIDE拡張は同じ保存済み認証情報を共有するので、片方でログアウトすると、もう片方でも入り直しになります。 - 思った方式で入れていないとき(ここは僕らの整理です):ログイン画面の前に、環境変数を見ます。公式には、非対話で
CODEX_API_KEYやCODEX_ACCESS_TOKENが使われること、ワークロードIDの変数(OPENAI_FEDERATION_RULE_ID、OPENAI_IDENTITY_TOKEN_FILE)を置くとAPIキーや保存済みのログインより先に使われること、が書かれています。たとえばprintenv | grep -E 'CODEX_API_KEY|CODEX_ACCESS_TOKEN|OPENAI_FEDERATION_RULE_ID|OPENAI_IDENTITY_TOKEN_FILE'で、残っているものがないかを探し、そのうえでcodex login statusと/statusを見ます。
APIキーで入ると何が変わるか
公式の料金ページ(日付の記載なし)の機能の一覧表から、APIキーの列を読みました。表は、Plus、Pro、Business、Enterprise/Edu、APIキーの列があります。
| 区分 | 公式の表の内容(APIキーの列) |
|---|---|
| 使える(available) | Codex CLI、IDE拡張、SDKと codex exec とスクリプト、デスクトップアプリのローカルのチャット、Fastモード、Ultrafast、画像の生成と編集、Web検索、ローカルの /review、自動レビュー、サンドボックス、スケジュールされたタスク、worktree、AGENTS.md、スキル、MCP、サブエージェント、requirements.toml など |
| 一部だけ(limited) | ブラウザでのComputer Use、Chromeのブラウザ操作、Memories、プラグイン(一部の公式プラグインは使えない)など |
| 使えない(unavailable) | Codex cloud、クラウドのチャット、クラウド環境、インターネットの制御、GitHubへの委任(@codex)、GitHubのPRレビュー、Slack連携、Linear連携、ChatGPT Workのウェブ版、コネクタ、プラグインの共有、音声入力、モバイルからの遠隔操作。管理、セキュリティ、分析の行は、requirements.toml と「APIや業務データを既定で学習に使わない」の行が使え、「SAML SSO、MFA、ユーザー管理」「クラウドのポリシー」「RBACとカスタムロール」「SCIM、EKM、ドメイン認証」「保持と居住地の制御」「分析(ダッシュボードとAPI)」「Compliance APIと監査ログ」の行は使えない |
- 料金ページは、APIキーの利用はAPIのモデルの提供状況に従う、と書いています。請求はAPI料金で、クレジットの表は当てはまりません。
- Authenticationのページも、APIキーの認証はローカルの作業に使えるが、ChatGPTのワークスペースやクラウドに頼る機能は制限される、と書いています。
- 「ChatGPTのワークスペースのRBACや保持の設定」が効くのは、ChatGPTでサインインしたとき。APIキーのときは、APIの組織の保持とデータ共有の設定が効く、とAuthenticationのページにあります。どちらの設定の下で動いているかは、入り方で変わります。
- Work Cloudの「ローカルコンピュータへのアクセス」は、ChatGPTで入った適格なワークスペースが前提で、APIキーとアクセストークンでは有効になりません。
保存場所と取り扱い
ログイン情報はどこに置かれるか
Authenticationのページによると、ログインはキャッシュされて再利用され、トークンは使用中に自動で更新されます。置き場所は次のとおりです。
設定 cli_auth_credentials_store の値 |
意味(公式の説明) |
|---|---|
file |
CODEX_HOME(既定は ~/.codex)の auth.json。平文のファイル |
keyring |
OSの認証情報の保管庫。使えないと失敗する |
auto |
保管庫が使えれば保管庫、なければファイル |
ephemeral |
そのプロセスの間だけメモリに置く |
- Sample Configurationの設定例では、この設定の既定は
"file"で、コメントに挙がっている値はfile、keyring、autoの3つです。設定リファレンス(Config reference)とAuthenticationのページには、ephemeralを含む4つが載っています。Sample Configurationの書き方が古いのか省略なのか、日付がなく分かりません。使う前に、手元の版のドキュメントで確かめてください。 auth.jsonは、ファイル保存を使うときのものです(Advanced Configurationのページ)。キーリングを使っていれば、認証情報はOSの保管庫に入ります。- CLIとIDE拡張は、保存された資格情報を共有します(Authentication)。
CODEX_HOMEを自分で設定するなら、そのフォルダは先に存在している必要があります(環境変数のページ)。
公式が書いている取り扱いの注意
~/.codex/auth.jsonはパスワードと同じに扱う。コミットしない、チケットに貼らない、チャットで共有しない(Authentication、CI/CDの認証のページ)。- ログやCIの公開の成果物にも出さない(CI/CDの認証のページ)。
- ワークスペースのコードを動かすジョブの環境変数に、
OPENAI_API_KEYやCODEX_API_KEYを置かない。ビルドのスクリプト、テスト、依存関係のライフサイクルフックから読まれうるため(非対話モードのページ)。 - プロジェクトの
.codex/config.tomlは、信頼したプロジェクトでしか読まれません。そのうえで、openai_base_url、chatgpt_base_url、model_provider、model_providers、profile、profiles、notify、otelなどは、プロジェクト側では無視され、起動時に警告が出ます。資格情報の送り先を変える設定は、ユーザーの~/.codex/config.tomlに置きます(Advanced Configuration)。
ほかに知っておく設定
- 会社のプロキシ。
CODEX_CA_CERTIFICATEに、会社のTLSの検査用や私的な根の認証局のPEMファイルを指定できます。未設定のときはSSL_CERT_FILEが使われます。ログイン、HTTPS、安全なWebSocketの接続に効くと書かれています。 - MCPのOAuthは別の保管先。
mcp_oauth_credentials_store(auto、file、keyring)で、Codex本体のログイン用の設定とは別です(Sample Configuration)。 - Bedrockの資格情報。 デスクトップアプリとIDE拡張は、シェルの環境変数を引き継がないことがあります。その場合は
~/.codex/.env(Windowsは%USERPROFILE%\.codex\.env)に書いて、再起動します(Bedrockのページ)。
ブラウザが使えない場所で入る
Authenticationのページの「Headless login」の節に、3つの方法が書かれています。前のガイド(01)では、この点は「認証のページには書かれていませんでした」と書きましたが、今回の確認で、記載があることが分かりました。
- デバイスコード(ベータ)。 公式が優先する方法です。使うには、個人なら ChatGPT のセキュリティ設定、管理者ならワークスペースの権限で、デバイスコードでのログインを有効にしておく必要があります。CLIでは
codex login --device-auth、対話の画面では「Sign in with Device Code」を選びます。 - ブラウザのあるマシンでログインして、
auth.jsonをコピーする。 ページには、ssh、scp、catを使う例とdocker cpの例があります。認証情報がOSの保管庫にある場合は当てはまらないかもしれない、とも書かれています。 - コールバックの転送。
ssh -L 1455:localhost:1455 user@remoteで、既定のポート1455を手元に転送し、そのセッションでcodex loginを実行します。
ブラウザでのログインが失敗しうる場面として、公式は、遠隔やヘッドレスのホスト、localhostのコールバックが塞がれている場合を挙げています。
CIや自動化での認証
まず方式を選ぶ
公式は、APIキーで足りるなら、そちらを使うよう繰り返しています。Authenticationのページは、CI/CDにはAPIキーを勧めると書き、CI/CDの認証のページも、ほとんどのジョブはAPIキー、と書いています。アクセストークンのページにも、Platformのキーで動く自動化には、APIキーを使うよう書かれています。ChatGPTのアカウントに結びついた認証が必要なときだけ、以下の3つ(auth.json の持ち回し、アクセストークンやサービスアカウント、ワークロードID)に進みます。選び方の整理は、後の節にまとめました。
APIキーを渡す(基本形)
非対話モードのページの書き方です。1回の実行にだけキーを渡します。
CODEX_API_KEY=<api-key> codex exec --json "triage open bug reports"
CODEX_API_KEYが使えるのは、codex exec、codex review、TypeScriptのSDK、codex exec-server --remoteです(非対話モードのページ)。- GitHub Actionsでは、公式のActionを使います。キーは
openai-api-key: ${{ secrets.OPENAI_API_KEY }}の形で渡し、キーを渡したときだけ、Responses APIのプロキシが起動します。sudoを外すsafety-strategyなどは、前のガイド(04)に書いたとおりです。
auth.json を持ち回す(ChatGPTのアカウントで動かす上級の方法)
「Maintain Codex account auth in CI/CD」のページは、公式が上級(advanced)と位置づけるものです。要点は次のとおりです。
- 条件。 次の5つがすべて当てはまるとき、と書かれています。ChatGPT管理の認証が必要(APIキーでは足りない)、ランナーで
codex loginできない、ランナーが信頼できる私有の環境、更新後のauth.jsonを実行の間で保てる、1つのauth.jsonを使うのが1台か直列のジョブの流れだけ。 - 対象外。
auth_mode: "chatgpt"のときだけが対象です。APIキーでの認証、外部トークンを渡す連携、一般のOAuthクライアントは対象外です。キーリング保存は未対応で、先にファイル保存に切り替える必要があります。公開リポジトリやオープンソースには使わない、とも書かれています。 - 仕組み。 公式の説明では、現在のオープンソースのクライアントは、
auth.jsonのlast_refreshが約8日より古いとき、実行を続ける前にトークンを更新し、成功すると新しいトークンとlast_refreshをファイルに書き戻します。401が返ったときの更新と再試行の経路もあります。そのため「更新用の別コマンドは要らず、普通のCodexの実行が更新を兼ねる」と書かれています。 - 最初に1回だけ(種まき)。 信頼できるマシンで、
cli_auth_credentials_store = "file"にしてcodex loginを実行し、次のコマンドで中身を確かめます。
AUTH_FILE="${CODEX_HOME:-$HOME/.codex}/auth.json"
jq '{
auth_mode,
has_tokens: (.tokens != null),
has_refresh_token: ((.tokens.refresh_token // "") != ""),
last_refresh
}' "$AUTH_FILE"
auth_mode が "chatgpt" で、has_refresh_token が true のときだけ進めます。そのファイルの中身を、CIの秘密情報の保管先に入れるか、信頼できる常設のランナーにコピーします。
方式A:常設のセルフホストランナー
ランナーが CODEX_HOME をジョブの間で保つ方式です。公式の例は、毎週月曜に動くワークフローです。ファイルがないときだけ秘密情報から作る、という点が重要で、毎回上書きすると、Codexが更新したトークンを捨ててしまう、と公式は書いています。
name: Keep Codex auth fresh
on:
schedule:
- cron: "0 9 * * 1"
workflow_dispatch:
jobs:
keep-codex-auth-fresh:
runs-on: self-hosted
steps:
- name: Bootstrap auth.json if needed
shell: bash
env:
CODEX_AUTH_JSON: ${{ secrets.CODEX_AUTH_JSON }}
run: |
export CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
mkdir -p "$CODEX_HOME"
chmod 700 "$CODEX_HOME"
if [ ! -f "$CODEX_HOME/auth.json" ]; then
printf '%s' "$CODEX_AUTH_JSON" > "$CODEX_HOME/auth.json"
chmod 600 "$CODEX_HOME/auth.json"
fi
- name: Run Codex
shell: bash
run: |
codex exec --json "Reply with the single word OK." >/dev/null
方式B:使い捨てのランナー
GitHubのホストランナーのように、ジョブごとにファイルが消える環境では、「戻す、動かす、書き戻す」の往復にします。公式の例では、my-secret-cli は、自分の秘密情報管理の道具に置き換える仮の名前です。
name: Run Codex with managed auth
on:
workflow_dispatch:
jobs:
codex-job:
runs-on: ubuntu-latest
steps:
- name: Restore auth.json
shell: bash
run: |
export CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
mkdir -p "$CODEX_HOME"
chmod 700 "$CODEX_HOME"
# Replace this with your secret manager or secure storage command.
my-secret-cli read codex-auth-json > "$CODEX_HOME/auth.json"
chmod 600 "$CODEX_HOME/auth.json"
- name: Run Codex
shell: bash
run: |
codex exec --json "summarize the failing tests"
- name: Persist refreshed auth.json
if: always()
shell: bash
run: |
# Replace this with your secret manager or secure storage command.
my-secret-cli write codex-auth-json < "$CODEX_HOME/auth.json"
書き戻すのは、種のファイルではなく、実行中にCodexが作ったファイルです。書き戻しの手順に if: always() が付いているのは、Codexが失敗しても書き戻すためです。
運用のルールと、やり直し(公式の記載)
- 1つの
auth.jsonは、1台のランナーか、直列の1本のワークフローで使う。同時に動くジョブや複数のマシンで共有しない。 - 長く放置すると保証はない、と公式は書いています。次の場合は、信頼できるマシンで
codex loginをやり直し、保管してあるコピーを入れ替えます。Codexが401を返し、ランナーが更新できなくなった。更新用トークンが取り消されたか期限切れ。別のマシンや同時のジョブが先にトークンを回してしまった。保管先の往復に失敗して古いファイルが戻った。
アクセストークンを使う(BusinessとEnterprise)
「Codex access tokens」のページの内容です。
- 対象のプラン。 ページは、いまのところBusinessとEnterpriseのワークスペースだけ対応と書いています。料金ページの表では、自動化のアクセストークンは、PlusとProでは「unavailable」、BusinessとEnterprise/Eduでは「available」でした。料金ページの列は「Enterprise/Edu」とまとめてあり、アクセストークンのページ自体は、Eduに触れていません。Authenticationのページは、「ChatGPT Enterpriseで管理者が許可を与えられる」と書いており、ページごとに書き方が少し違います。
- 性質。 トークンは、作ったユーザーとそのワークスペースに属します。実行はそのユーザーとして行われ、ワークスペースのガバナンスのデータに現れます。
- 使い方。 公式が自動化に勧めるのは、環境変数で渡す形(保存されない)です。
export CODEX_ACCESS_TOKEN="<access-token>"
codex exec --json "review this repository and summarize the top risks"
保存したいときは、標準入力から渡します。この場合、エージェントの身元の資格情報がCLIの認証の保存先に保存されます。公式は、マシンに資格情報を残したくないなら環境変数を使うよう書いています。
printf '%s' "$CODEX_ACCESS_TOKEN" | codex login --with-access-token
codex exec "summarize the last release diff"
- アプリサーバー。
codex app-serverも、CODEX_ACCESS_TOKENか、--with-access-tokenで作ったログインで、OpenAIへの要求を認証できます。これは、クライアントとアプリサーバーの間の通信の認証とは別のもので、遠隔のWebSocketでは別のトークンを用意し、アクセストークンを使い回さないよう書かれています。 - スコープ。 作成ダイアログに「Scopes」が出るなら、Codexの自動化には「Codex」、エージェントのトリガーには「Workspace Agents」を選びます。Codexだけのトークンでは、ワークスペースのエージェントのトリガー呼び出しは認証できません。必要なものだけを付ける、と書かれています。
- リスク(公式の記載)。 漏れたら、持っている人が作成者としてCodexを動かせます。公開CI、フォークされたプルリクエスト、共有のマシンでは使わない。時間制限つきのトークンを選び、使っていないものは取り消す。ワークフローの持ち主ごとに作り、監査の記録が追えるようにする。
- トークンの種類の取り違え。
--with-access-tokenが失敗するときは、ブラウザのセッショントークンやPlatformのAPIキーではなく、生成したアクセストークンをコピーしたか、有効で期限内か、ローカルのCodexの権限を持つユーザーのものか、を確かめるよう書かれています。
サービスアカウント(人に紐づけない身元)
「Service accounts」のページの内容です。
- 位置づけ。 CIのランナー、定期ジョブ、共有の連携のための、人ではない身元です。グループ、ロール、アクセス制御、監査記録は、人と同じ仕組みを使います。個人のアクセストークン、およびAPIのプロジェクトのサービスアカウントやAPIキーとは別物です。
- プラン。 ページは、従量課金のプランにだけ含まれる、と書いています。
- 作る人。 作成、削除、共有ができるのは、ワークスペースのオーナーと管理者だけです。
- 作り方。 ワークスペースの設定の「Service accounts」を開き、「+」で名前(例:
release-automation)を付けて作成。アカウントの画面で「Access tokens」の「Create token」を選び、名前、スコープ「Codex」、有効期限を決めます。トークンは1回しか表示されません。 - 使い方。 サービスアカウントのトークンには、Codex CLI 0.142.0以降が必要と書かれています。
CODEX_ACCESS_TOKENを設定してcodex execを動かします。共有や一時的なランナーでは、codex login --with-access-tokenで保存しない、と書かれています。 - 後始末。 無効化も削除も、有効なトークンをすべて取り消します。削除は元に戻せません。漏れたトークンは、すぐに取り消し、そのあとアカウントの最近の活動を見るよう書かれています。
ワークロードID(ベータ)
OpenAIのWorkload identity federationのページと、環境変数のページ、フェデレーションルールの参照ページを読みました。
- 何か。 信頼できるワークロードが、OpenAIのAPIキーやChatGPTの資格情報を保存せずにアクセスする方法です。すでに使っているIDの提供元から短命のトークンを受け取り、OpenAIが検証し、管理者が決めた対応づけに照らして、短命のOpenAIのトークンを返します。交換は、ユーザーやプロジェクトやワークスペースの所属を新しく作りません。
- ベータ。 Codexのワークロードアイデンティティ連携は、公式がベータと書いており、ワークスペースごとに有効化が必要で、OpenAIの担当者かサポートに依頼する、とあります。
- Codex側の変数。
OPENAI_FEDERATION_RULE_ID(対応づけのルールのID)、OPENAI_IDENTITY_TOKEN_FILE(現在のOIDCトークンかSPIFFE JWT-SVIDが入ったファイルの絶対パス)、任意のOPENAI_WORKLOAD_IDENTITY_CONTEXT(監査用の識別子。認証や認可には影響しない)です。「必須は2つ」という書き方はワークロードIDのページにあり、変数の名前は環境変数のページと管理APIのページから拾いました(合わせた読みです)。 - 確認。 新しいプロセスで設定を読み込み、
codex login statusで確かめる、と書かれています。 - 優先順位に注意。 必須の変数のどちらかを設定すると、CodexはAPIキー、アクセストークン、保存済みのログインより先に、ワークロードIDを使う、とページに警告があります。思いがけず古い資格情報が使われていないか確かめるよう書かれています。
- ルールの考え方。 1つのルールは、ワークスペースの既存の1つのプリンシパル(ユーザーかサービスアカウント)にだけ対応し、複数の外部の主体を受け付けられます。確認は、subject、受け付ける audience、完全一致のクレーム、CEL条件で、subject・クレーム・CELのどれか1つ以上が必要です。トークンの寿命は60〜3,600秒で、公式は10分を出発点として挙げています。
- 注意(公式の記載)。 特権のあるワークロードには、広い接頭辞を使わない。audience の一致だけでは、ワークロードの特定にならない。アーカイブは元に戻せず、無効化は再有効化できると書かれています。僕らの読みでは、一時的に止めるなら無効化のほうが安全です。
- 管理。 管理者は、管理画面(Codexでは提供元の種類として「Custom OIDC」を選ぶ)か、管理者用のAPIキーを使うAPIで設定します。管理者用のキーはCodexの実行時の認証には使わない、と書かれています。
読めていない所:提供元ごとの手順(GitHub Actions、Kubernetes、AWS、Azure、Google Cloudなど)のページと、トークン交換のAPIの細部です。また、ワークロードIDのCodex向けの案内ページ(learn.chatgpt.comの「workload-identity」)は、取得に失敗しました。
チーム・管理者向けの設定
権限:誰が何をできるか
「Roles and workspace permissions」と「Admin setup」のページから、認証に関わる所を整理します。
- 組み込みのロール。 Owner、Admin、Member、Analytics Viewer。ロールは管理の権限、シートは触れる画面を決めます。
- カスタムロール。 ownerが作れます。権限は「Default」「On」「Off」の3状態で、通常の権限は足し算です。どれか1つのロールが「On」なら、別のロールが「Off」でも許可されます。
- Codexに関わる権限の表示名。 「Allow members to use Codex and Work Locally」(まとめて出る画面)、「Allow members to use Codex locally」と「Use Work locally」(分かれて出る画面)、「Use Codex in the cloud」、「Manage workspace environments」(既定はオフ)。ワークスペースによって、まとめて出るか分かれて出るかが違います。
- ページが書いていないこと。 Adminが上のCodexの権限を変えられるかどうかは、ページに書かれていません。権限を任せる前に、ヘルプセンターで確かめるよう書かれています。アクセストークンの権限は、ownerだけが与えたり外したりできると、アクセストークンのページに書かれています。
- Enterpriseのクラウド。 Codex Cloudは、Enterpriseのワークスペースでは既定でオフと書かれています。
アクセストークンを許可する手順(公式の書き方)
ownerが https://chatgpt.com/admin/permissions(Workspace settings > Permissions & roles)で行います。
- 「Access tokens」の節が出ていれば、「Allow users to create personal access tokens」をオンにする。
- 出ていなければ、「Codex and Work Local」または「Codex Local」の下の「Allow members to use Codex access tokens」をオンにする。
- ワークフローの持ち主に、ローカルのCodexの権限(「Allow members to use Codex and Work Locally」か「Allow members to use Codex locally」)を与える。「Use Work locally」はWork用で、Codexのトークンには要らない。
注意点は3つです。アクセストークンの権限だけでは、アプリ、CLI、IDEの利用は許可されません。トークンで動かすには、トークンの権限とローカルのCodexの権限の両方が要ります。ローカルのCodexの権限を無効にすると、そのメンバーの有効なトークンは停止(一時的)されますが、取り消されません。権限を戻すと再開します。完全に終わらせるには、取り消します。
有効期限の上限。 同じ権限の画面にある「Access token expiration limit」で、メンバーが選べる最長の有効期間を決めます。すでにあるトークンには効かず、新しく作るものだけが対象です。
トークンの作成。 https://chatgpt.com/admin/access-tokens で「Create」を選び、わかりやすい名前(例:release-ci、nightly-docs-check)を付けます。「Scopes」が出れば「Codex」を選びます。有効期間は、7、30、60、90日から選び、いちばん短い任意の期間は1日です。スコープ付きのトークンは必ず期限が要ります。以前のCodexだけのダイアログには「No expiration」が出ることがあり、公式は、組織が承認し、決まった周期で更新する場合以外は避けるよう書いています。コピーできるのは作成直後の1回だけです。
取り消し。 ownerと管理者は、ワークスペースのどのトークンも取り消せます。アクセストークンの権限を持つメンバーは、自分で作ったものだけを取り消せます。期限切れや取り消し済みのトークンでは、新しい認証つきの実行を始められません。
| できること | owner・admin | トークンの権限を持つメンバー | 持たないメンバー |
|---|---|---|---|
| アクセストークンのページを開く | できる | できる | できない |
| トークンを作る | できる(自分の身元で) | できる(自分の身元で) | できない |
| トークンの一覧 | ワークスペース全体(作成者つき) | 自分のものだけ | できない |
| 取り消し | どのトークンも | 自分のものだけ | ページに入れない |
| トークンの権限を与える・外す | ownerのみ | できない | できない |
ログイン方式やワークスペースを縛る
ここは、公式のページの間で書き方が分かれている所なので、分けて書きます。
Managed configurationのページ。 管理者がローカルのシステムの requirements.toml、またはmacOSのMDMの要件に置くと、認証情報が読み込まれる前、クラウドのポリシーを取得する前に効く4つのキーがあります。
| キー | 役割 |
|---|---|
allowed_login_methods |
chatgpt、api、またはその両方。api にはAmazon Bedrockが含まれる。省略すると制限なし。設定するなら少なくとも1つが必要 |
allowed_chatgpt_workspaces |
ChatGPTのログインを、挙げたワークスペースIDに制限する。Codexのアクセストークンにも効く |
cli_auth_credentials_store |
認証情報の保存方式(例:keyring) |
chatgpt_base_url |
サービスのURL |
allowed_login_methods = ["chatgpt"]
allowed_chatgpt_workspaces = ["00000000-0000-0000-0000-000000000000"]
cli_auth_credentials_store = "keyring"
- ワークスペースが1つも合わなければ、ChatGPTのログインは使えなくなります。APIでの認証は、許されていれば使えます。使えるログイン方式がなくなると、Codexは起動を拒否します。
- 置き場所は、Unix系では
/etc/codex/requirements.toml、Windowsでは%ProgramData%\OpenAI\Codex\requirements.tomlです。macOSのMDMでは、com.openai.codexの設定ドメインに、base64にしたTOML(requirements_toml_base64)を置きます。 - クラウドから配る要件には、この4つのキーは載せられません(クラウド側では無視される)と書かれています。
- 置いたあとの確かめ方。 要件ファイルを置いたあとに、本当に効いているかを確かめる手順は、Managed configurationのページには書かれていませんでした。書かれている近い記述は、要件と合わない設定があるとクライアントは合う値に戻してユーザーに知らせること、使えるログイン方式がなければ起動を拒むこと、の2つです。管理画面の「Test policies」は、どの方針が選ばれるかを示すだけで、最終的な設定やクライアントが強制しているかは示さない、とも書かれています(この機能の説明はクラウドのポリシーの文脈です)。僕らの整理として、置いたあとは、実際のクライアントで
codex login statusを見て、許可していない方式でのログインが拒まれるかを、テスト用の端末で確かめるのが現実的です。この手順は公式の記載ではありません。 - 要件の優先順位(弱い順)は、システムの
requirements.toml、クラウドの要件、旧式のmanaged_config.tomlを要件として読み替えたもの、macOSのMDM、です。
Authenticationのページ。 ユーザー側の設定として forced_login_method("chatgpt" か "api")と forced_chatgpt_workspace_id が書かれており、認証情報が合わないとCodexはログアウトして終了する、とあります。管理者は、cli_auth_credentials_store と chatgpt_base_url を、ローカルの認証の要件で強制でき、ユーザーは上書きできません。
ページ間の違い(僕らの読み)。 Managed configurationのページは、forced_login_method と forced_chatgpt_workspace_id を、管理者が強制できる要件のキーとしては挙げていません。ユーザーがこれらを自分で設定した場合は、要件に従う必要がある、と書いています。管理者が「縛る」目的で書くなら、allowed_login_methods と allowed_chatgpt_workspaces が、このページで挙がっているキーです。前のガイド(01)は、Authenticationのページの forced_* の記述をもとに書いたもので、今回、管理設定のページを読んで、こちらを補います。どちらのページが新しいかは、日付がなく分かりません。
SSOとMFA
- Codex cloudはMFAが必須です。Google、Microsoft、Appleでのログインのユーザーは、ChatGPT側でMFAを求められませんが、提供元側で設定できます。SSOの管理者はMFAを強制するよう書かれています。メールとパスワードのユーザーは、他のログイン方法があっても、Codex cloudを使う前にMFAを設定する必要があります(Authentication)。
- SSOやMFAの設定手順は、Admin setupのページには書かれていませんでした。
組織のゲートウェイやクラウドを経由する
自分のOpenAIのアカウントを使わず、組織が用意した入口を通る使い方です。
組織のモデルゲートウェイ
「Connect to a gateway」のページは、ゲートウェイのURL、モデル名、資格情報(またはトークンを返す仕組み)を組織が用意する形を説明しています。
- 資格情報は2通りです。
env_keyで環境変数を読む、または[model_providers.<id>.auth]のcommandで、トークンを標準出力に出すヘルパーを動かす。両方は設定しないと書かれています。 - ヘルパーは、トークンを標準出力に出すコマンドです(設定リファレンス)。
refresh_interval_msは更新の間隔で、既定は300000、0にすると認証の再試行のあとだけ更新されます。設定リファレンスには、コマンドの最長実行時間timeout_ms(既定5000)もあります。標準入力の扱い、空白の除去、空の出力の扱いは、読めた範囲では確認できていません。 - 資格情報は、TOMLやリポジトリに置かず、組織の秘密情報の仕組みで配るよう書かれています。ターミナルで設定した変数が、デスクトップから起動したアプリに届かないことがある、とも注意されています。
- ゲートウェイの資格情報は、MCPサーバーやプラグインへのアクセスは与えません。別に設定します。
- 成功した応答は、どの経路で処理されたかの証明ではない、とあります。ゲートウェイのログで、ユーザー、モデルの別名、上流の経路を管理者に確認してもらうよう書かれています。
「Sign in with ChatGPT through a gateway」のページは、ゲートウェイを残したまま、ユーザーはChatGPTのワークスペースでサインインする構成です。ChatGPTのトークンは Authorization: Bearer で、ゲートウェイ用の資格情報は別の道で送ります。方式Aは、既存の資格情報のコマンドの出力を起動時に GATEWAY_KEY として渡す形で、Codexは更新しないので、期限が切れたら取得し直して再起動します。方式Bは、Codexがゲートウェイへのサインインと更新を管理する形で、ゲートウェイ側にOAuthの認可サーバーが要ります。方式Bはブラウザが必要で、デバイスコードの代わりはない、と書かれています。どのプランが対象か、ベータかどうかは、ページに書かれていませんでした。
Amazon Bedrock
「Use Codex with Amazon Bedrock」のページによると、Bedrockは、ChatGPTサインインも OPENAI_API_KEY も使わない唯一のプロバイダーです。認証は次の順で調べられます。
- Bedrockのキー(ベアラートークン)。
AWS_BEARER_TOKEN_BEDROCKとAWS_REGIONの両方を設定します。公式は、この順で調べると書き、意図しないキーが別の経路を選ばないよう確認することを勧めています。僕らの読みでは、順序から、古いAWS_BEARER_TOKEN_BEDROCKが残っているとSDKの資格情報より先に使われます。SDKの資格情報を使いたいときは、その変数を外して確かめてください。 - AWS SDKの資格情報の連鎖。
aws configure、環境変数(AWS_ACCESS_KEY_IDなど)、aws login、aws sso login --profile ...とAWS_PROFILE、会社のSSOやOIDCは AWSプロファイルのcredential_processヘルパーで扱う、という書き方です。
Bedrockでは、Codex cloud、コネクタ、GitHub・Slack・Linearのクラウド連携、管理・RBAC・SCIM・分析などが使えません。ローカルのCLI、アプリ、IDE、SDK、requirements.toml は使えます。プロバイダーの名前は、amazon-bedrock-runtime(新しい設定向けに推奨)と、amazon-bedrock です。クライアントを再起動したあと、/status でプロバイダーを確かめるよう書かれています。
認証が変わるときの注意
- 環境変数が、ログインより先に効くことがある。 非対話では
CODEX_API_KEYやCODEX_ACCESS_TOKENが使われます。BedrockではAWS_BEARER_TOKEN_BEDROCKが先です。ワークロードIDの変数は、APIキー、アクセストークン、保存済みのログインより優先されます。意図しない認証で動いていないか、codex login statusと、CLIの/statusで確かめます。Codex全体の優先順位を1つの一覧にした表は、読んだ範囲では見つかりませんでした。 - 片方でログアウトすると、もう片方にも効く。 CLIとIDE拡張は、保存済みの認証情報を共有します。
- 管理者の設定と合わないと、ログアウトして終了する。
forced_login_methodやforced_chatgpt_workspace_idに合わない認証情報だと、Codexはユーザーをログアウトして終了します。要件でallowed_login_methodsに合う方式がなくなると、起動しません。会社のパソコンで、ある日急に入れなくなったら、まず管理設定を疑います(これは僕らの見立てです)。 - トークンには期限がある。 期限切れや取り消し済みのトークンでは、新しい実行を始められません。更新は「新しいものを作る、設定を更新する、確認する、古いものを取り消す」の順です。ローカルのCodexの権限を外した場合は、取り消しではなく停止で、権限を戻すと再開します。
- モデルの退役は、入り方によって当たり方が違う。 料金ページによると、GPT-5.5は2026年10月14日の正午(太平洋夏時間)に、ChatGPTサインインのCodexから退役します。APIキーのセッションは対象外とあります。この日付は、10月24日の時点ではすでに過ぎています。
- バージョンの条件。 サービスアカウントのトークンはCLI 0.142.0以降(Service accountsのページ)、許可プロファイルの許可リストは0.138.0以降(Managed configurationのページ)と、公式に書かれています。古いCLIでは、設定が無視されることがあります。
僕らの整理:選び方
ここからは僕らの整理です。公式の記載から組み立てたもので、公式の推奨そのものではありません。
選び方。
- 自分のパソコンで、人が使う:ChatGPTアカウントでサインイン。
- ブラウザの使えないサーバーで、人が使う:まずデバイスコード(ベータ。事前に有効化が必要)。だめなら、ポートの転送。
auth.jsonのコピーは最後の手段にする。 - CIで、リポジトリのコードを動かす:APIキーを、Codexのステップにだけ渡す。ジョブ全体には置かない。
- 組織で、ワークスペースの履歴や監査に載せたい自動化:アクセストークン(BusinessとEnterprise)か、サービスアカウント。
- 長期の鍵を置きたくない管理された環境:ワークロードIDを、担当者に相談する。ベータなので、有効化の依頼から始まる。
- ChatGPTのアカウントで、ランナーで
codex loginできず、他の方法がない:auth.jsonの持ち回し。条件5つを全部確かめ、公開リポジトリでは使わない。
気をつけること
- この記事は、実際に使って確かめた記録ではありません。運営者はCodexを入れていますが、使い心地はこの記事には書いていません。コマンド、設定名、環境変数、画面の項目名は、公式ページに書かれていたものを写しています。YAMLの例は、公式の例を写したもので、実行して確かめていません。
- 取得したのは、ページの要約です。要約に入らなかった表やフラグは、読めていません。とくに、
codex loginの各フラグの表、デバイスコードを有効にする設定画面の具体的な項目名、Codexのワークロードidentityの管理画面の手順、提供元ごとの設定ガイドは、確認できていません。ゲートウェイのヘルパーが標準入力を使うか、出力の空白をどう扱うかも、確認できていません。 - ページ間で書き方が違う所があります。
cli_auth_credentials_storeの値の数(Sample Configurationは3つ、設定リファレンスとAuthenticationは4つ)、管理者が強制できるキー(forced_*かallowed_*か)、アクセストークンの対象プランの書き方です。どれが新しいか、ページに日付がなく、判断できていません。 - 料金、プラン名、機能の可否の表は、2026年10月24日に読んだ時点の表示です。ページに日付はありません。BusinessやEnterpriseの機能は、契約や地域によって違うことがあります。
- ワークロードIDとデバイスコードは、公式がベータと書いています。ゲートウェイを通すChatGPTサインインは、ベータかどうかが書かれていません。変わる可能性があります。
- 管理された環境(会社のパソコンなど)では、組織の要件が、ここに書いた設定を上書きします。
- この記事は、セキュリティや契約の助言ではありません。
出典
- Authentication(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Maintain Codex account auth in CI/CD(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Codex access tokens(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Service accounts(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Roles and workspace permissions(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Admin setup(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Managed configuration(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Connect to a gateway(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Sign in with ChatGPT through a gateway(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Config reference(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Use Codex with Amazon Bedrock(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Non-interactive mode(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Codex GitHub Action(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Environment variables(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Sample Configuration(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Advanced Configuration(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Pricing(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Command line options / Slash commands in Codex CLI(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Troubleshooting(OpenAI、Codex公式ドキュメント、日付の記載なし、2026-10-24確認)
- Workload identity federation(OpenAI、API公式ドキュメント、日付の記載なし、2026-10-24確認)
- Codex federation rule reference(OpenAI、API公式ドキュメント、日付の記載なし、2026-10-24確認)
- Manage Codex workload identity with the Admin API(OpenAI、API公式ドキュメント、日付の記載なし、2026-10-24確認)
- openai/codex docs/authentication.md(OpenAI、GitHub、2026-10-24確認)