プロバイダーの構成
プロバイダーは、opencodex に、モデルが存在する場所、モデルが通信するワイヤー アダプター、およびリクエストの認証方法を伝えます。
プロバイダー関連のトップレベルフィールド
Section titled “プロバイダー関連のトップレベルフィールド”| フィールド | タイプ | デフォルト | 意味 |
|---|---|---|---|
providers |
Record<string, OcxProviderConfig> |
— | プロバイダー名からプロバイダー設定へのマップ。 |
openaiProviderTierVersion? |
2 |
移行によって設定される | 単一のオプション対応 OpenAI プロジェクションを完了としてマークします。 |
disabledModels? |
string[] |
— | モデルは Codex のカタログおよび /v1/models からは隠されていますが、直接のプロキシ呼び出しからはブロックされません。ルーティングされた ID はリストから削除されます。裸のネイティブ GPT ID は visibility: "hide" を取得します。 |
providerContextCaps? |
Record<string, number> |
{} |
プロバイダーごとの Codex に表示されるコンテキストの上限。キャップは既知のコンテキスト ウィンドウを下げるだけです。 |
contextCapValue? |
number |
350000 |
ダッシュボードのコンテキストキャップ コントロールで使用される値。これを変更すると、有効になっているすべての providerContextCaps エントリが更新されます。 |
codexAccounts? |
CodexAccount[] |
[] |
ChatGPT/Codex プール アカウントのメタデータは Codex Auth によって管理されます。秘密はcodex-accounts.jsonに別に住んでいます。 |
pausedCodexAccountIds? |
string[] |
[] |
再開するまでプールの選択から除外されるアカウント (一時停止時のメイン __main__ アカウントを含む)。 |
codexAccountNamespaces? |
Record<string, string> |
— | 保存された Codex アカウント ターゲットへのパブリック モデル セレクター ネームスペース。これによりマッピングが検証され、永続化されますが、それ自体ではピッカー行の追加やルーティングの変更は行われません。 |
activeCodexAccountId? |
string |
— | 次のリクエスト用に手動で選択されたプール アカウント。選択するとスレッドのアフィニティがクリアされます。実行中のリクエストでは、取得された資格情報が保持されます。 |
autoSwitchThreshold? |
number |
80 |
使用量ベースのプロアクティブ切り替えしきい値。quota は紐付け済み/未紐付けタスクの次のリクエストを再評価でき、fill-first は未紐付け割り当ての使い切り基準としてのみ使用し、通常の round-robin 選択は使用しません。既知の 5 時間、週次、30 日 quota window の最大スコアを使います。0 は使用量ベースの切り替えだけを無効にし、未紐付け割り当てや障害回復は無効にしません。 |
accountPoolStrategy? |
"quota" | "round-robin" | "fill-first" |
"quota" |
新規/未紐付け Codex リクエストの割り当て戦略。live な (parent thread id, quota scope) affinity がなければ未紐付けで、プロキシ再起動や affinity リセット後は既存の表示タスクも未紐付けになり得ます。quota はアクティブアカウントがなければ既知 usage 最小の適格アカウントを選び、適格なアクティブアカウントが autoSwitchThreshold 未満なら維持します。しきい値到達後は、未紐付けリクエストまたは紐付け済みタスクの次のリクエストを usage の低い適格アカウントへ移せます。round-robin は未紐付けリクエストを均等分散し、fill-first は cooldown、使用不可、または drain threshold までアクティブアカウントへ割り当てます。 |
accountPoolStickyLimit? |
number |
1 |
1 回の round-robin 選択で次へ進む前に保持する新規/未紐付けタスク割り当て数。カウンターは上流の成功後ではなくタスクの紐付け時に増えます。範囲 1–100。accountPoolStrategy が round-robin のときのみ。 |
upstreamFailoverThreshold? |
number |
3 |
今後の新しいセッションがフェイルオーバーする前に一時的なエラーが連続して発生する。 0 を無効に設定します。 |
modelCacheTtlMs? |
number |
300000 |
プロバイダーごとの /models キャッシュの鮮度ウィンドウ。 |
cacheRetention? |
"none" | "short" | "long" |
"short" |
Anthropic プロンプト キャッシュ ポリシー: 無効、5 分間の一時的、または 1 時間の延長。 |
tokenGuardian? |
OcxTokenGuardianConfig |
オフ | オプションのプロアクティブな OAuth 更新および Codex アカウントのウォームアップ ポリシー。 |
codexAccountNamespaces キーはパブリック セレクターです。1 ~ 64 文字で、ASCII 文字または数字で始まり、終わり、文字、数字、.、_、または - が内部に含まれます。予約された JavaScript オブジェクト名は拒否されます。各値は、Codex デスクトップ アカウントの有効なプール アカウント ID (内部 __main__ ではありません) または "@main" です。プロバイダーと予約された openai / combo の衝突は、大文字と小文字を区別せずにチェックされます。生のアカウント ID と電子メールを非公開にしておきます。セレクターはパブリック名です。
予約済み OpenAI プロバイダー
Section titled “予約済み OpenAI プロバイダー”openai および openai-apikey は固定予約 ID です。 openai.codexAccountMode はデフォルトでは "pool" で、メインアカウントと追加アカウント全体を選択します。 "direct" は、現在の呼び出し元/メイン ログインのみを使用します。 API は、設定された API キーまたはキー プールのみを使用します。ベア モデルまたは openai-apikey/<model> を使用します。クロスルート認証情報のフォールバックはありません。 API GPT-5.6 行は 1,050,000 コンテキスト / 最大 922,000 入力メタデータを伝送し、Pro 仮想 ID は reasoning.mode: "pro" を使用してベース ワイヤー モデルに書き換えられます。
openaiProviderTierVersion: 2 は、現在の単一プロバイダーの投影をマークします。出荷された v1 設定を移行する前に、opencodex は別のバックアップを置き換えずに config.json.pre-openai-tiers-v2.bak を作成し、既知の名前空間で選択された既知のレガシー ID を裸の ID に書き換えます。
プロバイダーエントリー (OcxProviderConfig)
Section titled “プロバイダーエントリー (OcxProviderConfig)”| フィールド | タイプ | 意味 |
|---|---|---|
adapter |
string |
openai-chat、openai-responses、anthropic、google、kiro、cursor、azure-openai (または別名 azure) のいずれか。 |
baseUrl |
string |
アップストリーム API のベース URL。ほとんどの組み込み固定エンドポイントは不一致を無視します。衝突安全キー プリセットは、古い同じ名前のカスタム宛先を保持します。 |
responsesPath? |
string |
キー認証 openai-responses リクエストの相対リソース パス。 / で始まり、スキーム、クエリ、またはフラグメントが含まれていない必要があります。 |
disabled? |
boolean |
プロバイダーをディスク上に保持しますが、ルーティングおよびモデル/カタログのリストからは除外します。 |
apiKey? |
string |
API キー、またはリクエスト時に解決される ${ENV_VAR} / $ENV_VAR 参照。 |
apiKeyTransport? |
"x-api-key" | "bearer" |
Anthropic キーのヘッダー スタイル。デフォルトはネイティブ x-api-key です。キー認証 anthropic プロバイダーにのみ有効です。 |
apiKeyPool? |
ApiKeyPoolEntry[] |
マルチキープール。 apiKey はアクティブなエントリをミラーリングします。各項目には id、key、オプションの label、およびオプションの数値 addedAt があります。 |
defaultModel? |
string |
このプロバイダーが明示的なモデルなしで選択された場合に使用されるモデル。 |
models? |
string[] |
シード/フォールバック モデルのリスト。 liveModels: false では、発見されたモデルはこれらのみです。 |
liveModels? |
boolean |
開始/同期時にライブ カタログをフェッチします (デフォルトは true)。カスタムプロバイダーは ${baseUrl}/models を使用します。組み込みはレジストリ URL とフィルターを使用する場合があります。 |
selectedModels? |
string[] |
検出後のカタログ許可リスト。空でない場合は、それらの ID のみが公開されます。空または省略すると、検出されたすべてのモデルが公開されます。 |
contextWindow? |
number |
プロバイダー全体の Codex に表示されるコンテキストの上限。より小さいライブメタデータが保持されます。 |
modelContextWindows? |
Record<string, number> |
モデルごとのコンテキストの上限。これらは contextWindow をオーバーライドし、より小さなライブ メタデータを生成することはありません。 |
modelInputModalities? |
Record<string, string[]> |
["text"] や ["text", "image"] などのモデルごとの入力ヒント。 |
modelMaxInputTokens? |
Record<string, number> |
カタログの自動圧縮ヒントに使用されるモデルごとの正の最大入力制限。 |
defaultMaxOutputTokens? |
number |
クライアントが max_output_tokens を省略した場合の、プロバイダー全体の openai-chat フォールバック。 |
modelMaxOutputTokens? |
Record<string, number> |
モデルごとの openai-chat フォールバック バジェットがプラスになります。正確な/パターン一致はプロバイダーのデフォルトを上回ります。 |
headers? |
Record<string, string> |
追加の上流ヘッダー。認証、Cookie、API キー ヘッダー、埋め込まれた改行、および無効な名前は拒否されます。 |
openRouterRouting? |
OpenRouterProviderRouting |
デフォルトの OpenRouter order、only、および allowFallbacks 設定。 openai-chat を持つ正規 OpenRouter に対してのみ有効です。 |
modelOpenRouterRouting? |
Record<string, OpenRouterProviderRouting> |
プロバイダー全体の OpenRouter 設定を置き換える正確なモデル ID のオーバーライド。 |
authMode? |
"key" | "forward" | "oauth" | "local" |
認証モード (デフォルトは key)。 OAuth/サブスクリプション認証情報は config.json の外部に保存されます。 local は、レジストリ エントリで許可されているプロバイダーに限定されます。 |
codexAccountMode? |
"pool" | "direct" |
正規の openai のみ。デフォルトはプールです。直接はプール状態をバイパスします。 |
refreshPolicy? |
"proactive" | "lazy-only" | "disabled" |
この OAuth プロバイダーの Token Guardian ポリシーをオーバーライドします。 |
reasoningEfforts? |
string[] |
プロバイダー全体の Codex 推論ラベルをアドバタイズして送信します。 |
modelReasoningEfforts? |
Record<string, string[]> |
モデルごとのラベル。空のリストは努力制御を非表示にします。 |
modelSupportsReasoningSummaries? |
Record<string, boolean> |
モデルを false に設定して、概要の広告を停止し、概要配信フィールドを削除します。 |
modelReasoningSummaryDelivery? |
Record<string, "sequential" | "sequential_cutoff" | "concurrent" | "concurrent_cutoff"> |
モデルごとの応答配信列挙型。既存の配信フィールドを書き換えます。 |
modelAdapters? |
Record<string, string> |
混合配線ゲートウェイのモデルごとの openai-chat または openai-responses 配線オーバーライド。明示的なエントリはレジストリのデフォルトを破ります。 DeepSeek のプリセットは、deepseek-v4-flash のネイティブ レスポンスを選択できます。単線アップストリーム ピンと正規の ChatGPT 転送拒否オーバーライド。 |
reasoningEffortMap? |
Record<string, string> |
ラベルを推論するためのプロバイダー全体のワイヤ エイリアス。 |
modelReasoningEffortMap? |
Record<string, Record<string, string>> |
推論ラベルのモデルごとのワイヤ エイリアス。 |
noReasoningModels? |
string[] |
推論/思考パラメーターを拒否するモデル。 |
noTemperatureModels? |
string[] |
発信者指定のtemperatureを拒否するモデル。 |
noTopPModels? |
string[] |
発信者指定のtop_pを拒否するモデル。 |
noPenaltyModels? |
string[] |
存在/周波数ペナルティを拒否するモデル。 |
parallelToolCalls? |
boolean |
並列ツール呼び出しを切り替えます。 OpenAI Chat はデフォルトでオンになっています。非チャット アダプターは明示的な true でのみアドバタイズします。 |
responsesItemIdRepair? |
{ message?: string[]; reasoning?: string[]; repairMissingTerminalIds?: boolean } |
正確なプレースホルダー ID および欠落している端末 ID に対するダウンストリーム SSE 修復はデフォルトで無効になっています。関数呼び出し ID は決して書き換えられません。 |
autoToolChoiceOnlyModels? |
string[] |
tool_choice が auto または none のみを受け入れるモデル。強制的な選択は格下げされます。 |
preserveReasoningContentModels? |
string[] |
チャット履歴に以前のアシスタント reasoning_content が必要なモデル。 |
thinkingToggleModels? |
string[] |
エフォート ラダーではなく thinking.enabled を使用してモデルをチャットします。 |
thinkingBudgetModels? |
string[] |
整数 thinking_budget を使用したチャット モデル。労力は予算の一部にマッピングされます。 |
noVisionModels? |
string[] |
ビジョン サイドカーを通じて送信されるテキストのみのモデル。マッチングでは、Ollama :size タグが許容されます。 |
escapeBuiltinToolNames? |
boolean |
Anthropic 互換ゲートウェイの組み込みツール名をエスケープし、返された呼び出しで復元します。 |
googleMode? |
"ai-studio" | "vertex" | "cloud-code-assist" |
Google トランスポート/認証モード。デフォルトはai-studioです。 |
project? |
string |
Vertex または Antigravity Cloud Code Assist プロジェクト ID。 |
location? |
string |
頂点の位置。環境フォールバックは GOOGLE_CLOUD_LOCATION です。 |
mcpServers? |
Record<string, CursorMcpServerConfig> |
カーソルのみ: 標準入出力またはストリーミング可能な HTTP MCP サーバー。 |
desktopExecutor? |
DesktopExecutorConfig |
カーソルのみ: 外部コンピュータ使用および画面録画コマンド。 |
unsafeAllowNativeLocalExec? |
boolean |
カーソルのレガシー ブール値。新しいフィールドが設定されていない場合のみ、nativeLocalExec: "on" と同等です。 |
nativeLocalExec? |
"off" | "codex-sandbox" | "on" |
カーソルのローカル実行ポリシー。 off がデフォルトです。 codex-sandbox は現在、off と同様にフェールクローズされます。 |
API キープロバイダーは、リテラルキーまたは環境参照を保持する場合があります。 OAuth プロバイダーは、ocx login によって設定された資格情報ストアを使用します。サブスクリプションに基づくクロード コードの起動動作は、claudeCode.authMode で構成されます。
プロバイダーによるアウトバウンドの安全性診断
Section titled “プロバイダーによるアウトバウンドの安全性診断”ダッシュボード接続テストとライブ モデル検出では、制限された GET 専用トランスポートが使用されます。送信プロキシを使用しない場合、opencodex はホスト名を一度解決し、その検証されたアドレスにのみ接続します。 HTTPS は元のホスト、SNI、および証明書の検証を保持します。プロバイダー設定では証明書チェックを無効にすることはできません。
HTTP_PROXY、HTTPS_PROXY、または ALL_PROXY が適用される場合、これらの操作は Bun のネイティブ フェッチを維持します。 URL とリテラル アドレスのチェックは引き続き実行されますが、プロキシが最終ルート、DNS 応答、ピアを選択するため、opencodex はそのピアを固定したり検証したりできません。これは明示的なセキュリティ制限です。
プライベート/ローカル宛先には allowPrivateNetwork: true が必要で、送信プロキシがアクティブな場合は、一致する NO_PROXY エントリが必要です。ループバックは自動的に追加されます。 CIDR エントリは解釈されないため、各 LAN ホストを明示的にリストします。マッチャーは、正確なホスト、ドメイン サフィックス、オプションのポート、括弧で囲まれた IPv6、および * をサポートします。たとえば、192.168.1.50 を明示的にリストします。メタデータとリンクローカル宛先はブロックされたままになります。診断リクエストはリダイレクトを拒否し、資格情報が剥奪されたターゲットを報告します。通常のプロバイダー要求のリダイレクト レビューは、この診断ガードとは独立したままになります。
Codexアカウントプール
Section titled “Codexアカウントプール”pool アカウントの追加と quota 更新はダッシュボードの Codex Auth ページで処理してください。設定には secret で
ないアカウント metadata だけを保存し、access/refresh token は強化された Codex アカウント credential store に別途
保管します。Pool routing は新規/未紐付け割り当て、使用量ベースのプロアクティブ切り替え、障害回復に分かれます。
紐付け済みタスクは通常 affinity を維持しますが、quota はしきい値超過後の次のリクエストで再紐付けでき、
pause、cooldown、再認証、障害処理も独立して routing を消去または変更できます。未紐付けリクエストには
プロキシ再起動や affinity リセット後の既存タスクも含まれます。出力前の 429/402 は使用量ベースの
切り替えがオフでも同じリクエストで適格な代替アカウントへ 1 回再試行できます。アカウント変更後も会話
コンテキストは保持・再生されますが、アカウント間の provider prompt cache 再利用は保証されません。
一時停止したアカウントと quota metadata は表示されたままですが、自動切り替え、再試行/failover 選択、cooldown 復旧プローブ、手動有効化の対象外です。
一時停止するとそのアカウントの thread affinity map も消去されます。処理中のリクエストは取得済み credential を維持しますが、以降のターンは再ルーティングされ、一時停止中のアカウントは再利用できません。
状態は再起動後も保持され、すべてのアカウントが一時停止中なら Pool ルーティングは別のアカウントを暗黙に選ばず失敗します。
上限到達を一括停止 は credential がある適格アカウントだけを先に更新し、関連する quota window が今回 100% と確認できたアカウントだけを停止します。credential がないアカウントや、quota が不明、または更新に失敗したアカウントは変更しません。
401/403 では、そのアカウントへのプロセスローカルな affinity を解除し、再認証を要求します。
429 では Retry-After を尊重してアカウントの cooldown を開始し、affinity を解除したうえで、
別の適格な Pool アカウントへリクエストを切り替えることがあります。これらの障害回復は
autoSwitchThreshold: 0 でも有効であり、0 が無効にするのは使用量に基づく予防的な切り替えだけです。
割り当てとプロアクティブ切り替え戦略: quota(既定)はアクティブアカウントがない場合に最小 usage の適格アカウントを選び、適格なアクティブアカウントが autoSwitchThreshold 未満なら維持します。autoSwitchThreshold 超過後は紐付け済みタスクの次のリクエストも再紐付けできます。round-robin は
未紐付けリクエストを均等分散し、しきい値は通常の rotation を変えません。accountPoolStickyLimit
(既定 1、1–100)は成功応答ではなく割り当て/紐付け数を数えます。fill-first は未紐付けリクエストを
cooldown、再認証、または drain threshold までアクティブアカウントへ割り当て、正常な紐付け済みタスクは
affinity を維持します。これらの戦略は provider enforcement を回避しません。
anthropicAccountPool (実験的)
Section titled “anthropicAccountPool (実験的)”このオプトインは、auth.json に既に保存されている複数の Anthropic OAuth アカウントをプールします。デフォルトではオフになっており、実戦テストは行われていません。同じ組織内のアカウントがクォータを共有する場合があり、自動ローテーションによってプロバイダーの制限がトリガーされる場合があります。
| キー | タイプ | デフォルト | 説明 |
|---|---|---|---|
anthropicAccountPool.enabled? |
boolean |
false |
スティッキー アフィニティと 429 クールダウン フェイルオーバーを有効にします。 |
anthropicAccountPool.autoSwitchThreshold? |
number |
80 |
新しいセッションの場合は、このしきい値以上の、既知の最も低いキャッシュされた 5 時間の使用量を選択します。 0 はクォータの選択を無効にします。 |
anthropicAccountPool.strategy? |
"quota" | "round-robin" | "fill-first" |
"quota" |
新しいセッション戦略。クォータでは 5 時間足のみを使用します。 |
anthropicAccountPool.stickyLimit? |
number |
1 |
成功した新しいセッションのバインドは 1 つのラウンドロビン選択で保持されます。範囲は 1 ~ 100。 |
有効にすると、429 レコードは Retry-After またはデフォルトのバックオフからの制限されたクールダウンを記録し、リクエスト内でローテーションする可能性があります。アフィニティはプロセスローカルであり、サイズ制限があります。資格情報 401/403 は、アカウントに再認証が必要であることをマークします。すべての対象となるアカウントが冷却されている場合、クライアントは、既知の場合、認証エラーではなく、Retry-After を含む 429 を受け取ります。
管理されたレコードの形状
Section titled “管理されたレコードの形状”apiKeys[] エントリには、id、name、生成された key、および ISO createdAt 文字列が含まれます。 codexAccounts[] エントリには id、email、および isMain が必要で、オプションの plan、chatgptAccountId、およびプライバシー セーフな logLabel が必要です。これらのレコードは通常、ダッシュボードで管理されます。
tokenGuardian (OcxTokenGuardianConfig)
Section titled “tokenGuardian (OcxTokenGuardianConfig)”| フィールド | タイプ | デフォルト | 意味 |
|---|---|---|---|
enabled? |
boolean |
false |
グローバル プロアクティブ リフレッシュ スイッチ。 |
tickSeconds? |
number |
21600 |
スイープ間隔 (6 時間、最小 60 秒)。 |
jitterSeconds? |
number |
300 |
スイープ前のランダムな遅延。 |
concurrency? |
number |
3 |
最大同時リフレッシュ数。 |
leadSeconds? |
number |
900 |
1 ティックを超える余分なリフレッシュ リード タイム。 |
failureBackoffBaseSeconds? |
number |
300 |
初期の過渡障害バックオフ。 |
failureBackoffMaxSeconds? |
number |
3600 |
バックオフの上限と永続的な障害による遅延。 |
codexWarmupEnabled? |
boolean |
false |
合成 Codex プールアカウント検証をオプトインします。 |
codexWarmupMaxAgeSeconds? |
number |
691200 |
8 日後にアカウントを再認証します。 |
codexWarmupModel? |
string |
gpt-5.4-mini |
オプションのウォームアップに使用されるネイティブ モデル。 |
固定プロバイダーエンドポイント
Section titled “固定プロバイダーエンドポイント”ルーティングは、アダプターの前にプロバイダー エンドポイントを解決します。ほとんどの組み込みでは、レジストリ エンドポイントが構成された baseUrl よりも優先されます。 4 つのエントリ タイプでは、構成された URL が保持されます。
- オーバーライドが有効なプロバイダー:
ollama、vllm、lm-studio、litellm、qwen-cloud、およびalibaba-token-plan-intl; azure-openaiやcloudflare-ai-gatewayなど、ユーザーが入力したレジストリ テンプレート。- 古い同じ名前のカスタム宛先を保持する固定 API キー プリセットを昇格しました。そして
- プロバイダーがレジストリに存在しません。
アダプターは、解決された URL を後で調整できます。たとえば、Kiro は、インポートされた資格情報の正規 runtime.{region}.kiro.dev の API リージョンに従います。 アダプターを参照してください。
ルーティングで baseUrl が破棄されると、opencodex はレジストリ エンドポイントと構成された起点のみをログに記録します。構成されたパス自体に資格情報が含まれる場合があります。未使用の URL を削除するか、目的のリージョンに一致するプロバイダー エントリを選択します。 alibaba-token-plan は北京に固定されていますが、alibaba-token-plan-intl は国際エンドポイントをカバーしています。
壊れた openai-responses ゲートウェイの場合、修復はプロバイダー オブジェクトに属します。
{ "providers": { "custom-gateway": { "adapter": "openai-responses", "baseUrl": "https://gateway.example/v1", "apiKey": "${GATEWAY_KEY}", "responsesItemIdRepair": { "reasoning": ["rs_0"], "message": ["msg_0"], "repairMissingTerminalIds": true } } }}プレースホルダー リストは完全に一致します。通常/ステートフル応答プロバイダーのフィールドを未設定のままにして、パススルーがバイトごとに同一になるようにします。
Cursor プロバイダー (adapter: "cursor")
Section titled “Cursor プロバイダー (adapter: "cursor")”カーソルブリッジは実験的なものです。 ocx login cursor の後に、providers.cursor を追加または編集します。ピッカーはカーソル固有のモデル パラメーターをレンダリングできないため、カーソル ルーターの最適化ラダーは別の Codex ID として公開されます。
| Codexモデル | カーソル ルーターモード |
|---|---|
cursor/auto |
チーム/アカウントのデフォルト |
cursor/auto-cost |
コスト |
cursor/auto-balance |
バランス |
cursor/auto-intelligence |
インテリジェンス |
明示的なバリアントは、Cursor の default モデルを optimization パラメータとともに送信し、リクエストごとに選択を保持します。ライブディスカバリーで default を省略しても、これらは引き続き使用できます。
カーソル サーバー駆動のローカル ツールは、デフォルトでは無効になっています。 Codex は、独自の承認とサンドボックス ポリシーを備えた apply_patch や exec_command などの独自のツールを引き続き使用します。
"off"(デフォルト) は、カーソルネイティブのread、write、delete、ls、grep、shell、およびfetch実行。"on"は、信頼できるローカルでの実行を選択し、Codex 承認/サンドボックス セマンティクスをバイパスします。"codex-sandbox"は互換性のために残されていますが、"off"と同様にフェールクローズされます。散文のリクエストは 信頼できるサンドボックス証明書ではありません。
{ "providers": { "cursor": { "adapter": "cursor", "baseUrl": "https://api2.cursor.sh", "authMode": "oauth", "defaultModel": "auto", "nativeLocalExec": "off" } }}最上位ではなく、providers.cursor にフィールドを設定します。ダッシュボードで プロバイダー > カーソル > JSON の編集 を使用し、保存して再起動します。従来の unsafeAllowNativeLocalExec: true は、nativeLocalExec が設定されていない場合にのみ nativeLocalExec: "on" と等しくなります。 MCP、画面録画、およびコンピューターの使用は、mcpServers および desktopExecutor によって個別に制御されます。
各 mcpServers.<name> は、command (stdio) または url (ストリーミング可能な HTTP) のいずれかを受け入れます。 Stdio は args、env、および cwd も受け入れます。 HTTP は headers を受け入れます。どちらも enabled (デフォルトは true) と toolPrefix をサポートします。 desktopExecutor は、computerUseCommand、recordScreenCommand、cwd、env、および timeoutMs (デフォルトは 30000) を受け入れます。コマンドは sh -c を通じて実行され、stdin から 1 つの JSON リクエストを読み取り、1 つの JSON 結果を stdout に書き込む必要があります。
OpenRouter プロバイダーのルーティング
Section titled “OpenRouter プロバイダーのルーティング”OpenRouter は、複数の推論プロバイダーを通じて 1 つのモデルを提供できます。 openRouterRouting は優先プロバイダーでリクエストを保持します。 modelOpenRouterRouting は、正確なモデル ID に置き換えられます。キャッシュのサポート、保持、ヒット率、価格は推論プロバイダーによって異なるため、これはプロンプト キャッシュ アフィニティに役立ちます。
プロバイダー名は OpenRouter スラッグです。 allowFallbacks: false はフェールクローズされます。 true では、順序付きリストの後に別の適格なプロバイダーを許可します。 only は常に許可リストです。
{ "providers": { "openrouter": { "adapter": "openai-chat", "baseUrl": "https://openrouter.ai/api/v1", "apiKey": "${OPENROUTER_API_KEY}", "openRouterRouting": { "order": ["deepseek"], "allowFallbacks": false }, "modelOpenRouterRouting": { "anthropic/claude-sonnet-5": { "only": ["anthropic"], "allowFallbacks": false } } } }}モデル キーは、外部の opencodex プロバイダー プレフィックスを除いた、正確なネイティブ OpenRouter ID です。 openrouter/anthropic-claude-sonnet-5 を選択すると、モデル ルールを適用する前のネイティブ anthropic/claude-sonnet-5 が復元されます。
静的モデルのホワイトリスト
Section titled “静的モデルのホワイトリスト”models のみを公開するように liveModels: false を設定します。 models が空であるか省略されている場合、プロバイダーはルーティングされたモデルを公開しません。ライブ ディスカバリは、キャッシュする前に 4 MiB または 2,000 を超える生のモデル行を拒否します。組み込みのプリセットは下限を使用し、チャットに適した行にフィルターをかけることができます。サイズが大きすぎる、または形式が正しくない結果は、古い/構成されたフォールバックに続きます。ゼロに適格な有効な結果は引き続き権威を持ち、暗黙的に置き換えられたり切り捨てられたりすることはありません。
検出を実行する必要があるが、選択した ID のみが Codex および /v1/models に表示される必要がある場合は、selectedModels を使用します。ダッシュボードには、後で許可リストを変更できるように、検出された完全なリストが保持されます。
プレビュー GPT-5.6 フォールバック エントリは同じメカニズムを使用します。 OpenAI API キー プリセットは、ベース ID と Pro ID にコンテキスト 1050000 と最大入力 922000 をシードします。 OpenRouter は、コンテキスト 1050000 を持つ openai/gpt-5.6-sol、openai/gpt-5.6-terra、および openai/gpt-5.6-luna をシードします。プール/ダイレクトは 372000 をアドバタイズします。同期されたカタログは、xhigh を区別しつつ、max をアドバタイズします。
{ "providers": { "openrouter": { "adapter": "openai-chat", "baseUrl": "https://openrouter.ai/api/v1", "apiKey": "${OPENROUTER_API_KEY}", "liveModels": false, "models": ["deepseek/deepseek-v4-flash", "qwen/qwen3-coder-plus"] } }}{ "port": 10100, "defaultProvider": "openai", "providers": { "openai": { "adapter": "openai-responses", "baseUrl": "https://chatgpt.com/backend-api/codex", "authMode": "forward" }, "anthropic": { "adapter": "anthropic", "baseUrl": "https://api.anthropic.com", "authMode": "oauth", "defaultModel": "claude-sonnet-4-6" }, "ollama-cloud": { "adapter": "openai-chat", "baseUrl": "https://ollama.com/v1", "apiKey": "${OLLAMA_API_KEY}", "defaultModel": "glm-5.2", "noVisionModels": ["glm-5.2", "gpt-oss", "qwen3-coder", "deepseek-v4-pro"] } }, "subagentModels": ["anthropic/claude-opus-5", "ollama-cloud/glm-5.2"], "disabledModels": [], "websockets": false, "webSearchSidecar": { "maxSearchesPerTurn": 3, "routedModelStallTimeoutMs": 200000, "timeoutMs": 60000 }, "visionSidecar": { "enabled": true }}
