Claude Code 2.1.247 : Claude rédige ton rapport de bug, à toi de dire si la conversation part avec
Une version, un seul vrai ajout : l'outil SendFeedback, qui fait rédiger par Claude le rapport que tu enverras depuis /feedback. Le changelog n'en dit qu'une ligne, la doc en dit beaucoup plus, à commencer par le fait que les deux façons d'envoyer un brouillon n'emportent pas la même chose. Plus deux fichiers de configuration que le client écrasait, et Sonnet 5 qui auto-compacte 33 000 tokens plus tard.
Une seule version depuis le dernier digest : la 2.1.247, sortie le 26 août. Une trentaine d'entrées, dont un seul ajout qui compte vraiment, et il mérite plus que la ligne qu'on lui accorde.
Le reste suit la même pente que la 2.1.246 : des correctifs qui rendent au client l'habitude de dire ce qu'il fait, et deux cas où il écrasait un fichier de configuration que tu n'avais pas écrit pour lui. Voilà le tri.
SendFeedback : Claude rédige, tu décides ce qui part
C'est l'ajout de la version, et le changelog le résume en une phrase : quand quelque chose se passe mal dans une session, Claude peut rédiger un rapport de retour que tu relis et envoies depuis /feedback, désactivable via le réglage feedbackDrafts.
Formulé comme ça, ça sonne anodin. La doc de l'outil est nettement plus précise, et deux points méritent d'être connus avant de croiser ta première carte de brouillon.
Rien ne part tout seul. Chaque brouillon est écrit sur ta machine, dans ~/.claude/feedback/drafts/, et la doc le pose en toutes lettres : rien n'atteint Anthropic tant que tu n'as pas envoyé. Claude en rédige un quand un outil ou une commande échoue en boucle, quand il ne peut pas t'aider, quand tu lui signales une erreur ou qu'il en repère une lui-même, ou quand tu lui demandes explicitement de remonter un retour.
Les deux chemins d'envoi n'emportent pas la même chose, et c'est le vrai sujet. Quand le brouillon s'affiche en carte au-dessus de ton prompt, 1 ouvre la relecture, 2 deux fois envoie tel quel, 0 écarte la carte. Envoyer depuis la carte n'inclut jamais la conversation. Passer par /feedback sans argument ouvre la file, et là l'écran de relecture porte un champ Send transcript qui démarre à yes dès que le transcript de la session d'origine est encore disponible : c'est toute la conversation qui part chez Anthropic. Même bouton, même rapport, périmètre de données très différent. Si tu travailles sur du code que ton employeur ne veut pas voir sortir, c'est la ligne à regarder avant de cliquer.
Le rapport transporte par ailleurs ton titre, la zone et les détails, des informations d'environnement (version, système, modèle) et les identifiants des requêtes API récentes. Le répertoire de travail est conservé dans le brouillon local pour retrouver le transcript, mais n'est pas envoyé.
Trois limites de plus, absentes du changelog. La file contient dix brouillons au maximum, tous sessions confondues, et le onzième efface le plus ancien. Un brouillon laissé en attente expire au bout de 30 jours. Et tu vois au plus trois cartes par session, un seuil qu'Anthropic peut ajuster côté serveur sans passer par une version.
Enfin, l'outil n'est pas partout : la doc le réserve aux sessions terminal interactives sur ta propre machine passant par l'API Claude. Il est absent des sessions -p, du SDK, des sessions cloud, et de Bedrock, Vertex ou Foundry. Si tu automatises Claude Code, tu ne le croiseras jamais.
Pour le couper, Claude-drafted feedback sur off dans /config, ce qui écrit feedbackDrafts. La valeur quiet est le compromis intéressant : Claude continue de rédiger, mais tu ne vois plus qu'un compteur en pied de prompt au lieu des cartes. Un administrateur peut fixer le réglage en managed settings, qui prime sur le tien.
Un détail de datation, tant qu'à faire : le changelog annonce l'outil dans la 2.1.247, alors que la doc indique qu'il demande la 2.1.238 ou plus récente. Si tu l'as déjà vu passer avant aujourd'hui, tu n'as pas rêvé.
Deux fichiers de configuration qu'il n'écrasera plus
Deuxième digest d'affilée où le client détruisait quelque chose que tu avais créé toi-même. Après les worktrees effacés de la 2.1.246, deux cas cette fois, et tous les deux touchent des fichiers de configuration.
Le premier vise une population précise : le nettoyage d'après commande du bac à sable Bash supprimait un ~/.claude/settings.json géré en lien symbolique par tes dotfiles (nix, home-manager, stow) dès lors que le lien pointait hors de la zone inscriptible du bac à sable. Autrement dit, le fichier de réglages utilisateur, celui qui s'applique à tous tes projets, disparaissait au profit de la gestion de ton gestionnaire de dotfiles. Si tu es sur ce montage et que tes réglages « sautent » sans explication, c'est réglé.
Le second est plus brutal encore dans son énoncé : /terminal-setup écrasait ton keymap.json Zed en entier au lieu d'y fusionner son raccourci. Ce n'est pas un fichier Claude Code, c'est ta configuration d'éditeur, et une commande de confort la remplaçait intégralement. Il fusionne maintenant.
Dans la même famille, une entrée keybindings.json inconnue ne tue plus la touche, mais ça, c'était déjà la version précédente. Ce qui se dessine sur deux versions, c'est une série de correctifs sur les endroits où Claude Code écrit dans des fichiers dont il n'est pas propriétaire.
Sonnet 5 auto-compacte 33 000 tokens plus tard
Un changement de comportement discret mais parfaitement mesurable : la fenêtre d'auto-compaction par défaut de Sonnet 5 passe à son contexte complet de 1M, donc les sessions compactent maintenant vers 967 000 tokens au lieu d'environ 934 000.
Ce n'est pas cosmétique quand tu travailles sur de longues sessions : la compaction résume l'historique ancien, et chaque compaction est un moment où du contexte se perd. Trente-trois mille tokens de sursis, c'est un gros fichier de plus avant que le résumé n'entre en jeu.
La doc sur la fenêtre de contexte de Sonnet 5 ajoute ce que le changelog ne dit pas, et c'est là que ça devient utile. Sur l'API Claude, Sonnet 5 tourne toujours en 1M : pas de variante 200K, pas de suffixe [1m] à choisir, aucun crédit d'usage requis. Mais deux configurations te ramènent à 200K sans prévenir :
- Un gateway LLM, quand
ANTHROPIC_BASE_URLpointe vers un proxy tiers : Claude Code ne peut pas vérifier la prise en charge du 1M et budgète 200K. Pour récupérer la fenêtre entière, il faut sélectionner Sonnet 5 (1M context) dans le sélecteur de modèle, ce qui correspond àsonnet[1m]. CLAUDE_CODE_DISABLE_1M_CONTEXT=1, qui tient à 200K tous les modèles à fenêtre 1M native. À noter : régler la fenêtre d'auto-compaction au-dessus de 200K ne lève pas la bride, parce que Claude Code plafonne cette fenêtre au contexte réel du modèle.
Si tu veux un autre seuil, CLAUDE_CODE_AUTO_COMPACT_WINDOW prime sur la commande /autocompact, sur le drapeau --autocompact et sur le réglage.
Les sessions qui se coinçaient sans le dire
Le fil rouge du reste de la version, et il n'est jamais énoncé : plusieurs correctifs portent sur des sessions qui mouraient ou se bloquaient sans que la cause remonte.
Le plus vicieux est celui du hook bavard. Un hook ou un agent d'arrière-plan qui écrivait des mégaoctets de sortie d'erreur pouvait déborder la conversation et coincer la session sur un « Prompt is too long ». Le mécanisme est cruel : ta session devient définitivement inutilisable à cause d'un script à toi qui a mal tourné, et le message d'erreur parle de longueur de prompt, pas du hook. Cousin immédiat, la mémoire grandissait sans limite quand le fichier de sortie d'un hook ou d'une tâche d'arrière-plan ne pouvait pas être écrit ; le fichier indique désormais où la sortie a été perdue.
Les sous-agents ne meurent plus sur un 404 au premier appel. Ils utilisent maintenant la chaîne de modèles de repli de la session, et l'erreur renvoyée au parent contient le type, le statut, l'identifiant de requête et le modèle. C'est le bon réglage : la doc sur les chaînes de repli précise que Claude Code plafonne une chaîne à trois modèles après déduplication et que le basculement ne vaut que pour le tour en cours, donc un sous-agent qui repart sur un repli ne change pas le modèle de ta session.
Les sessions cloud rapportent enfin le travail perdu. Elles devenaient silencieuses quand le conteneur redémarrait entre deux tours alors qu'un agent d'arrière-plan, un shell ou un moniteur tournait encore. La session reprise signale maintenant ce qui a disparu. Pour quiconque fait tourner des routines sans personne devant, c'est la différence entre un rapport faux et un rapport incomplet mais honnête.
Et Claude sait de nouveau qu'un serveur MCP a échoué. Sur Bedrock, Vertex, Foundry et toute session à télémétrie désactivée, quand un serveur MCP configuré ne se connectait pas, Claude n'en était pas informé et concluait simplement que les outils n'existaient pas. Il est prévenu, désormais.
Le terminal cesse de faire confiance au texte qu'il affiche
Deux entrées de durcissement, à lire ensemble parce qu'elles traitent le même problème : du texte écrit par quelqu'un d'autre, rendu par ton terminal.
Côté plugins, les noms de place de marché contenant des caractères de contrôle ou invisibles sont refusés, et le texte fourni par une place de marché dans /plugin et claude plugin est désormais échappé avant affichage. Côté markdown, les liens hypertexte du terminal changent de règle : une cible qui pointe vers un chemin réseau ou d'automontage, qui contient un caractère de contrôle ou qui commence par un caractère invisible s'affiche maintenant en texte brut plutôt qu'en lien cliquable.
Le point commun est simple : un lien dont l'intitulé ne correspond pas à la cible est le plus vieux truc du monde, et un terminal qui rend joliment du texte non contrôlé lui donne toute sa puissance. Rien à faire de ton côté, mais si tu maintiens une place de marché de plugins et que ton nom passait par des caractères exotiques, il ne passera plus.
Le reste, en vrac
- Nouvelle commande
/claude-api cost-optimize: elle profile la dépense API Claude d'un projet existant et déroule les leviers de coût (cache, hygiène des tokens, batch, effort, choix du modèle) un changement mesuré à la fois. Le skill/claude-apigagne au passage la couverture de l'Admin API (membres, invitations, espaces de travail, clés, rapports de limites, fédération d'identité de charge de travail, CMEK). - Messages entre sessions repliés par défaut : un message d'une autre de tes sessions s'affiche maintenant en une ligne
Message from @<expéditeur>, Ctrl+O déplie. Rappel utile,crossSessionInboundpermet de retenir ces messages au lieu de les livrer, ce qui évite qu'ils ne relancent un tour complet sur une session inactive. - Flèches rapides puis Entrée : la validation agissait sur la ligne au-dessus de celle où tu venais de naviguer, dans la recherche d'historique,
/config,/mcp,/skills, les tâches d'arrière-plan et/model. Corrigé. /compactsous--agentrésumait avec le prompt système par défaut au lieu de celui de la conversation. Vaut aussi pour « Summarize from here »./renameconfirmait en silence même quand le registre de sessions n'avait pas pu être mis à jour ; il prévient maintenant que d'autres sessions peuvent encore afficher l'ancien nom.spinnerTipsOverrideaccepte des entrées{id, text, cooldownSessions, priority}, untipsFileet unlabel, de quoi faire tourner les astuces maison d'une organisation à côté de celles d'origine. Et les demandes de permission Bash affichent une astuce vers le mode auto, avec une bascule en une touche.- Sessions d'arrière-plan : une session restait sur « opening… » indéfiniment dans
claude agentsaprès la mort de son processus hôte ; la ligne échoue maintenant en quelques secondes avec la raison, et Entrée la relance. Les commandes shell reprises du premier plan ne logguent plus une erreur interne ni un[exited with code -1]trompeur. - Terminaux et claviers : les raccourcis Ctrl ne se déclenchaient pas sous les dispositions non latines (cyrillique par exemple) dans les terminaux au protocole kitty, et un texte du genre
<35;150;7Ms'insérait dans le prompt quand un rapport de souris arrivait coupé entre deux lectures. /install-github-appen SSH : le raccourci de copie annonçait toujours un succès, il dit maintenant comment l'URL a été copiée, et l'URL s'affiche immédiatement quand aucun navigateur ne peut s'ouvrir.- Plugins : le répertoire de cache vivant d'un plugin de place de marché sans version était supprimé puis recréé lors d'une installation sur un second périmètre, ce qui pouvait perturber une session en cours.
- Connexion et organisation : la configuration initiale sortait sur « Unable to connect to Anthropic services » quand les managed settings imposent la connexion par Claude apps gateway et que les points de terminaison Anthropic sont injoignables. Les analytics restent désactivées dès le démarrage, et plus seulement après connexion, dans ces mêmes déploiements. Et l'application de la connexion organisationnelle sort au lancement quand les managed settings de l'administrateur ne peuvent pas être lues.
- Divers : Remote Control ne remontait pas le diff du répertoire de travail aux clients connectés, les runners auto-hébergés se déclaraient
runningavant le démarrage effectif de Claude Code, les sessions cloud affichaient parfois l'ancien mode de permission après un changement juste après l'envoi d'un message, et le badge PR du pied de prompt ne refait plus sa vérification GitHub au retour du focus si la précédente a moins d'une minute.
Ce qu'il faut en retenir
Un seul geste à faire aujourd'hui, et il ne prend pas cinq minutes : décide maintenant ce que tu veux de SendFeedback, avant de tomber sur ta première carte au milieu d'une session qui se passait mal. Si ton code est sensible, retiens la distinction : la carte n'envoie jamais la conversation, la file la propose à yes par défaut. Si tu préfères ne pas y penser, feedbackDrafts sur quiet garde le mécanisme sans les interruptions, et off le coupe.
Pour le reste, la 2.1.247 est une bonne version à prendre sans réfléchir. Elle rend 33 000 tokens de contexte aux sessions Sonnet 5, elle arrête d'écraser deux fichiers de configuration qui ne lui appartiennent pas, et elle débloque une catégorie de sessions qui mouraient sans dire pourquoi. Rien qui casse un réflexe, aucune raison d'attendre.
Pierre Rondeau
Développeur et indie builder. Je construis des produits et automatisations avec l'IA. Créateur de Claude Hub.
LinkedIn