ChatGPT サブスクリプションを利用した OpenAI Codex
openai スロットでエージェントを実行します。従量課金制の OPENAI_API_KEY による請求ではなく、ChatGPT サブスクリプションを通じて支払いを行います。このエージェントは GPT-5.x Codex モデルで ZeroClaw のツールを操作し、API キーではなく Codex ログインによって認証されます。請求は ChatGPT プランに従います。サブスクリプションに含まれる利用枠がまず消費され、その含まれる利用枠を超えた Codex の利用分は、OpenAI のモデルごとのトークン単価でアカウントのフレキシブルクレジットから差し引かれます。含まれる利用枠を超えた後は、呼び出しごとに一律 $0 となる経路ではありません。
このページでは、スロット設定、提供されるモデル文字列、コストとルーティングへの影響、および OAuth の連携について説明します。プロバイダー共通のフィールドについては Configuration を、1 行のカタログエントリについては Provider Catalog を参照してください。
設定
Codex サブスクリプション認証は openai スロットにあります。wire_api = "responses" を設定して POST /v1/responses(Codex バックエンドであり、chat completions API ではありません)経由でルーティングし、requires_openai_auth = true を設定して api_key フィールドの代わりに ZeroClaw に保存された openai-codex 認証プロファイルから認証情報を取得します:
# 既存の Codex CLI ログインを再利用する:
zeroclaw auth login --model-provider openai-codex --import ~/.codex/auth.json
# または ZeroClaw 独自の OpenAI Codex ログインフローを開始します:
zeroclaw auth login --model-provider openai-codex
Quickstart がプロバイダーエントリを代わりに書き込むことができます:
zeroclaw quickstart --model-provider openai-codex --model gpt-5.4
手動設定は同じ正規の OpenAI スロットを使用します:
[providers.models.openai.coding]
model = "gpt-5.4"
wire_api = "responses"
requires_openai_auth = true
[providers.models.openai.review]
model = "codex-auto-review"
wire_api = "responses"
requires_openai_auth = true
api_key フィールドはありません。requires_openai_auth = true が、エントリ上のキーではなく保存された Codex ログインを読み込むためのスイッチです。Configuration → OAuth and subscription auth を参照してください。
エイリアス部分(coding、review)はオペレーターが選択するもので、適切なものを選んでください。エージェントから model_provider = "openai.coding" で参照します。
モデル
responses ワイヤー API は Codex バックエンドに直接アクセスするため、model の値は正確な配信IDでなければなりません。Codex CLI のクライアント側エイリアス(gpt-5、gpt-5.3、instant、gpt-5.5-instant)はここでは解決されず、400 で失敗します。
提供されるカタログは揮発性のものとして扱ってください。このリストを含め、ハードコードされたリストを信頼するのではなく、カタログに対してクエリを実行してください:
# フィールド名はライブの ~/.codex/auth.json と一致します(ファイル自体と照合して確認してください。
# the layout has shifted across Codex versions).
AT=$(jq -r .tokens.access_token ~/.codex/auth.json)
# auth.json では account_id は省略可能です。指定されていない場合、ZeroClaw は OAuth JWT にフォールバックします
# it is absent. `// empty` keeps jq from emitting the literal string null, and
# このヘッダーは、フィールドが実際に存在する場合にのみ送信されます。インポート後に
# can also read the resolved id from `zeroclaw auth status`.
ACC=$(jq -r '.tokens.account_id // empty' ~/.codex/auth.json)
curl -s https://chatgpt.com/backend-api/codex/models?client_version=1.0.0 \
-H "Authorization: Bearer ${AT}" \
${ACC:+-H "chatgpt-account-id: ${ACC}"} \
-H "originator: pi" | jq -r '.models[].slug'
client_versionは必須かつ制限付きです。古い値または低すぎる値を指定すると、エラーなしで空の{"models": []}が返されます。リストが空で返ってくる場合は、現在のクライアントバージョン(例:1.0.0)を使用してください。
提供されるカタログ(2026-06-02、固定する前にエンドポイントと照合してください):
| 提供 ID | 役割 |
|---|---|
gpt-5.4 | 日常的なコーディング(デフォルトの主力モデル) |
gpt-5.5 | フロンティア: 複雑なコーディング / 推論 |
gpt-5.4-mini | 小規模・高速・低コスト。よりシンプルなタスクとサブエージェント向け |
gpt-5.3-codex-spark | 超高速コーディングイテレーション |
codex-auto-review | 自動コードレビューモデル |
GPT-5.5 InstantとGPT-5.3は ChatGPT-app モデルであり、Codex バックエンドでは提供されていない別の名前空間に属するため、このスロットからは使用できません。
モデルがアップグレードされるたびに設定を編集しなくて済むよう、バージョンを固定するのではなく、ロールを現在提供されているIDに動的に解決します(codex/modelsを列挙し、ロールごとに最新の一致を選択します)。
コストとルーティング
OpenAI がこのパスを課金する方法(OpenAI の最新の Codex / ChatGPT プラン課金ドキュメントに従ってください。ここに記載された数値よりも優先されます):
- プランに含まれる使用量を優先的に消費します。 各 ChatGPT プランには、ローリングウィンドウで更新される Codex の使用量枠が含まれています。この枠内にいる間は、Codex のリクエストに追加料金は発生しません。
- 含まれる許容量を超えた分は柔軟なクレジットで対応。 含まれる使用量を使い切ると、プランが対応している場合、Codex の使用はアカウントのクレジット残高から差し引かれます。入力、キャッシュされた入力、出力は 100万トークンあたりのクレジットとして価格設定されるため、タスクの消費量はそのトークンの構成と使用されるモデルによって異なります。
- 上限超過時のオプション。 含まれる利用枠と各種クレジットを使い切った場合、OpenAI の選択肢は、クレジットを追加する、プランをアップグレードする、またはウィンドウがリセットされるのを待つ、のいずれかです。
以下のプランティアは、したがって使用量割り当ての乗数であり、コールごとのゼロコストを保証するものではありません。
ZeroClaw コストトラッキング
ZeroClaw はこのスロットを呼び出しごとに $0 として記録します。これはローカルでの会計上の制限であり、OpenAI の課金事実ではありません: ZeroClaw は ChatGPT プランに含まれる使用量メーターやクレジット残高を確認できないため、呼び出しごとのトークンコストをサブスクリプションのリクエストに割り当てることができません。$0 は「ZeroClaw では計測されない」という意味として読み、実際の利用枠 / クレジットの状態は OpenAI アカウントで確認してください。会計においてはサブスクリプションと従量課金(api-key)のクラスを分けて管理してください。コスト追跡を参照してください。
| クラス | ZeroClawの予算シグナル | 実際の請求 |
|---|---|---|
サブスクリプション(openai スロット、Codex 認証) | ローリング方式の Codex 使用枠 | 含まれるプランの使用量、それを超えた分はトークン単位の柔軟なクレジット |
| 従量制(api-key プロバイダー) | $ balance を実行中 | トークンごと |
ルーティングとは、付属の割り当て分を意図的に使い切り、それを超えた場合に備えてフォールバックを用意しておくことです。これは、モデルごとのトークン単価でのクレジット消費を避けるためと、ハードストップを乗り越えるための両方を目的としています。付属の使用量を超えると、トークンごとに「無料」というわけではありません。
ルーティングはエージェントごとに行われます(Routingを参照)。ロールごとに1つのエージェントエイリアスを定義し、それぞれをopenai Codexエントリに紐付けて、トラフィックを処理すべきエージェントにチャンネルを向けます。
| 役割 | 提供モデル |
|---|---|
| 日常のコーディング (デフォルト) | gpt-5.4 |
| コードレビュー / 敵対的 | codex-auto-review |
| ヘビー / フロンティア推論 | gpt-5.5 |
| light / narrow / subagent | gpt-5.4-mini |
サブスクリプションがリクエストを処理できない場合に備えて、従量制のフォールバックを用意しておきます。たとえば、利用枠の枯渇(429)、トークン更新がバックオフ中(後述)、または利用不可のモデル文字列などです。フォールバックはトークンごとに行われるため、例外的なケースとなるはずです。どのプロバイダーをこのフォールバックセットに含めるかは環境によって異なります。ここではなく、ご自身のルーティングで設定してください。
サブスクリプションのプランと制限
このスロットに関連する ChatGPT のティア(2026年6月時点)。「allowance」列は含まれる使用量の乗数であり、無料呼び出しの上限ではありません。含まれる割り当てを超えると、すべてのティアは OpenAI の公表している Codex レートに基づくトークン単位のフレキシブルクレジットにフォールバックします。上位ティアでは含まれる乗数が増加しますが、使用が無料になるわけではありません。
| 階層 | 価格 | Codex 利用枠込み |
|---|---|---|
| Plus | 月額20ドル | baseline |
| Pro | $100/月 | 5× Plus の上限 |
| Pro | $200/月 | 20× Plus の上限 |
両方のProプランは同じモデル群と機能を提供しており、含まれる利用枠の量のみが異なります。
$100 ティアは 2026-06-01 に格下げされました。 2026-05-31 までは Plus の 10 倍でローンチプロモーションを実施していましたが、その後は標準の 5 倍に戻りました。その日付より前に記録されたモデルごとのメッセージ数には一時的な 2 倍のブーストが含まれており、現在は正確ではありません。
OpenAIはティアごとの厳密なCodexメッセージ数を公表しておらず、「無制限」を特定のモデル名に紐付けてもいません。公開されている料金ページには「Pro」カードが1つ表示されており(「From $100」、見出しは「5x or 20x more usage」)、包括的な記載として「unlimited, subject to abuse guardrails」とあります。古いドキュメントやその他のソースに記載されているモデルごとの具体的な数値は、すべて非公式なものとして扱ってください。Proの推論フラッグシップはGPT-5.5 Proです。
料金ページの
128K/400Kのコンテキストウィンドウや~680 pagesという数値は、ChatGPT アプリの GPT Instant / GPT Reasoning モデルを指すものであり、このスロットが使用する Codex のresponsesバックエンドとは異なる名前空間です。これらを Codex バックエンドの上限として解釈しないでください。
トークンのインポート
ブラウザフローを開始するのではなく、既存の Codex-CLI トークンを非対話的にインポートします:
zeroclaw auth login --model-provider openai-codex --import ~/.codex/auth.json
zeroclaw auth status # openai-codex:default kind=OAuth account=... expires=...
(対話的な代替手段: --import なしの zeroclaw auth login、または --device-code。)
デーモンをデフォルトの config-dir(~/.zeroclaw)から実行します。認証プロファイルはそこにネイティブで保存され、zeroclaw auth コマンドもデフォルトでそこを参照します。デーモンをカスタムディレクトリに向けると、プロファイルもそこに配置する必要があり、また config-dir ごとに暗号化されている(下記参照)ため、そこから問題が始まります。
人を悩ませる2つの落とし穴
認証プロファイルはポータブルではありません。 auth-profiles.json は config-dir の .secret_key で暗号化(enc2:)されています。あるホストのプロファイルを別のホストにコピーすることはできません。コピー先では復号できないため、ランタイムは enc2: decryption failed (wrong `.secret_key` or tampered ciphertext) をログに記録します(or tampered ciphertext 句はこのエラーパスを共有するため、メッセージだけでは外部プロファイルと破損した blob を区別できません)。各ホストは生の ~/.codex/auth.json から自身のプロファイルをインポートします。外部の auth-profiles.json がすでに存在する場合は、まずそれを別の場所に移動してください。そうしないと、それを読み込もうとしてインポートが失敗します。
mv ~/.zeroclaw/auth-profiles.json ~/.zeroclaw/auth-profiles.json.foreign 2>/dev/null
zeroclaw auth login --model-provider openai-codex --import ~/.codex/auth.json
リフレッシュトークンはローテーションし、所有者は1つのみです。 リフレッシュが成功するたびに、前のリフレッシュトークンは無効になります。2つのホストが同じアカウントを独立してリフレッシュすると、互いを無効化します:
error=OpenAI token refresh is in backoff for 9s due to previous failures
複数のホストにまたがって機能するパターンで、厳密に同一の OpenAI アカウントで所有しているマシンに限定されます:
⚠️ 資格情報の境界。
~/.codex/auth.jsonには、OpenAI アカウントの有効なベアラー認証情報とリフレッシュ認証情報が保存されています。これは、シークレットマネージャー、暗号化されたトランスポート、または SSH 限定のプルなど、プライベートで暗号化されたチャネルを介して、自分自身のホストにのみ配布してください。リポジトリにコミットしたり、公開したり、チャットやチケットに貼り付けたり、他のユーザーやチームと共有したりすることは絶対にしないでください。OpenAI の利用規約では、アカウント資格情報を共有したり、アカウントを他人が利用できるようにしたりすることが禁止されており、生のauth.jsonのプルポイントはそれ自体が価値の高いシークレットです。これはオペレーター向けの資格情報取り扱いガイダンスであり、ランタイムコードはこれを変更しません。
- 1つのホストがリフレッシュを所有し(例: Codex CLI のバックグラウンドリフレッシュを実行しているホスト)、
~/.codex/auth.jsonを最新の状態に保ちます。 - そのホストは、生の
~/.codex/auth.jsonをプライベートなプルポイント(シークレットマネージャーまたは暗号化/SSH専用チャネル)に公開し、自分のホストからのみアクセス可能になります。 - 他のすべてのホストは生の
auth.json(ポータブルで、単なるトークン)を取得し、ローカルで再インポートします。これにより、そのホスト独自の.secret_keyで再暗号化されます。 - 他のホストは個別に更新されません。
配布する成果物は生の ~/.codex/auth.json であり、暗号化された auth-profiles.json を配布することは決してなく、また配布先も常にプライベートで暗号化されたチャネルを通じた自分自身のマシンのみです。
検証中
zeroclaw auth status # 存在し、有効期限内である
# then drive the agent once against the local gateway
正常な実行では、exit_code=0 でモデルの出力が返されます。2つの障害シグネチャがあります:
... token refresh in backoff: 古いまたはローテーションされたトークンです。生のauth.jsonを再取得して再インポートしてください。model=<x> ... 400: サポートされていないモデル文字列です。正確な提供済み ID を使用してください。
新規ホストのチェックリスト
~/.codex/auth.jsonが存在し、最新の状態です(リフレッシュオーナーから取得済み)。zeroclaw auth login --model-provider openai-codex --import ~/.codex/auth.json(外部のauth-profiles.jsonがある場合は、先に移動しておいてください)。zeroclaw auth statusはopenai-codex:default ... kind=OAuth ... expires=<future>を表示します。wire_api = "responses"、requires_openai_auth = true、および正確な提供モデルIDを持つopenaiエントリ。--config-dir ~/.zeroclaw(デフォルト)上のデーモン。- エージェントを一度実行 → 実際の出力とともに
exit_code=0。 - ルーターはロールを現在配信中のIDにマッピングします(後で追跡する羽目になるバージョンを固定しないでください)。