コンテンツにスキップ

設定リファレンス

opencodex は ~/.opencodex/config.json から設定を読みます。ocx init とダッシュボードがこのファイルを 書きますが、直接編集しても構いません。プロキシは起動時に再読み込みします。サービス稼働中は、手編集の前にプロキシを止めるかダッシュボード/管理 API を使ってください。 実行中プロセスは設定をメモリに保持し、途中の保存でディスクを上書きし得ます。v2.7.41 以降、手編集した claudeCode サブツリーはそれらの保存でも保持されます。他のキー(例: providers)は依然として失われることがあります。途切れた、または正しい JSON でないなど ファイルをパースできない場合は config.json.invalid-<timestamp> にバックアップし、コンソールに警告したのちデフォルト値で 起動します。ファイルがなくてもデフォルト設定(単一の openai forward プロバイダー)を使います。

openaiopenai-apikey は固定の予約 id です。openai.codexAccountMode はデフォルト "pool" で メインと追加アカウントを選択し、"direct" は現在の Codex caller/メインログインだけを使います。API は 設定された API key/key pool だけを使います。bare モデルまたは openai-apikey/<model> で選択し、認証情報経路間の fallback はありません。 API GPT-5.6 メタデータは context 1,050,000 / max input 922,000 で、Pro virtual id は wire で base モデルと reasoning.mode: "pro" に変換されます。

openaiProviderTierVersion: 2 は現在の単一プロバイダー projection マーカーです。shipped v1 config を 移行する前に config.json.pre-openai-tiers-v2.bak を no-replace で作成し、既知のレガシー namespaced selected id を bare id に変えます。

FieldTypeDefaultMeaning
portnumber10100プロキシがリッスンするポート。
hostname?string"127.0.0.1"バインドアドレス。LAN に公開するには "0.0.0.0" に設定します(OPENCODEX_API_AUTH_TOKEN が必要、下記 リモートアクセス 参照)。
proxy?string外向きの HTTP(S) プロキシ URL または ${ENV_VAR} 参照。該当環境変数が空のとき HTTP_PROXY / HTTPS_PROXY に適用し、loopback は NO_PROXY に維持します。
providersRecord<string, OcxProviderConfig>プロバイダー名 → 設定 map。
openaiProviderTierVersion?2移行設定単一の省略可能 OpenAI projection 完了マーカー。
defaultProviderstring"openai"ルーティングでより良い match が見つからなかったときに使うプロバイダー。
subagentModels?string[]gpt-5.5、GPT-5.6 3種、gpt-5.4-miniCodex サブエージェントセレクターの先頭に表示するネイティブ slug または provider/model id。最大 5 つで、明示的な空配列もそのまま保存します。v2 ガイダンスのロスターは、Codex の picker-visible・v2 互換・priority 順の先頭 5 件との設定済みモデルの共通部分で、正規カタログ slug と利用可能な effort ラダーを使います。除外された項目も設定には残ります。
injectionModel?string希望するネイティブ/ルーティングのサブエージェントモデル。別の multiAgentGuidanceEnabled が制御する OpenCodex 作成の v2 委任ガイダンスで使われ、syncCodexSubagentDefaults のオプトインにより新しいタスクの Codex ネイティブ既定値にも適用できます。
injectionEffort?string希望するサブエージェント reasoning effort(low から ultra)。injectionModel と一緒に使うときだけ意味を持ち、委任ガイダンスとオプションの Codex ネイティブ既定値で使われます。
syncCodexSubagentDefaults?booleanfalseOpenCodex が有効な Codex ルーティングを管理している場合、選択した injectionModel / injectionEffort を次回の sync または restart で Codex ネイティブの [agents] サブエージェント既定値へ適用するオプトイン設定。外部のユーザー管理 provider 設定は変更しません。新しく作成される Codex タスクだけに作用し、設定自体が委任を発生させることはありません。既存のユーザー所有対象項目は競合として上書きせず保持します。injectionModel が必要で、モデルを消去するとこのオプトインも解除されます。GET/PUT /api/injection-model の部分更新フィールドとして公開されます。
effortCap?stringreasoning effort にリクエストごとに適用する強制上限。マルチエージェント V2 専用機能で、自身のツールリストに V2 協調 surface を持つメインターンと、x-openai-subagent: collab_spawn ヘッダーまたは x-codex-turn-metadata"subagent_kind": "thread_spawn" 標識が正確に一致する spawn された子ターンに適用されます(標識のついた子は自身のツール surface と無関係に適用対象です)。通常のメインターンと V1 surface メインターンは触れず、コンパクションターンは常に上限をバイパスし、multiAgentMode: "v1" は上限機能全体を無効化します(ダッシュボードもパネルを隠します)。low から ultra を許可し、値を上げずに下げるだけです。上限以下でモデルがサポートする最も高い段階に下げます。モデルが effort 制御を公開しない、または上限以下にサポート段階がない場合は effort フィールドを削除しプロバイダーのデフォルトを適用します。maxultra も許可しますが、より低いランク上限を作りません(クライアントが ultramax に変換するためリクエストは low から max で入ります)。ただし、既知のモデル effort ラダーに従い段階が下がるかフィールドが削除される可能性があります。ダッシュボードセレクターは low から xhigh まで提供します。GET /api/effort-capsPUT /api/effort-caps で管理します。
subagentEffortCap?string同じ強制上限を codex-rs 標識が正確に一致する spawn された子ターンにだけ適用します: x-openai-subagent: collab_spawn または x-codex-turn-metadata"subagent_kind": "thread_spawn"。それ以外の内部サブエージェントカテゴリ(レビュー、コンパクション、メモリ整理)はこの上限にかからず、multiAgentMode: "v1" は機能全体を無効化します。low から ultra を許可し両方の上限が設定されていればより低い値を適用し、値を上げずに下げるだけです。上限以下でモデルがサポートする最も高い段階に下げます。モデルが effort 制御を公開しない、または上限以下にサポート段階がない場合は effort フィールドを削除しプロバイダーのデフォルトを適用します。maxultra も許可しますが、より低いランク上限を作りません(クライアントが ultramax に変換するためリクエストは low から max で入ります)。ただし、既知のモデル effort ラダーに従い段階が下がるかフィールドが削除される可能性があります。ダッシュボードセレクターは low から xhigh まで提供します。GET /api/effort-capsPUT /api/effort-caps で管理します。
injectionPrompt?string注入される v2 案内本文を丸ごと差し替えるカスタムテキスト。{{model}}{{effort}}{{roster}} placeholder が置換され、発火条件はそのままです。PUT /api/injection-modelprompt キーでも設定できます。
multiAgentGuidanceEnabled?booleantrueOpenCodex が作成する multi-agent developer ガイダンスだけを制御します。未設定/true は v1/v2 ガイダンスを維持し、false は Codex ネイティブの [agents] 既定値、collaboration surface、subagentModels、routing、effort cap を変えずに両方を抑止します。GET/PUT /api/injection-model は有効値を返し、PUT は部分更新です。
disabledModels?string[]Codex で隠すモデル。ルーティングされた provider/model id はカタログと /v1/models から除外します。gpt-5.4 のような通常のネイティブ GPT slug はカタログ項目を visibility: "hide" に変え、通常の /v1/models 一覧から外します。ダッシュボードの Models ページでモデルごとに切り替えできます。
multiAgentMode?"v1" | "default" | "v2""default"3 段階 multi-agent surface override。"v1" は上流 pin より優先してすべてのモデルを v1 に、"default" は上流 model pin(sol/terra=v2、luna=v1)に従い、"v2" はすべてを v2 に強制します。ダッシュボードの Models ページまたは ocx v2 mode で設定します。
providerContextCaps?Record<string,number>{}プロバイダー別の Codex 表示 context cap。既知の context window を下げるだけです。
contextCapValue?number350000ダッシュボード context-cap control で使う値。変えると providerContextCaps で有効化されたすべての項目を更新します。
stallTimeoutSec?number600上流データが来ないとき bridge が中断し response.incomplete を送るまでの秒数。最小 1。
connectTimeoutMs?number200000DNS/TCP/TLS と最終レスポンスヘッダーだけを待つ試行ごとの deadline。レスポンス body 生成前に終了します。
shutdownTimeoutMs?number5000進行中のターンを中断する前の graceful drain deadline。
websockets?booleanfalsesupports_websockets を知らせ Codex が Responses WebSocket 経路を使うようにします。省略または false なら HTTP/SSE を維持します。
apiKeys?OcxApiKey[][]非 loopback バインドで追加許可する生成型 ocx_… データプレーン認証情報。ADMIN 認証情報ではありません。ダッシュボードが管理し、項目フィールドは下で説明します。
codexAutoStart?booleantrueCodex shim が Codex 実行前に ocx ensure を実行するようにします。false なら ocx ensure は何もしません。
codexShimAutoRestore?booleantrue完了した外部 Codex 更新で以前にインストールした shim が置換された場合に復元します。無効にするには false、またはプロセスで OPENCODEX_CODEX_SHIM_AUTO_RESTORE=0 を設定します。
syncResumeHistory?booleantrue戻せる Codex App 履歴互換モード。opencodex は元の Codex thread metadata をバックアップし、旧 OpenAI interactive row を opencodex に再マッピングし、opencodex が作成した exec row を App に見えるソースとして一時的に昇格します。ocx stop / ocx restore はバックアップした OpenAI row を復元し、残った opencodex user thread を OpenAI に戻し、ネイティブ Codex が config.toml からプロキシを削除した後でも開き続けられるようにします。オフにするには false に設定します。
codexAccounts?CodexAccount[][]Codex Auth ダッシュボードが管理する ChatGPT/Codex pool アカウント metadata。secret は codex-accounts.json に別途置きます。
pausedCodexAccountIds?string[][]Codex Auth で再開するまで、今後のすべての Pool 選択から除外するアカウント ID。メインを一時停止した場合は __main__ も含みます。
codexAccountNamespaces?Record<string,string>公開 model selector namespace から保存済み Codex アカウント target への任意 map。この foundation layer は map を検証・保存しますが、picker row の追加や routing の変更は行いません。
activeCodexAccountId?string手動選択した pool アカウント。既存 thread affinity を消去して次のリクエストから適用し、処理中のリクエストは現在のアカウントを維持します。
autoSwitchThreshold?number80新しいセッション自動切替用の使用量百分率 threshold。既知の 5 時間、週次、30 日 quota window のうち最も高いスコアを使います。0 なら quota 自動切替をオフにします。quota 戦略と fill-first の drain threshold にも使います。
accountPoolStrategy?"quota" | "round-robin" | "fill-first""quota"Codex pool の新しいセッション rotation 戦略。新しいセッションのみに適用され、既存 thread id は affinity を維持します。quota(既定)— アクティブアカウントが autoSwitchThreshold を超えたら既知 usage 最小を選択。round-robin — 適格アカウント間を smooth weighted で均等分散。fill-first — cooldown、使用不可、または(設定時)autoSwitchThreshold までアクティブアカウントを使い切り(未知 usage は強制切替しない)、安定ソート順で次へ。
accountPoolStickyLimit?number11 回の round-robin 選択で次へ進む前に保持する成功的新セッション bind 数。範囲 1–100。accountPoolStrategyround-robin のときのみ。
upstreamFailoverThreshold?number3一時的な上流失敗が連続して起きたのち、以降の新しいセッションを別の適合 pool アカウントに failover する回数。0 なら失敗ベースの failover をオフにします。
modelCacheTtlMs?number300000プロバイダー別 /models キャッシュの有効期間(5 分)。
cacheRetention?"none" | "short" | "long""short"Anthropic prompt cache ポリシー。オフ、5 分 ephemeral、1 時間 extended のいずれか。
webSearchSidecar?OcxWebSearchSidecarConfigonウェブ検索サイドカーオプション(下記参照)。
visionSidecar?OcxVisionSidecarConfigonビジョンサイドカーオプション(下記参照)。
tokenGuardian?OcxTokenGuardianConfigoff選択型の proactive OAuth 更新と Codex アカウント warmup ポリシー。フィールドは下で説明します。
corsAllowOrigins?string[][]CORS で追加で許可する正確な origin。loopback origin は常に許可します。

codexAccountNamespaces のキーは公開 selector です。長さは 1〜64 文字、先頭と末尾は ASCII 英数字、内部には英数字、._- を使用でき、予約済み JavaScript object 名は拒否されます。 値は有効な pool account id(内部 __main__ は不可)、または Codex Desktop アカウントを示す "@main" です。provider と予約済み openai / combo との衝突は大文字小文字を区別せず検査され、 namespace 付き combo alias はその namespace prefix に selector を再利用できません。設定済み pool id や他の selector target も selector と再利用できません。raw account id と email は 非公開のままにし、selector を公開名として使ってください。この foundation layer では map は inert で、 model picker entry の作成、session の固定、Pool / Direct routing の変更は行いません。

maxConcurrentThreadsPerSessionconfig.json キーではなく PUT /api/v2 で使う camel-case フィールドです。ocx v2 threads <n> は対応する max_concurrent_threads_per_session 値を Codex の $CODEX_HOME/config.toml[features.multi_agent_v2] に保存します。その table ができるように v2 を先にオンにしてください。

バックアップ対応より前の開発ビルドで既に syncResumeHistory を実行していた場合は ocx recover-history --legacy-openai で同じ native-provider 復元を強制できます。

apiKeys[] 項目には id: stringname: string、生成された key: string、ISO 形式の createdAt: string が入ります。codexAccounts[] 項目には必須の idemailisMain と選択 planchatgptAccountId、個人情報のない logLabel 文字列が入ります。通常ダッシュボードで管理します。

FieldTypeDefaultMeaning
enabled?booleanfalseproactive refresh 全体スイッチ。
tickSeconds?number21600sweep 間隔(6 時間、最小 60 秒)。
jitterSeconds?number300sweep 前に加えるランダム遅延。
concurrency?number3sweep 1 回で同時に更新する最大数。
leadSeconds?number9001 tick に加える先行更新余裕時間。
failureBackoffBaseSeconds?number300初回一時的失敗 backoff。
failureBackoffMaxSeconds?number3600backoff 上限と恒久失敗遅延。
codexWarmupEnabled?booleanfalse合成 Codex pool アカウント検証 opt-in。
codexWarmupMaxAgeSeconds?number691200アカウントを再検証する最大期間(8 日)。
codexWarmupModel?stringgpt-5.4-mini選択型 warmup に使うネイティブモデル。

opencodex はデフォルトで 127.0.0.1(loopback 専用)にバインドします。hostname0.0.0.0 のような 非 loopback アドレスに設定すると、データプレーンと管理 API は別々の認証情報で保護されます。

起動前に OPENCODEX_API_AUTH_TOKEN 環境変数を設定してください。

Terminal window
export OPENCODEX_API_AUTH_TOKEN="your-secret-token"
ocx start

非 loopback バインドではこの変数または生成済み apiKeys がないとプロキシは起動しません。LAN アクセス用の バックグラウンドサービスをインストールするときも同じ変数を先に export したのち ocx service install を 実行し、launchd、systemd、Task Scheduler に渡す必要があります。データプレーンクライアントはすべての リクエストの x-opencodex-api-key ヘッダーに token を入れる必要があります。

x-opencodex-api-key: your-secret-token

Authorization: Bearer … ヘッダーも許可します。起動後はダッシュボードで生成した apiKeys を環境変数 token の代わりに使えますが、/api/* への権限は与えません。

管理 API とリモートダッシュボードには別の ADMIN token が必要です。OpenCodex は起動時に保護されたローカル secret file を作成するか、OPENCODEX_ADMIN_AUTH_TOKEN を使います。リモートダッシュボードはこの ADMIN 値を入力するよう求め、データプレーン key は拒否します。すべての認証情報候補は定数時間 (timingSafeEqual)で比較します。

Material 3 ダッシュボードの 別の OpenCodex に接続 では IPv4、IPv6、DNS ホスト名と相手の実行中ポートを 手入力できます。相手を probe せず、URL に token を入れず、token も保存しません。自動起動が fallback ポートを使った場合は config.port だけでなく ocx host status または ocx status の identity-verified な live 値を使ってください。

FieldTypeMeaning
adapterstringopenai-chatopenai-responsesanthropicgooglekirocursorazure-openai(または別名 azure)のいずれか。
baseUrlstring上流 API base URL。
responsesPath?stringkey 認証の openai-responses リクエストに使う任意の相対 resource path。/ で始め、URL scheme、query、fragment を含めてはいけません。省略時は従来の /v1/responses URL 構築を維持します。
disabled?boolean設定はディスクに残すがルーティングとモデル/カタログ一覧から除外します。
apiKey?stringAPI キーまたはリクエスト時に解釈する ${ENV_VAR} / $ENV_VAR 参照。
apiKeyTransport?"x-api-key" | "bearer"Anthropic API キーのヘッダー方式。デフォルトはネイティブの x-api-key です。Authorization: Bearer <key> が必要な互換 gateway では "bearer" を設定します。key 認証の anthropic プロバイダーでのみ有効です。
apiKeyPool?ApiKeyPoolEntry[]複数キーを納める pool。apiKey はアクティブ項目を反映します。各項目には idkey、選択 label、選択数値 addedAt があります。
defaultModel?string明示的なモデルなしでこのプロバイダーを選んだときに使うモデル。
models?string[]seed/fallback モデル一覧。liveModelsfalse ならここにあるモデルだけが発見されます。
liveModels?boolean起動/同期時にプロバイダーのリアルタイム /models カタログを取得します(デフォルト true)。false なら設定された models だけを使います。
selectedModels?string[]モデル発見後に適用するカタログ allowlist。空でなければその id だけを Codex に公開し、空または省略なら発見したモデルをすべて公開します。
contextWindow?numberルーティングカタログ項目に表示するプロバイダー単位の context-window cap。リアルタイム metadata がより小さければそのままにします。
modelContextWindows?Record<string,number>モデル別 context-window cap。一致するモデルでは contextWindow より優先し、より小さいリアルタイム metadata を上げません。
modelInputModalities?Record<string,string[]>["text"]["text", "image"] のようなモデル別カタログ input hint。
headers?Record<string,string>追加の上流ヘッダー。Authorization、cookie、API-key ヘッダー、改行を含む値、誤ったヘッダー名は拒否します。
authMode?"key" | "forward" | "oauth"認証方式(デフォルト key)。プロバイダー 参照。
codexAccountMode?"pool" | "direct"canonical openai 専用。省略すると Pool で Direct は pool 状態を飛ばします。
refreshPolicy?"proactive" | "lazy-only" | "disabled"この OAuth プロバイダーの Token Guardian ポリシー override。
reasoningEfforts?string[]公表・送信するプロバイダー単位の Codex reasoning ラベル(lowmediumhighxhighmaxultra)。
modelReasoningEfforts?Record<string,string[]>モデル別 reasoning ラベル。空配列はそのモデルの effort control を隠します。
modelSupportsReasoningSummaries?Record<string,boolean>モデル別 reasoning summary capability。false にすると summary 対応を広告せず、openai-responses リクエスト前に summary-delivery フィールドを除去します。
modelReasoningSummaryDelivery?Record<string,"sequential" | "sequential_cutoff" | "concurrent" | "concurrent_cutoff">モデル別の Responses delivery enum。設定したモデルは summary 対応を維持し、既存の stream_options.reasoning_summary_delivery だけを書き換えます。同じモデルの summary capability を false にはできません。
reasoningEffortMap?Record<string,string>プロバイダー単位の reasoning ラベル wire alias。上流が別の値を要求するときだけ使います。
modelReasoningEffortMap?Record<string,Record<string,string>>モデル別 reasoning ラベル wire alias。
noReasoningModels?string[]reasoning/thinking パラメータを拒否するモデル。アダプターが reasoning_effort を削除します。
noTemperatureModels?string[]呼び出し元が指定した temperature を拒否するモデル。
noTopPModels?string[]呼び出し元が指定した top_p を拒否するモデル。
noPenaltyModels?string[]presence/frequency penalty を拒否するモデル。
parallelToolCalls?boolean並列ツール呼び出しをオン/オフします。OpenAI Chat はデフォルト on で、chat 以外のアダプターは明示的な true でのみサポートを公表します。
autoToolChoiceOnlyModels?string[]tool_choiceauto または none だけを受け付けるモデル。強制/指定選択は downgrade します。
preserveReasoningContentModels?string[]前の assistant reasoning_content を chat history に維持すべきモデル。
thinkingToggleModels?string[]effort 段階の代わりに vendor thinking.enabled toggle を使う chat モデル。
thinkingBudgetModels?string[]整数 thinking_budget を使う chat モデル。effort を budget 比率にマッピングします。
noVisionModels?string[]テキスト専用モデル。ビジョンサイドカー が画像を説明します。Ollama の :size タグも一致させます。
escapeBuiltinToolNames?booleanUmans のような Anthropic 互換 gateway が wire でツール名 escaping を要求するときに使います。opencodex はツール呼び出しを Codex に戻す前に prefix を削除します。
googleMode?"ai-studio" | "vertex" | "cloud-code-assist"Google 伝送/認証モード。デフォルト ai-studio
project?stringVertex project id または Antigravity Cloud Code Assist project id。
location?stringVertex location。環境変数 fallback は GOOGLE_CLOUD_LOCATION
mcpServers?Record<string,CursorMcpServerConfig>Cursor 専用。 stdio で起動する、または Streamable HTTP で接続する MCP server。フィールドは下で説明します。
desktopExecutor?DesktopExecutorConfigCursor 専用。 外部 computer-use/record-screen コマンド。フィールドは下で説明します。
unsafeAllowNativeLocalExec?booleanCursor アダプター専用。 Cursor サーバーが指示したローカル read / write / delete / ls / grep / shell / fetch 実行を許可する opt-in escape hatch。デフォルト false なのでリモート Cursor メッセージが Codex の承認と sandbox を迂回できません。下記 Cursor プロバイダー 参照。

Cursor プロバイダー(adapter: "cursor"

Section titled “Cursor プロバイダー(adapter: "cursor")”

Cursor bridge は実験的です。ocx login cursor を実行したのち ~/.opencodex/config.json(Windows: %USERPROFILE%\.opencodex\config.json)の providers 以下に cursor 項目を追加または編集してください。

Cursor サーバーが指示するネイティブローカルツールはデフォルトで オフ です。Codex は自身のツール (apply_patchexec_command など)を既存の承認・ sandbox ポリシーに従って引き続き使います。Cursor が Codex の承認経路なしにローカルファイルを読み、書き、消去、一覧、または grep/shell/fetch を実行してもよい 信頼されたローカル実験でのみ unsafeAllowNativeLocalExec を設定してください。

{
"providers": {
"cursor": {
"adapter": "cursor",
"baseUrl": "https://api2.cursor.sh",
"authMode": "oauth",
"defaultModel": "auto",
"unsafeAllowNativeLocalExec": true
}
}
}

このフラグは最上位 config.json ではなく プロバイダーオブジェクトproviders.cursor)に置きます。

ウェブダッシュボード でも設定できます。Providers → Cursor → Edit JSON"unsafeAllowNativeLocalExec": true を追加して保存し、プロキシを 再起動してください(ocx restart または ocx stop + ocx start)。

MCP、画面録画、computer-use は別の mcpServers / desktopExecutor 設定を使い、このフラグの影響を 受けません。

mcpServers.<name> 値は command(stdio)または url(Streamable HTTP)のいずれかを受け取ります。 stdio 項目には args?: string[]env?: Record<string,string>cwd?: string も置け、HTTP 項目には headers?: Record<string,string> を置けます。両形式とも enabled?: boolean(デフォルト true)と toolPrefix?: string をサポートします。

desktopExecutorcomputerUseCommand?recordScreenCommand?cwd?env?: Record<string,string>timeoutMs?(デフォルト 30000)を受け取ります。コマンドは sh -c で実行され、 stdin から JSON リクエストを 1 つ読み、stdout に JSON 結果を 1 つ書く必要があります。

一部のプロバイダーはリアルタイムモデルカタログが非常に大きいか遅いです。Codex に models で固定したモデルだけ 見せるには liveModelsfalse に設定してください。

liveModelsfalsemodels が空または省略されると opencodex はそのプロバイダーのルーティング モデルを 1 つも公開しません。

selectedModels は目的が異なります。モデル発見は引き続き実行しますが選択した id だけを Codex カタログと /v1/models に公開します。ダッシュボードには全モデル一覧が残るため、後で allowlist を変えられ ます。

プレビュー GPT-5.6 fallback 項目も同じ方式を使います。OpenAI API キー preset は base と Pro id を context 1050000、max input 922000 で seed し、OpenRouter preset は openai/gpt-5.6-solopenai/gpt-5.6-terraopenai/gpt-5.6-luna を context 1050000 で seed します。Pool/Direct Codex catalog 契約は 372000 です。同期された Codex カタログでは max reasoning を公表しますが xhigh と区別します。リアルタイムプロバイダー結果とこの明示項目をマージするには liveModels をオンにし、models だけを公開するには false に設定してください。

{
"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"]
}
}
}

webSearchSidecarOcxWebSearchSidecarConfig

Section titled “webSearchSidecar(OcxWebSearchSidecarConfig)”
FieldTypeDefaultMeaning
enabled?boolean選択したバックエンドが使えるとき on全体スイッチ。ウェブ検索サイドカーをオフにするには false に設定します。
backend?"openai" | "anthropic"自動実行バックエンド。明示した値が優先し、省略すると使える Anthropic OAuth アカウントがあるとき anthropic、ないとき openai を選びます。
model?stringバックエンド別デフォルト検索モデル。openaigpt-5.6-lunaanthropicclaude-sonnet-5 を使います。明示的に残った旧 gpt-5.4-mini 値は起動時にマイグレーションします。
reasoning?stringlowサイドカー reasoning effort(minimal はウェブ検索と併用不可)。
maxSearchesPerTurn?number3メインモデル 1 ターンで実行する実際の検索の総数(loop guard)。
routedModelStallTimeoutMs?number200000設定ファイルからだけ指定できる、ルーティングモデル反復ごとの raw レスポンス byte 連続無活動 deadline。1 から 2147483647 までの整数でなければならず、空でないレスポンス body chunk が来るたびに再開します。
timeoutMs?number200000ホステッドウェブ検索リクエスト 1 つを制限する別の deadline。

openai バックエンドはアクティブな ChatGPT forward プロバイダーでホステッド検索を実行するため、ChatGPT ログインと該当プロバイダーが両方必要です。Claude Code から来たルーティングリクエストは内部サイドカー呼び出しにメイン ChatGPT 認証を注入するため、この経路に接続できます。anthropic バックエンドは アクティブな Anthropic OAuth プロバイダーの保存されたアクティブ認証情報で Claude の web_search_20250305 ツールを実行します。backend: "anthropic" を明示したのにアクティブアカウントが使えない、または needsReauth 状態なら、OpenAI に切り替えず失敗して止まります。

ウェブ検索経路には 4 つの clock があります。デフォルト bridge event stall 予算(stallTimeoutSec)、 DNS/TCP/TLS/最終 header 予算(connectTimeoutMs)、ルーティングモデルの raw byte 無活動 (routedModelStallTimeoutMs)、ホステッド検索 1 つの制限(timeoutMs)です。実際の bridge watchdog は max(デフォルト stall, connect timeout, ルーティングモデル stall, サイドカー timeout) + 30秒 です。ルーティングモデル stall は無活動監視装置で全体生成 timeout ではありません。

FieldTypeDefaultMeaning
enabled?boolean選択したバックエンドが使えるとき on全体スイッチ。画像説明をオフにするには false に設定します。
backend?"openai" | "anthropic"自動実行バックエンド。ウェブ検索と同じ明示値優先、Anthropic 認証情報検出ルールを使います。
model?stringバックエンド別デフォルト画像説明モデル。openaigpt-5.4-minianthropicclaude-sonnet-5 を使います。
maxDescriptionsPerTurn?number8メインモデル 1 ターンで新規実行する説明(cache miss)の最大数。0 なら説明呼び出しをせず、誤った値はデフォルトを使います。
timeoutMs?number45000サイドカー fetch timeout。

ビジョンサイドカーはプロバイダーの noVisionModels 一覧に該当するモデルに画像が来たときだけ 動作します。OpenAI バックエンドはウェブ検索と同様に ChatGPT ログインと forward プロバイダーが両方 必要です。Anthropic バックエンドは保存された OAuth を使い、使える認証情報がないのに明示すると 失敗して止まります。成功した data: 画像説明はバックエンド、モデル、detail、画像バイト、正規化した メッセージ文脈をキーにしてサイズ制限付きプロセスキャッシュに保存します。キャッシュヒットと同じターンの重複 リクエストは maxDescriptionsPerTurn の枠を使いません。リモート https: 画像と失敗または空の説明は キャッシュしません。

Anthropic OAuth 検出と画像説明リクエストは opencodex で既に使っている Claude Code OAuth fingerprint 方式をそのまま踏襲します。保存所の既存 OAuth 先例の中にありますが、実際に使うアカウントと 作業量で十分に soak test するのがよいでしょう。

{
"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": 200000
},
"visionSidecar": { "enabled": true }
}