Claude Code envoie le champ context_management avec l’en-tête anthropic-beta qui l’active, et cette erreur 400 signifie que le champ est arrivé à un backend qui ne l’accepterait pas : une passerelle ou un proxy a supprimé l’en-tête, ou a transmis la requête à un backend doté d’un schéma différent, comme Amazon Bedrock. Claude Code ne réessaie pas. Définissez CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 (Claude Code 2.1.27 ou version ultérieure) pour cesser d’envoyer le champ, ou configurez la passerelle afin qu’elle transmette anthropic-beta.
L’erreur
// Through Kunavo, if a channel rejects the field: the upstream message, typed as
// Anthropic types a 400; no request_id field, the upstream's own id is appended:
{"type":"error","error":{"type":"invalid_request_error","message":"context_management: Extra inputs are not permitted (request id: …)"}}
// From Anthropic's API directly, as Claude Code prints it:
// API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"context_management: Extra inputs are not permitted"},"request_id":"req_011C..."}
// request_id varies per request; a gateway may drop it, or append its own id to the message.
// Same mismatch, other fields: tools.0.custom.eager_input_streaming, tools.N.custom.defer_loadingCauses et solutions en bref
| Cause | Solution |
|---|---|
| Une passerelle transmet le corps mais supprime anthropic-beta | Transmettez l’en-tête sans modification, ou définissez CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 sur le client. |
| Une passerelle au format Anthropic devant Amazon Bedrock ou Google Cloud | Pointez Claude Code vers le format propre à ce fournisseur (CLAUDE_CODE_USE_BEDROCK ou CLAUDE_CODE_USE_VERTEX), ou définissez le paramètre. |
| Claude Code antérieur à 2.1.27 | Mettez à jour. Avant la version 2.1.27, le paramètre ne couvrait pas la gestion du contexte. |
| L’erreur mentionne plutôt eager_input_streaming ou defer_loading | Même incompatibilité, avec un champ d’outil bêta. Le paramètre les supprime à partir de la version 2.1.77. |
Confirmer que l’en-tête est bien l’élément manquant
Claude Code associe chaque champ de corps en préversion à la valeur anthropic-beta qui l’active, et les deux doivent voyager ensemble : une passerelle qui supprime l’en-tête tout en transmettant le corps produit des erreurs 400 explicites, et la fonctionnalité ne se désactive silencieusement que lorsque les deux sont absents (https://code.claude.com/docs/en/llm-gateway-protocol#feature-pass-through, en septembre 2026). Envoyez une requête à votre URL de base avec le champ et son en-tête, selon la structure utilisée par la page de modification du contexte d’Anthropic, sans son outil de recherche web (https://platform.claude.com/docs/en/build-with-claude/context-editing). La même erreur 400 avec l’en-tête présent signifie que celui-ci n’atteint pas un backend qui l’accepte.
curl -s "$ANTHROPIC_BASE_URL/v1/messages" \
-H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: context-management-2025-06-27" \
-H "content-type: application/json" \
-d '{"model": "claude-sonnet-4-6", "max_tokens": 64,
"messages": [{"role": "user", "content": "ping"}],
"context_management": {"edits": [{"type": "clear_tool_uses_20250919"}]}}'Empêcher Claude Code de l’envoyer : CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
Il s’agit de la correction côté client documentée : la propre référence d’erreurs de Claude Code l’indique pour ce message comme solution de repli lorsque la passerelle ne peut pas être configurée pour transmettre l’en-tête (https://code.claude.com/docs/en/errors#extra-inputs-are-not-permitted). Elle supprime les en-têtes anthropic-beta spécifiques à Anthropic et les champs de schéma d’outils bêta tels que defer_loading et eager_input_streaming (https://code.claude.com/docs/en/env-vars), et le guide des passerelles précise qu’elle arrête également les champs de corps en préversion, y compris la gestion du contexte (https://code.claude.com/docs/en/llm-gateway-protocol#disable-pre-release-capabilities). Elle nécessite Claude Code 2.1.27 ou version ultérieure : cette version, publiée le 30 janvier 2026, est celle dont le journal des modifications indique que le paramètre évite désormais l’erreur de gestion du contexte pour les utilisateurs de passerelles (https://code.claude.com/docs/en/changelog). Le coût est la désactivation des fonctionnalités en préversion et de la recherche d’outils MCP, qui sont donc chargés au démarrage (à partir de la version 2.1.227, les paramètres gérés peuvent maintenir la recherche d’outils activée) ; le raisonnement adaptatif est choisi par le modèle, et non par une fonctionnalité bêta, et reste activé. Ajoutez-le au bloc env de ~/.claude/settings.json pour l’appliquer à chaque session (https://code.claude.com/docs/en/settings-reference#env).
claude --version # 2.1.27 or later
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
claude
# Every session, in ~/.claude/settings.json:
# { "env": { "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1" } }Si vous exploitez la passerelle : transmettez anthropic-beta ou faites le pont entre les formats
Le guide des passerelles de Claude Code répertorie anthropic-version et anthropic-beta parmi les en-têtes à transmettre sans modification sur une route au format Anthropic, et demande aux passerelles de transmettre les en-têtes et champs de corps anthropic-* sous forme de listes ouvertes plutôt que de n’autoriser que ceux connus aujourd’hui, car chaque version en ajoute de nouveaux. Il cite une source fréquente de cette erreur 400 : une passerelle qui accepte les requêtes au format Anthropic et les transmet à Amazon Bedrock. Si c’est votre configuration, exposez le format propre au fournisseur et pointez Claude Code vers celui-ci à l’aide des variables du fournisseur ci-dessous ; sur cette route, Claude Code limite les en-têtes et champs bêta envoyés à ceux acceptés par le fournisseur (https://code.claude.com/docs/en/llm-gateway-connect#route-to-a-cloud-provider-through-a-gateway).
# Only if your gateway exposes the Amazon Bedrock format:
export ANTHROPIC_BEDROCK_BASE_URL=https://llm-gateway.example.com/bedrock
export CLAUDE_CODE_SKIP_BEDROCK_AUTH=1
export CLAUDE_CODE_USE_BEDROCK=1Si vous appelez via Kunavo
Kunavo faisait partie des passerelles concernées par cette page. Jusqu’au 24 septembre 2026, son endpoint /v1/messages transmettait en amont votre corps JSON tel quel, y compris context_management, mais supprimait anthropic-beta — la combinaison corps transmis/en-tête supprimé citée par la référence d’erreurs de Claude Code — et les requêtes Claude Code via Kunavo échouaient avec ce message jusqu’au début de septembre 2026, toutes sur un canal amont retiré le 11 septembre. Kunavo transmet désormais les valeurs anthropic-beta qui ne modifient pas le coût d’une requête, notamment context-management-2025-06-27, et supprime le reste, comme le mode rapide, les solutions de repli côté serveur, la compaction et la bêta de contexte 1M ; une requête utilisant le mode rapide, les solutions de repli côté serveur, la compaction ou l’outil advisor reçoit une erreur 400 mentionnant le champ. Le canal qui sert Claude aujourd’hui a accepté context_management avec et sans son en-tête lors d’un test du 24 septembre 2026 ; vous ne devriez donc pas avoir besoin de CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS avec Kunavo. Ce canal décide quels champs en préversion il accepte, quels que soient les en-têtes reçus : lors du même test, il a rejeté output_config.task_budget et clear_at dans un message système comme entrées supplémentaires, avec ou sans leurs en-têtes. Si un rejet vous parvient, il arrive sous la forme HTTP 400 typed invalid_request_error, avec le texte du message amont et l’identifiant de requête amont ajouté ; ni Kunavo ni Claude Code ne réessaient, et la requête n’est pas facturée. Le reste de la configuration de Claude Code pour Kunavo se trouve dans le guide d’intégration de Claude Code.
Questions fréquentes
Que signifie « context_management: Extra inputs are not permitted » ?
L’API, ou le backend derrière votre passerelle, a reçu un champ context_management qu’il n’accepte pas. Dans l’API d’Anthropic, ce champ nécessite l’en-tête bêta de modification du contexte (context-management-2025-06-27), et la référence d’erreurs de Claude Code attribue ce message à un proxy ou une passerelle qui a supprimé l’en-tête anthropic-beta. Claude Code envoie le champ et l’en-tête ensemble : un élément intermédiaire a donc supprimé l’en-tête ou transmis la requête à un backend doté d’un schéma différent.
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS désactive-t-il la réflexion ou la mise en cache des invites ?
Non. Le raisonnement adaptatif est sélectionné par le modèle, et non par une fonctionnalité bêta, et la mise en cache standard des invites (cache_control) n’a pas d’association bêta. Le paramètre supprime les fonctionnalités en préversion — en-têtes bêta, champs d’outils bêta, gestion du contexte — ainsi que la recherche d’outils MCP, qui sont donc chargés au démarrage. Sur les modèles plus anciens utilisant la réflexion étendue manuelle, la réflexion entre les appels d’outils nécessite un en-tête bêta, et elle est donc également désactivée.
Existe-t-il un paramètre qui désactive uniquement context_management ?
Pas de paramètre documenté en septembre 2026. Le paramètre couvre toutes les fonctionnalités en préversion à la fois — la seule exception, depuis Claude Code 2.1.227, consiste à maintenir la recherche d’outils MCP via les paramètres gérés — et une demande de paramètre uniquement pour context_management (anthropics/claude-code#64510) a été clôturée pour inactivité. Ne construisez pas votre configuration sur des variables absentes de la référence des variables d’environnement de Claude Code.
Devrais-je plutôt revenir à une ancienne version de Claude Code ?
En janvier 2026, des commentateurs sur anthropics/claude-code#21612 ont indiqué que 2.1.20 était la dernière version fonctionnelle, mais la correction livrée était la version 2.1.27, dont l’entrée du journal des modifications étend la couverture du paramètre à cette erreur. Un verrouillage sur une version aussi ancienne ne bénéficie pas non plus de la version 2.1.77, qui a fait en sorte que le paramètre supprime les champs d’outils bêta. Définissez le paramètre et restez à jour.
L’erreur mentionne plutôt tools.0.custom.eager_input_streaming
Même type d’incompatibilité, avec un champ différent : un champ de schéma d’outil est arrivé à un backend qui le rejette. Derrière une URL de base personnalisée, Claude Code n’envoie ce champ — diffusion d’outils à granularité fine — que si vous définissez CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1. Le paramètre supprime les champs d’outils bêta à partir de la version 2.1.77, et la version 2.1.80 a corrigé les erreurs 400 de diffusion d’outils à granularité fine via les proxys, Bedrock et Vertex.
Guides associés
- Claude Code « API Error: bad_response_status_code » — lire le statut sous-jacent
- Claude Code « API Error: 401 authentication_error » avec une URL de base personnalisée — toutes les causes
- Passerelle LLM — une API pour chaque modèle : routage, basculement, facturation et observabilité (2026)
- API Claude 400 « Invalid `signature` in `thinking` block » — ce qui a invalidé la signature et comment récupérer
La sémantique détaillée des erreurs est disponible dans référence des erreurs ; obtenir une clé prend une minute via inscription et la guide d’authentification.