Claude Code auto mode échoue à chaque tour derrière une passerelle ? La 2.1.317 corrige les 403/422 (mise à jour et tests)

Claude Code 2.1.317 (publié le 3 novembre) corrige l'échec du mode auto à chaque tour lorsque ANTHROPIC_BASE_URL pointe vers une passerelle LLM qui répond 403 ou 422 à la vérification de sécurité côté serveur. Ce guide explique ce qui change, qui est concerné, comment mettre à jour et vérifier la version, comment configurer la Base URL et la clé puis activer le mode auto, avec des tests comparés de 2.1.316 et 2.1.317, un tableau des erreurs et une FAQ.

9 分钟阅读
Claude Code auto mode échoue à chaque tour derrière une passerelle ? La 2.1.317 corrige les 403/422 (mise à jour et tests)

En bref : si vous utilisez Claude Code via une passerelle ou un relais tiers (une ANTHROPIC_BASE_URL personnalisée) et que chaque tour échoue en 403 ou 422 dès que le mode auto est actif, passez à la 2.1.317.

  • Selon le CHANGELOG officiel de Claude Code, la 2.1.317 corrige « le mode auto qui échoue à chaque tour quand une passerelle LLM définie comme base URL répond 403 ou 422 à sa vérification de sécurité côté serveur » ; un 403 avec apiKeyHelper reste inchangé. La 2.1.317 a été publiée sur npm le 2 novembre 2026 à 23:57 UTC.
  • Le 3 novembre après-midi (heure de Pékin), nous avons simulé avec un proxy local une passerelle qui rejette la vérification : la 2.1.316 échoue dès la première requête puis à chaque tour ; la 2.1.317 réessaie une fois sans le champ de vérification et termine la tâche.
  • En connexion directe à aicodewith (https://api.aicodewith.ai), le mode auto a terminé la tâche en 2.1.316 comme en 2.1.317. Notre API répond 200 à la requête de vérification et Claude Code passe à son classifieur local.
  • Impossible de mettre à jour tout de suite ? Définissez CLAUDE_CODE_AUTO_MODE_SERVER=0 pour que le mode auto ne demande plus la vérification au serveur. Testé et fonctionnel sur 2.1.316.

Créer une API Key et utiliser Claude dans Claude Code, Codex et Cursor →

Ce qui change dans la 2.1.317

Le mode auto est un mode de permissions de Claude Code : au lieu de valider chaque action vous-même, un classifieur vérifie en arrière-plan si chaque action est sûre. Selon la documentation des modes de permissions, quand ANTHROPIC_BASE_URL pointe vers une passerelle ou un proxy LLM, Claude Code demande d'abord au serveur de faire cette vérification (classifieur côté serveur), et revient au classifieur local si le serveur ne vérifie pas.

Le problème se situe à cette étape : Claude Code ajoute un champ safeguards et un en-tête beta à la requête. Certaines passerelles ne les reconnaissent pas et répondent 403 (refus) ou 422 (champ invalide). Les anciennes versions traitaient cela comme un échec ordinaire, d'où un échec à chaque tour.

Selon le CHANGELOG, les entrées de la 2.1.317 liées au mode auto et aux passerelles sont :

EntréeContenu
Correctif principalLe mode auto n'échoue plus à chaque tour quand une passerelle définie comme base URL répond 403 ou 422 à la vérification côté serveur (un 403 avec apiKeyHelper est inchangé)
Nouvel avisUn avis s'affiche quand la vérification du mode auto n'a pas de réponse pour l'appel d'outil d'un sous-agent ; auparavant rien n'apparaissait dans la vue principale
Message 403Un blocage régional ou réseau (HTTP 403) n'est plus affiché comme un échec de connexion ; l'erreur explique le blocage
OTelAjout de anthropic.plan, anthropic.seat_type, anthropic.provider et anthropic.custom_base_url aux métriques, événements et spans

Les versions précédentes touchaient déjà ce sujet :

VersionEntrée liée
2.1.316Correction de CLAUDE_CODE_AUTO_MODE_SERVER=1 ignoré dans les sessions lancées par une application hôte (comme Claude Desktop) derrière un proxy ou une passerelle LLM avec les betas expérimentales désactivées
2.1.314Correction du mode auto qui signalait un appel comme bloqué, et le listait dans /permissions, quand la vérification ne donnait pas de verdict
2.1.304Configuration guidée /auto-mode-setup, aussi sur Bedrock, Vertex, Foundry, Claude apps gateway et sessions sans télémétrie
2.1.302Ajout de CLAUDE_CODE_AUTO_MODE_MODEL pour le modèle du classifieur côté client (le mode auto côté serveur n'est pas modifié) ; claude -p sans mode de permissions démarre en default chez les fournisseurs tiers, sans télémétrie ou sur une installation neuve, et --permission-mode auto garde le mode auto

Qui est concerné

Les trois conditions doivent être réunies :

  1. Vous utilisez le mode auto. Selon la documentation, c'est le mode de départ dans le terminal et VS Code depuis la 2.1.283.
  2. ANTHROPIC_BASE_URL pointe vers une passerelle LLM tierce, un relais ou un proxy d'entreprise.
  3. Cette passerelle répond 403 ou 422 aux requêtes qui portent le champ safeguards ou l'en-tête beta dangerous-tool-use. Causes typiques : validation stricte du corps (champ inconnu → 422) ou politique de sécurité (403).

Les utilisateurs connectés directement à l'API Anthropic, ou derrière une passerelle qui transmet les champs inconnus, ne sont pas concernés. Voir la documentation sur les passerelles LLM.

À quoi ressemble la requête de vérification

Nous avons placé entre Claude Code et aicodewith un proxy local qui se contente d'enregistrer les requêtes. La première requête d'une session en mode auto contenait ceci (extrait) :

text
POST /v1/messages?beta=true
anthropic-beta: claude-code-20250219, ..., dangerous-tool-use-2026-09-03, afk-mode-2026-01-31

"safeguards": [{"type": "dangerous_tool_use",
                "classifier_context": {"v": 1, "permission_mode": "auto", "platform": "linux", ...}}]

Quand le serveur ne vérifie pas, les requêtes suivantes n'ont plus safeguards. Avant chaque commande Bash, Claude Code envoie alors une requête séparée au modèle du classifieur local (claude-sonnet-5 par défaut).

Tests : 2.1.316 contre 2.1.317

Conditions : 3 novembre 2026, 15:12–15:35 heure de Pékin, Linux, modèle claude-opus-5-5, une clé aicodewith, un dossier de configuration neuf à chaque essai. La tâche demande à Claude d'écrire fib.py qui affiche la suite de Fibonacci et de l'exécuter avec python3 : une écriture de fichier et une commande Bash qui passe par la vérification du mode auto.

bash
claude -p "Create a file fib.py that prints the first 10 Fibonacci numbers, then run it with python3 and tell me the output." \
  --permission-mode auto --model claude-opus-5-5 \
  --output-format json --debug-file ./cc-debug.log

grep -E "server-classifier|API error" ./cc-debug.log

La « passerelle simulée » est une règle ajoutée au proxy local : toute requête avec un champ safeguards reçoit 403 ou 422, le reste est transmis à aicodewith. Elle reproduit le cas décrit dans le CHANGELOG ; ce n'est pas le comportement d'aicodewith.

Cas2.1.3162.1.317
Direct vers aicodewithRéussi, 3 tours, 12.0 sRéussi, 4 tours, 17.7 s
Passerelle simulée, 403 sur la vérificationÉchec en 0.6 s, Failed to authenticate. API Error: 403 ... ; le tour suivant échoue aussiRéussi, 3 tours, 11.8 s
Passerelle simulée, 422 sur la vérificationÉchec en 0.7 s, API Error: 422 ... ; le tour suivant échoue aussiRéussi, 3 tours, 15.7 s
403 simulé + apiKeyHelper—Échec après 11 tentatives, 248.4 s, Failed to authenticate
2.1.316 + CLAUDE_CODE_AUTO_MODE_SERVER=0, 403 / 422 simulésRéussi, 13.7 s / 10.8 sInutile

Le tour supplémentaire de l'essai direct en 2.1.317 vient de Claude qui a relancé le script pour confirmer la sortie, sans lien avec la version. Chaque essai réussi a affiché 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.

Direct vers aicodewith : les deux versions fonctionnent

Notre API répond 200 à la requête avec safeguards mais ne renvoie pas de verdict. Le journal de debug montre que Claude Code constate l'absence de vérification serveur et utilise son classifieur local pour le reste de la session :

text
[server-classifier] the platform gave no classification for this request (server_no_result);
  treating that as this deployment's answer: auto mode classifies locally for the rest of
  this session and stops sending the classifier context
[auto-mode] new action being classified: tool=Bash actionChars=26
[Stall] classifier_request_finished tool=Bash stage=xml_s1 outcome=ok durationMs=2727

Chaque vérification locale d'une commande Bash a pris environ 2.5–2.7 s. Au démarrage, stderr affiche un avis indiquant que l'adresse actuelle ne prend pas en charge la nouvelle classification côté serveur et que le mode auto continue de fonctionner ; vous pouvez l'ignorer.

2.1.316 derrière une passerelle qui rejette la vérification : chaque tour échoue

{OLD403}

Le 403 s'affiche comme Failed to authenticate, ce qui fait penser à une mauvaise clé. La clé est bonne : la même configuration fonctionne en mode manuel.

2.1.317 : une nouvelle tentative sans le champ de vérification

Avec la même passerelle après mise à jour, le journal de debug donne :

text
[ERROR] API error (attempt 1/11): 403 403 {"type":"error","error":{"type":"permission_error",
        "message":"gateway policy: field safeguards is not allowed"}}
[WARN] [server-classifier] HTTP 403 with no cause Claude Code recognises, on a request that
       carried the dangerous-tool-use beta header; sending it once more without that header
       and the safeguards field, to learn whether they caused the refusal
[WARN] [server-classifier] a request was refused (HTTP 403) and answered when sent again
       without the dangerous-tool-use beta header and the safeguards field. Until Claude Code
       restarts, neither is sent and auto mode does not ask the server to check actions.
       To keep the check, let the gateway pass that header and field, then restart Claude Code.

Quand la 2.1.317 reçoit un 403 ou 422 qu'elle ne sait pas expliquer, elle renvoie la requête une fois sans l'en-tête beta dangerous-tool-use ni le champ safeguards. Si cela passe, elle ne demande plus de vérification au serveur jusqu'au redémarrage et utilise le classifieur local. Les actions restent vérifiées, localement. Pour retrouver la vérification serveur, laissez la passerelle transmettre cet en-tête et ce champ, puis redémarrez Claude Code.

Un 403 avec apiKeyHelper échoue toujours

Le CHANGELOG indique qu'un 403 avec apiKeyHelper est inchangé, et c'est ce que nous avons observé : la 2.1.317 a réessayé 11 fois et s'est arrêtée au bout d'environ quatre minutes.

text
# 2.1.317 + apiKeyHelper, gateway answers 403 to the safety check
[ERROR] API error (attempt 1/11): 403 ...
...
[ERROR] API error (attempt 10/11): 403 ...
Failed to authenticate. API Error: 403 gateway policy: field safeguards is not allowed
# exit 1 after 248.4 s

Avec apiKeyHelper, laissez la passerelle transmettre safeguards, ou utilisez CLAUDE_CODE_AUTO_MODE_SERVER=0 (plus bas).

Mettre à jour vers 2.1.317

Selon la documentation d'installation, l'installation native se met à jour en arrière-plan ; les installations npm, Homebrew et WinGet se mettent à jour à la main. Avec npm, utilisez npm install -g ...@latest, pas npm update -g.

bash
# native install (curl -fsSL https://claude.ai/install.sh | bash)
claude update

# npm install
npm install -g @anthropic-ai/claude-code@latest

# Homebrew (the claude-code cask follows the stable channel)
brew upgrade claude-code@latest

# Windows WinGet
winget upgrade Anthropic.ClaudeCode

# check
claude --version
# 2.1.317 (Claude Code)

claude --version doit afficher 2.1.317 ou plus. Le cask Homebrew claude-code suit le canal stable, en général environ une semaine derrière latest ; prenez claude-code@latest pour avoir ce correctif tout de suite. Dans une session, /status indique si Auto mode server est Enabled.

Configurer ANTHROPIC_BASE_URL et la clé

Créez d'abord une clé API sur aicodewith :

Créer une API Key pour Claude Code →

macOS / Linux :

bash
export ANTHROPIC_BASE_URL="https://api.aicodewith.ai"
export ANTHROPIC_AUTH_TOKEN="VOTRE_API_KEY"
claude --permission-mode auto

Windows PowerShell :

powershell
$env:ANTHROPIC_BASE_URL = "https://api.aicodewith.ai"
$env:ANTHROPIC_AUTH_TOKEN = "VOTRE_API_KEY"
claude --permission-mode auto

Pour la garder, mettez-la dans ~/.claude/settings.json. permissions.defaultMode à auto ne fonctionne que dans les réglages utilisateur, pas dans le .claude/settings.json d'un projet (selon la documentation) :

json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
    "ANTHROPIC_AUTH_TOKEN": "VOTRE_API_KEY"
  },
  "permissions": {
    "defaultMode": "auto"
  }
}

Plus d'options (variables Windows permanentes, modèles) dans Connecter Claude Code à une API tierce.

Activer le mode auto

  • Au lancement : claude --permission-mode auto.
  • Dans une session : appuyez sur Shift+Tab ; la barre d'état affiche ⏵⏵ auto mode on.
  • En non interactif (claude -p) : d'après l'entrée 2.1.302 du CHANGELOG, chez les fournisseurs tiers, sans télémétrie ou sur une installation neuve, la session démarre en default sauf si vous passez --permission-mode auto.
  • Pour changer le modèle du classifieur local : CLAUDE_CODE_AUTO_MODE_MODEL (2.1.302+) ; cela ne touche pas la vérification serveur.

Si vous ne pouvez pas encore mettre à jour et que votre passerelle rejette la vérification, désactivez la vérification serveur et gardez seulement le classifieur local :

{SERVER0}

Testé sur 2.1.316 avec les passerelles simulées 403 et 422 : la tâche a abouti les deux fois.

Tableau des erreurs

SymptômeCauseSolution
API Error: 403 ... à chaque tour, précédé de Failed to authenticate ; le mode manuel fonctionneLa passerelle rejette la vérification de sécurité côté serveur du mode autoPasser à 2.1.317, ou CLAUDE_CODE_AUTO_MODE_SERVER=0
API Error: 422 ... à chaque tour, le message cite safeguardsLa passerelle valide strictement le corps et refuse le champ safeguardsIdem, ou laisser la passerelle transmettre le champ
403 avec apiKeyHelperInchangé en 2.1.317, toujours traité comme un échec d'authentificationLaisser passer safeguards et l'en-tête beta, ou CLAUDE_CODE_AUTO_MODE_SERVER=0
403 dû à un blocage régional ou réseauRestriction régionale ou réseauDepuis 2.1.317 l'erreur explique le blocage au lieu d'un échec de connexion ; changer de réseau ou utiliser une passerelle accessible
Action arrêtée, la vérification n'a pas donné de verdictLe serveur n'a pas rendu de verdict pour cette actionDepuis 2.1.314 elle n'est plus signalée comme bloquée ; depuis 2.1.317 les sous-agents ont aussi un avis. Selon la documentation, dix réponses de suite sans verdict arrêtent le tour
403 / 401 à chaque tour, même en mode manuelClé invalide ou mauvaise Base URLVérifier la clé et ANTHROPIC_BASE_URL ; sans rapport avec le mode auto

FAQ

J'utilise aicodewith. Dois-je mettre à jour ?

Dans nos tests, 2.1.316 et 2.1.317 ont fait tourner le mode auto sans problème sur notre API : vous ne rencontrerez pas ce bug. La 2.1.317 contient d'autres correctifs, la mise à jour reste conseillée.

Le mode auto reste-t-il sûr après la 2.1.317 ?

Les actions sont toujours vérifiées. Seule l'étape « demander au serveur » disparaît ; le classifieur local examine chaque action concernée, et nos journaux montrent une vérification locale par commande Bash.

Pourquoi le 403 s'affiche-t-il comme « Failed to authenticate » ?

Les anciennes versions traitaient un 403 reçu sur la vérification du mode auto comme un échec d'authentification. Si votre clé fonctionne, que le mode manuel marche et que le 403 n'apparaît qu'en mode auto, c'est très probablement ce problème.

Comment confirmer qu'il s'agit de ce problème ?

Lancez une fois avec --debug-file et cherchez server-classifier et API error dans le journal. Si l'erreur mentionne safeguards, ou si la 2.1.317 écrit « sending it once more without that header and the safeguards field », la passerelle rejette la vérification.

Codex a-t-il un réglage équivalent ?

Codex contrôle l'exécution des commandes par son bac à sable et sa politique d'approbation ; voir Configurer le bac à sable et /permissions de Codex.

Pour aller plus loin

相关文章

DeepSeek Harness Creator Mode : installation, connexion d'une API tierce et premier plugin testé

DeepSeek Harness Creator Mode : installation, connexion d'une API tierce et premier plugin testé

Le 2 novembre, le compte officiel DeepSeek Harness a présenté Creator Mode : vous décrivez un outil en une phrase, et l'agent écrit le plugin, l'installe dans Harness et vérifie qu'il est chargé. Ce guide explique ce qu'est Creator Mode, comment lancer Harness avec npx, comment brancher une API tierce compatible OpenAI (URL de base + clé aicodewith) pour utiliser les modèles Claude, GPT et DeepSeek, puis construit un plugin todo_scan avec Creator Mode, avec les sorties réelles, les erreurs courantes et les équivalents Claude Code / Codex.

Claude Message Threads : comment les utiliser ? Bêta des threads de l'API Messages, n'envoyer que les nouveaux messages, premier token ~35 % plus rapide (test Claude Code / API)

Claude Message Threads : comment les utiliser ? Bêta des threads de l'API Messages, n'envoyer que les nouveaux messages, premier token ~35 % plus rapide (test Claude Code / API)

Le 2 novembre, Anthropic a ouvert en bêta publique les Message Threads de l'API Messages. La première requête envoie toute la conversation et crée un thread ; ensuite, chaque tour n'envoie que les nouveaux messages et l'id de la réponse précédente. Le premier token arrive plus tôt dans les longues conversations, mais la consommation de tokens et la facturation ne changent pas. Ce guide explique le paramètre thread, l'en-tête bêta, l'expiration de 5 minutes et la relance après une 404 d'après la documentation officielle, donne des exemples curl, Python et TypeScript, et présente notre test avec une clé aicodewith : via aicodewith, le champ thread est actuellement ignoré et le tour de continuation perd le contexte, Claude Code n'est pas concerné, avec la solution de rechange et les erreurs courantes.

Comment refaire HackerTube de Karpathy avec Claude Code ou Codex : extraire les vidéos des commentaires Hacker News pour un site sans algorithme (testé)

Comment refaire HackerTube de Karpathy avec Claude Code ou Codex : extraire les vidéos des commentaires Hacker News pour un site sans algorithme (testé)

Karpathy a construit HackerTube en deux heures environ avec Claude Code et Opus 5.5, en retenant 6 454 vidéos YouTube que les commentateurs de Hacker News se recommandent depuis 20 ans. Avec notre API Key, nous avons demandé à Claude Code et à Codex de construire chacun une version réduite : récupérer deux mois de commentaires via l'API Algolia officielle de HN, extraire les liens YouTube, dédoublonner, compter et générer une page statique. Prompt complet, durées mesurées, comparaison des deux clients et étapes restantes jusqu'à HackerTube.