Codex実践ChatGPTサブスクとAzure OpenAIを使い分ける
CodexでAzure OpenAIとChatGPTサブスクを切り替える方法を、Profile・Skill・SessionStart Hookまで含めて解説します。仕事用のAzure OpenAIと個人のChatGPTプランを、同じCodex CLIから安全に使い分けたい場合に役立つ構成です。
結論からいうと、ChatGPTのログイン情報を残したまま、Azure OpenAI用のProfileを起動時に選べます。切り替えるたびにcodex logoutとcodex loginを繰り返す必要はありません。
2026年8月2日時点のCodex公式ドキュメントを基にしています。Azure OpenAIのAPIバージョンや利用できるモデルはリソースごとに異なるため、実際のデプロイ名とAPIバージョンはAzure側の設定も確認してください。
Codexの切り替えは「認証」と「Profile」を分けて考える
Codex CLIでは、ChatGPTプランを使うためのログイン情報と、Azure OpenAIのAPIキーを別々に管理できます。ChatGPT側はcodex loginで認証し、Azure側はカスタムモデルプロバイダーのenv_keyで環境変数を参照します。
| 接続先 | 認証方法 | 起動方法 |
|---|---|---|
| ChatGPTサブスク | codex loginでサインイン |
codex |
| Azure OpenAI | Azure用APIキーを環境変数で渡す | codex --profile azure-work |
この設計なら、普段はChatGPTサブスクで起動し、業務プロジェクトだけAzure OpenAI用Profileに切り替えられます。Codexの基本操作を先に確認したい方は、Codexの基本的な使い方とClaude Codeとの違いも参考にしてください。
Profileは
~/.codex/config.toml内の[profiles.xxx]に書く旧方式ではなく、~/.codex/azure-work.config.tomlのような別ファイルで管理します。この記事では現行方式を使います。Azure OpenAI用Profileを設定する方法
1. ChatGPTサブスクにログインする
まずは通常どおりChatGPTアカウントでCodexにログインします。一度ログインすれば、認証情報はCodex側に保持されます。
codex login
codex login status
codex login statusでログイン状態を確認できます。Azureへ切り替える際も、この認証情報を削除する必要はありません。
2. 通常起動用のconfig.tomlを作る
~/.codex/config.tomlは、Profileを指定しない通常起動に使われるベース設定です。ここではOpenAIを既定の接続先にし、後述する起動時表示用の目印も設定します。
model_provider = "openai"
[shell_environment_policy]
set = { CODEX_ACTIVE_PROVIDER = "ChatGPT subscription", CODEX_ACTIVE_RESOURCE = "-" }
[[hooks.SessionStart]]
matcher = "^(startup|resume)$"
[[hooks.SessionStart.hooks]]
type = "command"
command = "bash ~/.codex/hooks/show-provider.sh"
既存のconfig.tomlに承認モードやサンドボックスなどの設定がある場合は、それらを消さずに必要な項目だけ追加してください。
3. Azure OpenAI用のProfileファイルを作る
次に~/.codex/azure-work.config.tomlを作成します。公式ドキュメントのAzure設定例を基にした構成です。
model_provider = "azure"
model = "YOUR_AZURE_DEPLOYMENT_NAME"
[model_providers.azure]
name = "Azure"
base_url = "https://YOUR_PROJECT_NAME.openai.azure.com/openai"
env_key = "AZURE_OPENAI_API_KEY"
query_params = { api-version = "2025-04-01-preview" }
wire_api = "responses"
request_max_retries = 4
stream_max_retries = 10
stream_idle_timeout_ms = 300000
[shell_environment_policy]
set = { CODEX_ACTIVE_PROVIDER = "Azure OpenAI", CODEX_ACTIVE_RESOURCE = "YOUR_PROJECT_NAME" }
YOUR_AZURE_DEPLOYMENT_NAME:Azure OpenAIで作成したデプロイ名YOUR_PROJECT_NAME:Azure OpenAIリソースのエンドポイントに含まれる名前env_key:秘密情報そのものではなく、APIキーを入れる環境変数の名前wire_api:Codexの現行設定でサポートされるresponsesを指定
APIキーは設定ファイルへ直接書かず、シェルの環境変数やOSの安全な資格情報管理機能から渡します。
export AZURE_OPENAI_API_KEY='Azureで発行したAPIキー'
上記は一時的な設定例です。シェル設定ファイルへ保存する場合は、ファイル権限や端末の共有状況にも注意してください。
4. それぞれの接続先で起動する
# ChatGPTサブスクを使う
codex
# Azure OpenAIを使う
codex --profile azure-work
Profile名のazure-workは、ファイル名azure-work.config.tomlの前半部分と一致させます。
前のセッションを保ったまま切り替える手順
Codexの接続先は起動時にProfileで決まります。そのため、すでに開いているセッションの接続先をその場で変更するのではなく、いったん終了して同じセッションを別Profileで再開します。
ChatGPTサブスクからAzure OpenAIへ切り替える
Codex内で/exitを実行します。
シェルへ戻ったら、Azure用Profileを指定して再開します。
codex resume --profile azure-work
カレントディレクトリで最後に使ったセッションをすぐ再開するなら、次のコマンドも使えます。
codex resume --last --profile azure-work
Azure OpenAIからChatGPTサブスクへ戻す
Azure側のセッションを/exitで終了し、Profileを付けずに再開します。
codex resume
# 直前のセッションを指定する場合
codex resume --last
/resumeとcodex resumeの違いCodexを開いた状態で使う
/resumeは保存済みセッションを選ぶスラッシュコマンドです。一方、接続先を切り替えるには起動オプション--profileが必要なので、/exit後にシェルでcodex resume --profile azure-workと実行するのが確実です。Claude CodeでVertex AIとTeamプランを切り替える場合との違いも知りたい方は、元になったClaude CodeでVertex AIとTeamプランを切り替える方法もご覧ください。
複数のAzure OpenAIプロジェクトを切り替える方法
開発環境と本番環境など、複数のAzure OpenAIリソースを使う場合は、Profileファイルを分けると管理しやすくなります。
~/.codex/azure-dev.config.toml
~/.codex/azure-prod.config.toml
それぞれのProfileでbase_url、model、env_key、起動時表示用の目印を変えます。APIキーの環境変数も分離できます。
# azure-dev.config.toml
env_key = "AZURE_OPENAI_API_KEY_DEV"
# azure-prod.config.toml
env_key = "AZURE_OPENAI_API_KEY_PROD"
再開時は使いたいProfileを指定します。
codex resume --profile azure-dev
codex resume --profile azure-prod
Profile名だけでなく、後述するHookの表示にも
DEVやPRODを含めると、接続先の取り違えを減らせます。APIキーやエンドポイントをGit管理対象へ入れないことも重要です。切り替え手順をCodex Skillにする
切り替えコマンドを毎回思い出すのが面倒な場合は、個人用Skillに手順をまとめられます。ただし、Skillが実行中プロセスのモデルプロバイダーを直接変更するわけではありません。現在のセッションを安全に終了し、正しい再開コマンドを案内する役割にします。
~/.codex/skills/switch-codex-provider/SKILL.mdを作り、次のように記述します。
---
name: switch-codex-provider
description: Codex CLIの接続先をChatGPT subscriptionまたは登録済みAzure Profileへ切り替える手順を案内する
---
引数として切り替え先を受け取る: $ARGUMENTS
1. APIキーなどの秘密情報は表示・編集しない。
2. Azureの場合は ~/.codex/<profile>.config.toml の存在を確認する。
3. chatgptの場合は、/exit 後に codex resume を実行するよう案内する。
4. Azure Profileの場合は、/exit 後に
codex resume --profile <profile>
を実行するよう案内する。
5. 接続先は起動時に決まるため、実行中のまま切り替えられないことを伝える。
Codex内では/skillsから選ぶか、次のように明示して呼び出せます。
$switch-codex-provider azure-work
SkillにProfileファイルの自動書き換えやAPIキー表示まで任せると、誤操作や秘密情報漏えいの原因になります。Profileは事前に用意し、Skillは確認とコマンド案内に限定するのがおすすめです。
SessionStart Hookで接続先を起動時に表示する
複数の接続先を使う場合、起動時に「現在どのプラン・リソースを使っているか」を表示すると安心です。CodexのSessionStart Hookは起動時や再開時にコマンドを実行できます。
まず~/.codex/hooks/show-provider.shを作ります。
#!/bin/bash
provider="${CODEX_ACTIVE_PROVIDER:-unknown}"
resource="${CODEX_ACTIVE_RESOURCE:-unknown}"
printf 'Codex provider: %s\n' "$provider"
printf 'Resource/Profile marker: %s\n' "$resource"
実行権限を付けます。
chmod 700 ~/.codex/hooks/show-provider.sh
この記事の前半で設定した[[hooks.SessionStart]]が、startupまたはresume時にこのスクリプトを呼び出します。Azure Profile側のshell_environment_policy.setを変えておけば、次のように表示できます。
Codex provider: Azure OpenAI
Resource/Profile marker: YOUR_PROJECT_NAME
CODEX_ACTIVE_PROVIDERとCODEX_ACTIVE_RESOURCEは、各Profileで明示的に設定した管理用の目印です。Profileの接続先を変更したときは、この表示用の値も一緒に更新してください。うまく切り替わらないときの確認ポイント
env_keyに指定した環境変数名と、実際に設定した名前が一致しているか確認します。値そのものをconfig.tomlへ書くのは避けてください。
modelには一般的なモデル名ではなく、Azure OpenAI側で作成したデプロイ名が必要です。デプロイ済みモデルとリージョン、利用可能なAPIバージョンも確認します。
現行Codexでは~/.codex/<profile>.config.tomlというファイル名を使います。古い[profiles.xxx]形式が残っていないか、起動時の--profile名と一致しているかを確認してください。
codex resumeは通常、現在のディレクトリに関係するセッションを表示します。直前のセッションなら--lastを試し、必要に応じてセッション選択画面から探します。
まとめ:CodexはProfileでAzure OpenAIへ切り替える
- ChatGPTサブスクは
codex login、Azure OpenAIはカスタムプロバイダーと環境変数で管理する - Codex 0.134.0以降のProfileは
~/.codex/<profile>.config.tomlへ分離する - 接続先の切り替えは
/exit後にcodex resume --profile ...で行う - 切り替えのたびにChatGPTからログアウトする必要はない
- Skillで手順を案内し、SessionStart Hookで現在の接続先を表示すると事故を防ぎやすい
まずはChatGPT用のベース設定と、1つのAzure用Profileから始めるのがおすすめです。正常に切り替えられたら、開発・本番など用途別のProfileへ広げると管理しやすくなります。


