Agents de codage IA et outils

Pointez Claude Code, Codex CLI, OpenClaw, Cline, Cursor et plus de 25 autres agents de codage vers la passerelle avec les mêmes trois étapes — chacun avec sa cible de configuration exacte et ses noms de clés.

Chaque agent de codage IA lit une URL de base et une clé API quelque part — une variable d’environnement, un fichier de configuration ou un panneau de réglages. Cette page indique où chaque outil les lit, quel protocole il parle et le piège qui cause réellement des problèmes. Les configurations complètes à copier-coller se trouvent dans la documentation.

1

Pointer base_url vers la passerelle

Par défaut https://your-gateway.gatellm.io — la présence de /v1 dépend du SDK (chaque exemple donne la valeur exacte).

2

Remplacer par une clé d’accès à la passerelle

Ce n’est pas une clé amont sk-… — la même clé d’accès s’insère dans l’en-tête attendu par votre SDK.

3

Utiliser le nom de modèle de la passerelle

Celui que vous avez configuré dans la console — pas le nom officiel du fournisseur.

Authorization: Bearer <key>
OpenAI · DashScope · générique
Le préfixe Bearer est insensible à la casse
x-api-key: <key>
SDK Anthropic
Authorization est également accepté
x-goog-api-key: <key>
SDK Gemini
Authorization est également accepté

Matrice de compatibilité des outils

OutilProtocolePrise en chargeCible de configurationNoms de clés / réglagesDocs
Agents en terminal
Claude CodeAnthropicNatifenv varsANTHROPIC_BASE_URL, ANTHROPIC_API_KEY, ANTHROPIC_MODELConfig GitHub ↗ · Docs
Codex CLIOpenAI ResponsesNatif~/.codex/config.tomlbase_url, env_key, wire_apiConfig GitHub ↗ · Docs
Gemini CLIGeminiNatifenv varsGOOGLE_GEMINI_BASE_URL, GEMINI_API_KEYConfig GitHub ↗ · Docs
OpenClawOpenAI / Anthropic-compatibleCompatible OpenAIopenclaw.jsonmodels.providers.<id>.baseUrl, models.providers.<id>.apiKeyDocs
opencodeOpenAI-compatibleCompatible OpenAIopencode.jsonprovider.<id>.options.baseURLDocs
CrushOpenAI / Anthropic-compatibleCompatible OpenAIcrush.jsonproviders.<id>.base_url, providers.<id>.typeDocs
Factory DroidOpenAI / Anthropic-compatibleCompatible OpenAI~/.factory/settings.jsoncustomModels[].baseUrl, customModels[].providerDocs
GooseOpenAI-compatibleCompatible OpenAIenv varsOPENAI_HOST, OPENAI_BASE_PATH, OPENAI_API_KEYDocs
AiderOpenAI-compatible (LiteLLM)Compatible OpenAIenv varsOPENAI_API_BASEDocs
Qwen CodeOpenAI-compatibleCompatible OpenAIenv varsOPENAI_BASE_URL, OPENAI_API_KEY, OPENAI_MODELDocs
OpenHandsOpenAI-compatible (LiteLLM)Compatible OpenAI~/.openhands/settings.jsonbase_url, model openai/ prefixDocs
Kimi Code CLIOpenAI / AnthropicCompatible OpenAIconfig.tomlprovidersDocs
PlandexOpenAI-compatibleCompatible OpenAIcustom models JSONbaseUrlDocs
SWE-agentOpenAI-compatible (LiteLLM)Compatible OpenAIenv varsOPENAI_BASE_URLDocs
Grok BuildOpenAI-compatibleCompatible OpenAIconfig.tomlcustom modelsDocs
Mistral VibeOpenAI-compatibleCompatible OpenAI~/.vibe/config.tomlprovidersDocs
MiMo CodeOpenAI-compatibleCompatible OpenAI/connect custom providerbase URL, API keyDocs
ForgeCodeOpenAI / AnthropicCompatible OpenAIsetup wizardbase URLDocs
CodebuffOpenAI-compatibleCompatible OpenAIsettingsbase URL, API keyDocs
IDE et extensions
ClineOpenAI-compatibleCompatible OpenAISettings → OpenAI CompatibleBase URL, API Key, Model IDDocs
Roo CodeOpenAI-compatibleCompatible OpenAISettings → OpenAI CompatibleBase URL, API Key, Model IDDocs
Kilo CodeOpenAI-compatibleCompatible OpenAISettings → OpenAI CompatibleBase URL, API Key, Model IDDocs
ContinueOpenAI-compatibleCompatible OpenAIconfig.yamlmodels[].apiBaseDocs
ZedOpenAI-compatibleCompatible OpenAIsettings.jsonlanguage_models.openai_compatible.<id>.api_urlDocs
CursorOpenAIPartielSettings → Models → Override OpenAI Base URLOverride OpenAI Base URLDocs
WindsurfOpenAI-compatibleCompatible OpenAISettings → Models → BYOK / customBase URL, API KeyDocs
GitHub Copilot (BYOK)OpenAI-compatibleCompatible OpenAIManage Models → OpenAI-compatibleBase URL, API KeyDocs
Plateformes managées
WarpOpenAI / Anthropic / Gemini (BYOK)PartielSettings → BYOKBYOK API keysDocs
Amazon Q Developer CLIMCPAucun point de terminaison personnaliséMCP server—Docs
Devin—Aucun point de terminaison personnalisé——Docs

Quel nom donner au modèle de la passerelle

Certains outils imposent leur propre ID de modèle et l’envoient tel quel. Si le nom de votre modèle de passerelle diffère, le premier appel renvoie 404. Deux façons de s’aligner :

Claude Code
①

Nommez le modèle de la passerelle exactement comme l’outil le demande — aucune configuration supplémentaire.

②

Ou forcez l’outil à utiliser votre nom de passerelle via sa variable d’environnement de modèle (par exemple ANTHROPIC_MODEL).

Pièges

L’outil impose son propre ID de modèle

Claude Code envoie sa valeur par défaut configurée (par exemple claude-opus-5 ou claude-sonnet-5) — pas le nom de votre passerelle. Soit nommez le modèle de la passerelle exactement comme l’outil le demande, soit définissez sa variable d’environnement de modèle (par exemple ANTHROPIC_MODEL) sur votre nom de passerelle. En cas d’incohérence → 404 model_not_found dès le premier message.

Les outils au protocole Anthropic prennent la racine, pas /v1

L’URL de base des clients de style Anthropic pointe vers la racine de la passerelle (sans /v1) — le client ajoute lui-même /v1/messages. Ajouter /v1 ici double le segment de chemin.

Les fournisseurs personnalisés Codex exigent wire_api="responses"

Codex CLI impose wire_api = "responses" pour un bloc [model_providers.*] personnalisé. La passerelle implémente /v1/responses nativement — pointez base_url vers elle et définissez env_key sur une clé d’accès à la passerelle.

Les outils reposant sur LiteLLM veulent un préfixe de modèle openai/

Aider, OpenHands et SWE-agent reposent sur LiteLLM : définissez OPENAI_API_BASE sur la passerelle et donnez au modèle un préfixe openai/ (par exemple openai/gateway-model-name) pour que LiteLLM le route comme un point de terminaison compatible OpenAI.

Par défaut, c’est l’OAuth d’abonnement, pas votre clé

Codex, Gemini CLI et Qwen Code utilisent par défaut la connexion OAuth / abonnement du fournisseur. Pour router via la passerelle, vous devez passer à l’authentification par clé API (définir explicitement la clé + l’URL de base) — sinon l’agent contourne entièrement la passerelle.

Les IDE déduisent la prise en charge des outils/vision depuis l’ID de modèle

Cline / Roo / Kilo et d’autres décident de la capacité d’appel d’outils et de vision à partir du nom du modèle. Un nom de passerelle personnalisé peut désactiver l’appel de fonctions — si les appels d’outils échouent, vérifiez les règles de détection de capacités du client ou nommez le modèle comme une famille connue.

Une inférence longue ajoute :keep-alive et _gateway_warning

Pendant une longue inférence amont, la passerelle émet des lignes de commentaire SSE :keep-alive (inoffensives — ignorez les lignes commençant par :), et en cas de rupture en cours de flux elle insère un champ _gateway_warning au lieu de renvoyer une erreur, afin que des outils comme Claude Code n’interrompent pas toute la conversation.

Mode auto de Claude Code : décidez qui répond au verdict de sécurité

En mode auto, Claude Code attend un verdict côté serveur (un champ safeguards dans la requête) avant une action potentiellement dangereuse. Lorsque l’amont est Anthropic officiel, le verdict est produit dans la même requête et la passerelle le transmet tel quel. Lorsque l’amont est un tiers qui ignore ce champ, c’est la passerelle qui répond — et la valeur par défaut livrée (allow_all) libère toutes les actions, ce qui est plus permissif que de laisser l’appel intact. Rendez une route à son amont en écrivant "anthropic_server_safeguards": "upstream" dans l’extra_config de cet amont ; le réglage dans la console est réservé aux administrateurs.

# 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"

FAQ