AI コーディングエージェントとハーネス
Claude Code、Codex CLI、OpenClaw、Cline、Cursor など 25+ のコーディングエージェントを、同じ 3 ステップでゲートウェイに向けられます。それぞれの正確な設定対象とキー名も掲載しています。
すべての AI コーディングエージェントは、どこかから base URL と API キーを読み取ります。環境変数、設定ファイル、設定パネルのいずれかです。本ページでは、各ハーネスがどこから読むか、どのプロトコルを話すか、実際につまずきやすいハマりどころを 1 つ挙げます。コピーして使える完全な設定はドキュメントにあります。
base_url をゲートウェイに向ける
既定値は https://your-gateway.gatellm.io です。/v1 を含むかどうかは SDK によって異なります(各例に正確な値を記載)。
ゲートウェイのアクセスキーに差し替える
アップストリームの sk-… キーではありません。同じアクセスキーを、お使いの SDK が期待するヘッダーに載せます。
ゲートウェイのモデル名を使う
コンソールで設定した名前です。ベンダー公式の名前ではありません。
Authorization: Bearer <key>x-api-key: <key>x-goog-api-key: <key>ハーネス互換性マトリクス
| ハーネス | プロトコル | 対応状況 | 設定対象 | キー名 / 設定 | ドキュメント |
|---|---|---|---|---|---|
| ターミナルエージェント | |||||
| Claude Code | Anthropic | ネイティブ | env vars | ANTHROPIC_BASE_URL, ANTHROPIC_API_KEY, ANTHROPIC_MODEL | GitHub の設定例 ↗ · ドキュメント |
| Codex CLI | OpenAI Responses | ネイティブ | ~/.codex/config.toml | base_url, env_key, wire_api | GitHub の設定例 ↗ · ドキュメント |
| Gemini CLI | Gemini | ネイティブ | env vars | GOOGLE_GEMINI_BASE_URL, GEMINI_API_KEY | GitHub の設定例 ↗ · ドキュメント |
| OpenClaw | OpenAI / Anthropic-compatible | OpenAI 互換 | openclaw.json | models.providers.<id>.baseUrl, models.providers.<id>.apiKey | ドキュメント |
| opencode | OpenAI-compatible | OpenAI 互換 | opencode.json | provider.<id>.options.baseURL | ドキュメント |
| Crush | OpenAI / Anthropic-compatible | OpenAI 互換 | crush.json | providers.<id>.base_url, providers.<id>.type | ドキュメント |
| Factory Droid | OpenAI / Anthropic-compatible | OpenAI 互換 | ~/.factory/settings.json | customModels[].baseUrl, customModels[].provider | ドキュメント |
| Goose | OpenAI-compatible | OpenAI 互換 | env vars | OPENAI_HOST, OPENAI_BASE_PATH, OPENAI_API_KEY | ドキュメント |
| Aider | OpenAI-compatible (LiteLLM) | OpenAI 互換 | env vars | OPENAI_API_BASE | ドキュメント |
| Qwen Code | OpenAI-compatible | OpenAI 互換 | env vars | OPENAI_BASE_URL, OPENAI_API_KEY, OPENAI_MODEL | ドキュメント |
| OpenHands | OpenAI-compatible (LiteLLM) | OpenAI 互換 | ~/.openhands/settings.json | base_url, model openai/ prefix | ドキュメント |
| Kimi Code CLI | OpenAI / Anthropic | OpenAI 互換 | config.toml | providers | ドキュメント |
| Plandex | OpenAI-compatible | OpenAI 互換 | custom models JSON | baseUrl | ドキュメント |
| SWE-agent | OpenAI-compatible (LiteLLM) | OpenAI 互換 | env vars | OPENAI_BASE_URL | ドキュメント |
| Grok Build | OpenAI-compatible | OpenAI 互換 | config.toml | custom models | ドキュメント |
| Mistral Vibe | OpenAI-compatible | OpenAI 互換 | ~/.vibe/config.toml | providers | ドキュメント |
| MiMo Code | OpenAI-compatible | OpenAI 互換 | /connect custom provider | base URL, API key | ドキュメント |
| ForgeCode | OpenAI / Anthropic | OpenAI 互換 | setup wizard | base URL | ドキュメント |
| Codebuff | OpenAI-compatible | OpenAI 互換 | settings | base URL, API key | ドキュメント |
| IDE / 拡張機能 | |||||
| Cline | OpenAI-compatible | OpenAI 互換 | Settings → OpenAI Compatible | Base URL, API Key, Model ID | ドキュメント |
| Roo Code | OpenAI-compatible | OpenAI 互換 | Settings → OpenAI Compatible | Base URL, API Key, Model ID | ドキュメント |
| Kilo Code | OpenAI-compatible | OpenAI 互換 | Settings → OpenAI Compatible | Base URL, API Key, Model ID | ドキュメント |
| Continue | OpenAI-compatible | OpenAI 互換 | config.yaml | models[].apiBase | ドキュメント |
| Zed | OpenAI-compatible | OpenAI 互換 | settings.json | language_models.openai_compatible.<id>.api_url | ドキュメント |
| Cursor | OpenAI | 一部対応 | Settings → Models → Override OpenAI Base URL | Override OpenAI Base URL | ドキュメント |
| Windsurf | OpenAI-compatible | OpenAI 互換 | Settings → Models → BYOK / custom | Base URL, API Key | ドキュメント |
| GitHub Copilot (BYOK) | OpenAI-compatible | OpenAI 互換 | Manage Models → OpenAI-compatible | Base URL, API Key | ドキュメント |
| マネージドプラットフォーム | |||||
| Warp | OpenAI / Anthropic / Gemini (BYOK) | 一部対応 | Settings → BYOK | BYOK API keys | ドキュメント |
| Amazon Q Developer CLI | MCP | カスタムエンドポイント不可 | MCP server | — | ドキュメント |
| Devin | — | カスタムエンドポイント不可 | — | — | ドキュメント |
ゲートウェイのモデルに付ける名前
一部のハーネスは独自のモデル ID を固定してそのまま送信します。ゲートウェイのモデル名が異なると、最初の呼び出しが 404 になります。合わせる方法は 2 つです。
ゲートウェイのモデルに、ハーネスが要求する名前をそのまま付ける。追加設定は不要です。
または、ハーネスのモデル環境変数(例:ANTHROPIC_MODEL)でゲートウェイの名前に上書きする。
ハマりどころ
Claude Code は設定済みの既定モデル(例:claude-opus-5 や claude-sonnet-5)を送信し、ゲートウェイ側の名前では送りません。ゲートウェイのモデル名をハーネスが要求する名前と完全に一致させるか、モデル環境変数(例:ANTHROPIC_MODEL)をゲートウェイの名前に設定してください。不一致だと最初のメッセージで 404 model_not_found になります。
Anthropic 形式クライアントの base URL はゲートウェイのルート(/v1 なし)です。クライアント自身が /v1/messages を付加します。ここで /v1 を付けるとパスセグメントが二重になります。
Codex CLI ではカスタムの [model_providers.*] ブロックに wire_api = "responses" が必須です。ゲートウェイは /v1/responses をネイティブに実装しているため、base_url をそこに向け、env_key にゲートウェイのアクセスキーを設定してください。
Aider、OpenHands、SWE-agent は LiteLLM 上に構築されています。OPENAI_API_BASE をゲートウェイに設定し、モデル名に openai/ プレフィックス(例:openai/gateway-model-name)を付けると、LiteLLM が OpenAI 互換エンドポイントとしてルーティングします。
Codex、Gemini CLI、Qwen Code は既定でベンダーの OAuth / サブスクリプションログインを使います。ゲートウェイ経由にするには API キー認証へ切り替える(キーと base URL を明示的に設定する)必要があります。そうしないとエージェントはゲートウェイを完全に迂回します。
Cline / Roo / Kilo などはモデル名からツール呼び出しとビジョンの対応可否を判断します。ゲートウェイのカスタム名では関数呼び出しが無効になることがあります。ツール呼び出しが失敗する場合は、クライアントのケイパビリティ検出ルールを確認するか、既知のファミリー名に合わせてモデルを命名してください。
アップストリームの推論が長引くと、ゲートウェイは SSE の :keep-alive コメント行を出力します(無害です。: で始まる行はスキップしてください)。ストリームが途中で切れた場合はエラーにせず _gateway_warning フィールドを挿入するため、Claude Code のようなハーネスが会話全体を中断しません。
auto モードでは、Claude Code は潜在的に危険な操作の前にサーバー側の判定(リクエスト内の safeguards フィールド)を待ちます。アップストリームが Anthropic 公式の場合、判定は同じリクエスト内で生成され、ゲートウェイはそれをそのまま通します。このフィールドを無視する第三者アップストリームの場合、代わりにゲートウェイが判定を返します。出荷時の既定(allow_all)はあらゆる操作を許可するため、呼び出しをそのまま通すより緩くなります。そのアップストリームの extra_config に "anthropic_server_safeguards": "upstream" と書けば、ルートをアップストリーム側に戻せます。コンソールの設定は管理者のみが変更できます。
# Every agent is one base_url + one access key away
export ANTHROPIC_BASE_URL="https://your-gateway.gatellm.io" # Anthropic agents: root (no /v1)
export ANTHROPIC_API_KEY="<gateway access key>"
export OPENAI_API_BASE="https://your-gateway.gatellm.io/v1" # OpenAI-compatible agents: /v1
export OPENAI_API_KEY="<gateway access key>"
# Codex CLI (~/.codex/config.toml) speaks the Responses protocol
# [model_providers.gatellm]
# base_url = "https://your-gateway.gatellm.io/v1"
# wire_api = "responses"