Claude Code 2.1.288 : plus de limite de temps en local, trois angles morts shell refermés
La 2.1.288 retire la limite de temps des commandes en arrière-plan dans le terminal, le bureau et VS Code, et referme trois angles morts shell sur les permissions et les hooks.
La 2.1.288 de Claude Code, sortie le 2 octobre 2026, ne change rien de spectaculaire en façade, mais elle touche à quatre endroits qui comptent pour qui s'en sert tous les jours. D'abord, les commandes lancées en arrière-plan perdent leur limite de temps dans le terminal, l'application de bureau et VS Code, elle ne reste que pour les sessions sans surveillance. Ensuite, trois correctifs distincts referment des angles morts sur les commandes shell dangereuses : un rm qui échappait au garde-fou quand il était planqué dans un script, des hooks de permission qui laissaient passer une action au lieu de la bloquer quand ils échouaient à l'évaluer, et une affectation BASHPID qui s'exécutait sans prévenir. Plus de soixante-dix entrées au total, l'essentiel en fiabilité et en interface. Le reste est résumé en vrac plus bas.
Les commandes en arrière-plan n'ont plus de limite de temps en local
Un digest précédent de cette série notait l'arrivée d'une limite de temps sur les commandes Bash et PowerShell lancées en arrière-plan, trente minutes par défaut, deux heures au maximum, après quoi Claude Code les arrête et Claude en est prévenu. La 2.1.288 revient dessus en changeant son périmètre. Le changelog est direct : « Changed the background command time limit to apply only in unattended sessions (-p, Agent SDK, CI, cloud); terminal, desktop app and VS Code sessions have no limit ».
Concrètement, si tu lances Claude Code dans un terminal, dans l'application de bureau ou dans VS Code, une commande que tu passes en arrière-plan avec run_in_background ou l'équivalent peut désormais tourner aussi longtemps qu'elle en a besoin, sans coupure automatique. La limite ne s'applique plus qu'aux sessions qui tournent sans personne devant l'écran : claude -p, l'Agent SDK, une CI, ou une session cloud. La doc sur la vue des agents décrit un autre mécanisme d'arrière-plan, les jobs shell lancés avec claude --bg --exec ou le préfixe ! depuis la vue des agents, et ne dit rien de cette distinction entre sessions surveillées et non surveillées au moment de ce digest : le changelog est en avance sur elle. Si tu fais tourner des builds longs ou des tests qui prennent plus d'une demi-heure depuis ton terminal, tu n'as donc plus besoin de contourner l'ancienne limite. Si tu automatises Claude Code en CI ou en cloud, rien ne change : la limite reste là, utile pour éviter qu'un job oublié tourne indéfiniment sur une machine que personne ne surveille.
Trois angles morts shell refermés
Le fil que ce digest suit depuis plusieurs semaines continue : des garde-fous déjà en place, mais qu'une forme précise de commande shell parvenait à contourner.
Le premier concerne la suppression de fichiers. La doc sur les chemins critiques pose le principe en des termes absolus : « Claude Code never lets a permissions.allow rule or a PreToolUse hook that returns "allow" approve an rm or rmdir command that targets a critical path », comme la racine du système ou ton répertoire personnel, et précise que ce circuit-breaker tient même dans les modes qui sautent les autres confirmations. Le changelog de la 2.1.288 décrit ce qui échappait encore à ce filet : une commande rm dangereuse, exécutée à l'intérieur d'un script passé à bash -c ou sh -c, s'exécutait sans la demande de confirmation attendue en mode bypassPermissions ou sous une règle d'autorisation shell. L'enrober dans un script suffisait à masquer la commande au détecteur. Ce n'est pas une faille nouvelle dans le principe, la doc le posait déjà comme absolu, c'est l'implémentation qui ratait un cas précis d'encapsulation.
Le deuxième touche les hooks de permission. La doc sur les hooks explique le fonctionnement normal : si le filtre d'un hook ne correspond pas à l'outil appelé, le hook est simplement ignoré et l'action suit son cours habituel. C'est voulu, et ça reste vrai. Ce que corrige la 2.1.288 est différent : quand l'évaluation du filtre échouait réellement, par exemple une erreur pendant la comparaison, ou quand l'entrée de l'outil ne pouvait pas être sérialisée en JSON pour être transmise au hook, Claude Code traitait aussi ce cas comme un hook ignoré, donc une action qui passe. Désormais, un hook PreToolUse ou PermissionRequest qui échoue à s'évaluer bloque l'action au lieu de la laisser filer. La distinction est fine mais réelle : un hook qui ne correspond pas à la règle n'a jamais eu vocation à bloquer, un hook qui plante en essayant de l'évaluer n'a pas de raison de se comporter pareil.
Le troisième est plus discret : la vérification de permission de l'outil Bash laissait passer sans rien demander une affectation à BASHPID dont le shell évalue la valeur comme une expression arithmétique, un détail de syntaxe facile à manquer en lisant la commande. Elle déclenche désormais une demande de confirmation.
Le reste, en vrac
/code-review --max-findings <n>|all: règle combien de trouvailles la revue remonte, le choix reste actif jusqu'à ce que tu repasses--max-findings default.- Brouillon effacé par Ctrl+C récupérable : appuyer sur la flèche haut sur un prompt vide le fait revenir, textes et images collées compris.
- Filtre
Ctrl+Fdans la vue des agents pour retrouver une session par son nom, etAlt+↑/↓pour sauter entre groupes ; les deux se réassignent danskeybindings.json. - « Prompt is too long » : les longues conversations tombaient parfois en erreur au lieu de se compacter automatiquement quand la dernière réponse signalait zéro token utilisé. Corrigé.
- Timeouts API en cours de réponse : les sessions non interactives et les sous-agents reprennent désormais depuis la réponse partielle au lieu de faire échouer tout le tour.
--resume: corrige des cas où des fichiers ou du contexte restaurés par une compaction se perdaient à la reprise, et où la dernière réponse d'un tour n'était pas sauvegardée, laissant--resumemontrer un prompt sans réponse.claude project purgedevientclaude purge; l'ancien nom fonctionne encore et affiche un avis.- Nouvelle demande de ré-authentification quand un serveur MCP réclame une portée OAuth plus large en cours d'appel d'outil.
gh apiintégré pour les sessions cloud dont l'image n'a pas la CLI GitHub.- Règles
.claude/ruleset CLAUDE.md imbriqués : ceux qui sont limités à un chemin se chargent désormais aussi quand Write ou Edit crée ou modifie un fichier dans leur périmètre, et plus seulement sur un Read.
Ce qu'il faut retenir
Si tu lances des commandes longues en arrière-plan depuis un terminal, l'application de bureau ou VS Code, la coupure automatique au bout de trente minutes a disparu, elle ne vise plus que les sessions sans surveillance. Pour le reste, cette version poursuit un chantier déjà engagé plutôt qu'elle n'en ouvre un nouveau : fermer, un par un, les endroits précis où une commande shell ou un hook de permission se comportait autrement que prévu. Aucun de ces trois correctifs n'est spectaculaire pris seul, mais la série dessine un vrai durcissement, pas un hasard de version.
Pierre Rondeau
Développeur et indie builder. Je construis des produits et automatisations avec l'IA. Créateur de Claude Hub.
LinkedIn