Codex:外部 API で公式ログインと履歴を維持
Codex の公式ログインを維持したまま、手動の config.toml または CC Switch で外部 API を使う手順。認証、モデル、任意の調整、履歴とエラーを説明します。
モデルリクエストには BetterToken API Key を使い、Codex の公式ログインを維持します。手動設定と CC Switch は、公式ログイン情報と外部 API の認証情報を分けて扱います。
準備
Codex App、Codex CLI、Extension のいずれかで公式アカウントにログインします。BetterToken API Key とモデル広場の完全な Model ID を用意します。設定を共有するクライアントは同じ CODEX_HOME を使います。
設定方法
手動設定
公式ログイン情報を維持する
Codex を完全に終了し、設定を非公開でバックアップします。公式認証情報は auth.json または OS の認証情報ストアにあります。現在の保存方式を維持し、API Key JSON に置き換えたり、偽のログインファイルを作成したりしないでください。
config.toml を編集する
ユーザーの config.toml を開きます。既定は macOS / Linux の ~/.codex/config.toml または Windows の %USERPROFILE%\.codex\config.toml です。独自の CODEX_HOME があればそのディレクトリを使います。トップレベルのキーをすべての TOML テーブルより前に置き、既存設定と統合します。テーブルは重複させず、ローカルで YOUR_API_KEY を BetterToken API Key に置き換えます。
model_provider = "bettertoken"model = "gpt-6-astra"
[model_providers.bettertoken]name = "BetterToken"base_url = "https://bettertoken.ai/v1"wire_api = "responses"requires_openai_auth = trueexperimental_bearer_token = "YOUR_API_KEY"supports_websockets = false公式ログインで生成された認証情報を維持し、API Key JSON に置き換えないでください。requires_openai_auth = true は公式の認証処理を使い、現在の provider の experimental_bearer_token がモデルリクエスト用の外部 Key を指定します。前者が有効なとき Codex は env_key を無視するため、Bearer Key を直接置き換えないでください。Key を含むファイルは共有しないでください。
設定パラメーター
| パラメーター | 役割と配置 | デフォルトと例 |
|---|---|---|
model_provider | ユーザー設定のトップレベル。下の設定 ID を選びます。 | デフォルトは openai。この例は bettertoken。 |
model | トップレベル。モデル広場の完全な Model ID。 | 例は gpt-6-astra。必要に応じて変更します。 |
name | provider テーブル内。表示名のみ。 | BetterToken は Model ID ではありません。 |
base_url | provider テーブル内。モデル API の Base URL。 | https://bettertoken.ai/v1 を使い、Codex が /responses を追加します。 |
wire_api | provider テーブル内。リクエストのプロトコル。 | 現在は responses のみ対応。省略時も同じ値です。 |
requires_openai_auth | provider テーブル内。OpenAI 認証と認証情報ストアを使います。 | デフォルトは false。ここでは true。ログインファイルを維持するスイッチではありません。 |
experimental_bearer_token | provider テーブル内。外部 API リクエスト用 Bearer Key。 | BetterToken API Key を入力。公式ログインキャッシュは上書きしません。現在も対応していますが平文で保存されます。 |
supports_websockets | provider テーブル内。Responses WebSocket 対応。 | デフォルトは false。ここでは HTTP/SSE を使います。 |
任意のモデル・接続設定
この二つは config.toml のトップレベルに配置します。任意の設定で、ログイン維持の必須条件ではありません。
review_model = "gpt-6-astra"model_reasoning_effort = "high"| パラメーター | 役割と配置 | デフォルトと例 |
|---|---|---|
review_model | トップレベル。/review のモデル。 | 任意。省略時は現在のセッションのモデル。 |
model_reasoning_effort | トップレベル。モデルの推論強度。 | 例は high。対応する段階とデフォルトはモデルごとに異なります。 |
この三つは任意の調整で、接続の必須条件ではありません。必要なら既存の [model_providers.bettertoken] テーブルに追加し、同名テーブルを重複作成しないでください。
request_max_retries = 4stream_max_retries = 8stream_idle_timeout_ms = 300000| パラメーター | 役割と配置 | デフォルトと例 |
|---|---|---|
request_max_retries | provider テーブル内。HTTP リクエストの最大再試行回数。 | デフォルトは 4。接続に応じて調整します。 |
stream_max_retries | provider テーブル内。ストリーム切断後の再接続回数。 | デフォルトは 5。8 は任意の独自設定です。 |
stream_idle_timeout_ms | provider テーブル内。ストリーム無通信時のタイムアウト、単位はミリ秒。 | デフォルトは 300000。タスク全体の制限時間ではありません。 |
CC Switch の設定
-
現在の CC Switch で OpenAI Official を選び、Codex を起動して公式アカウントにログインします。
-
設定 → アプリ設定 → Codex で 引き継ぎなしの切り替え時に公式ログインを維持 を有効にします。このスイッチは直接切り替え用です。ルーティング引き継ぎ中はログインが維持されます。
-
Codex ページで BetterToken を追加または有効化します。Base URL
https://bettertoken.ai/v1、OpenAI Responses API、BetterToken API Key、Model ID を入力します。BetterToken は Responses に直接対応するため、プロトコル変換やルーティング引き継ぎは不要です。 -
保存して有効にします。外部 Key は
config.tomlの provider 設定に入り、公式auth.jsonには書きません。
履歴の統合(任意)
Codex セッション履歴の統合 は CLI の resume リストのみが対象です。現在のデスクトップ版は全セッションを表示するため、このスイッチは不要です。必要なら既存履歴を移行します。CC Switch が先にバックアップします。別の provider で続行すると encrypted_content の互換性で失敗する場合があるため、切り替え後は新しいセッションを作ります。
再起動して確認する
-
使っている Codex クライアントを完全に終了して再起動し、新しいセッションを作ります。
-
公式ログインを確認し、対応するクライアントでプラグインや Remote Control を確認します。
-
短い依頼を送り、Model ID と BetterToken の利用ログを確認します。表示中のアカウントだけではモデルの課金先は判断できません。
設定の階層と古いキー
モデルや推論設定を [projects."<path>"] に入れないでください。プロジェクト固有のモデルは信頼済みプロジェクトの .codex/config.toml のトップレベルで設定できますが、provider と認証はユーザー設定に置きます。現在の profile は CODEX_HOME 内の NAME.config.toml を codex --profile NAME で選択します。古い [profiles.NAME] やトップレベルの profile は使いません。
トラブルシューティング
| 症状 | 対処 |
|---|---|
401、403、ログイン要求 | 現在の CODEX_HOME、公式ログイン、provider の Key を確認します。公式情報を API Key JSON で上書きしません。 |
| 設定が無視される、モデルが変わらない | モデルのキーはテーブル前のトップレベルに置き、[projects."<path>"] に入れません。CLI、profile、プロジェクトの上書きを確認します。 |
disable_response_storage または windows_wsl_setup_acknowledged | 古いキーを削除し、現在の設定には使いません。 |
features.code_mode_tool_description_first | 警告元が session-flags なら、起動フラグを渡すクライアントを確認・更新します。ユーザー設定に同じキーを追加しません。 |
features.guardianv2.thread_context | profile の上書きを含めてこのキーを削除し、ほかの Guardian 設定を維持します。スレッドコンテキストは常に有効です。 |
| 履歴は見えるが別の provider で続行できない | 新規セッションを作るか、元の provider を使います。 |

