Tous les développeurs ayant utilisé Claude Code ont déjà été confrontés à cette situation : une ligne apparaît dans le terminal avec le message « Symbioting… (3m 12s · ↓ 5.7k tokens) », la barre de progression semble figée, et aucune nouvelle sortie n'apparaît pendant plusieurs minutes. Vous tentez alors un « Tu es toujours là ? », et à votre grande surprise, Claude reprend immédiatement son travail là où il s'était arrêté.
Cette expérience étrange de « blocage suivi d'une réanimation par message » semble relever de la magie, mais elle résulte en réalité de la superposition de plusieurs modes de défaillance liés au protocole de streaming d'Anthropic, aux mécanismes de temporisation et à la gestion du contexte. Cet article, basé sur la documentation officielle de dépannage de Claude Code et sur les discussions GitHub (issues #25979, #24688, #39718, #25286, #25539, #51659), explique les causes réelles des blocages de Claude Code et propose 7 méthodes de récupération immédiate ainsi que 5 stratégies de prévention.
Valeur ajoutée : Après avoir lu cet article, vous comprendrez la signification de chaque verbe de chargement (spinner), pourquoi l'envoi d'un message peut parfois relancer le processus, quand il est impératif de faire un Ctrl+C pour redémarrer, et comment réduire le taux de blocage à presque zéro.

Analyse complète des indicateurs d'état de Claude Code
Pour diagnostiquer un problème de « blocage », la première étape consiste à comprendre la ligne d'état affichée par Claude Code dans votre terminal. L'exemple Symbioting… (3m 12s · ↓ 5.7k tokens) semble mystérieux, mais il s'agit en réalité d'une information structurée dont chaque partie a une signification précise.
| Champ | Valeur exemple | Signification |
|---|---|---|
| Verbe du Spinner | Symbioting… |
Description anthropomorphique de l'étape actuelle, personnalisable depuis la version 2.1.23 |
| Durée écoulée | 3m 12s |
Temps total écoulé depuis le début de cette étape |
| Flèche de flux | ↓ ou ↑ |
↓ indique la réception de données depuis l'API, ↑ indique l'envoi |
| Compteur de jetons | 5.7k tokens |
Nombre de jetons déjà téléchargés/envoyés |
Claude Code intègre 187 verbes de chargement par défaut ; Befuddling, Ruminating, Accomplishing ou Symbioting en font partie. Ils servent uniquement à rendre l'attente plus vivante et n'impliquent aucune différence technique. Depuis la version 2.1.23, l'option de configuration spinnerVerbs a été introduite, et la communauté propose même des packs de plus de 1900 verbes personnalisés.
Pour déterminer si Claude Code est réellement bloqué, l'essentiel n'est pas le verbe, mais deux éléments : la durée continue-t-elle d'augmenter ? et le compteur de jetons bouge-t-il ?. Si après 3m 12s, le compteur passe à 3m 42s mais que le nombre de jetons reste bloqué à 5.7k, vous pouvez conclure que la réponse en streaming est figée.
Si vous utilisez l'API Claude via une plateforme de service proxy API comme APIYI (apiyi.com), la signification des champs de la ligne d'état reste identique à celle de l'officiel, et vous pouvez utiliser la même méthode de diagnostic pour localiser le problème.
Les 6 causes principales des blocages de Claude Code
Une fois que vous avez compris les indicateurs d'état, vous pouvez identifier la cause racine en observant le comportement réel. Voici les 6 causes les plus fréquentes, classées par ordre d'apparition, couvrant plus de 90 % des cas réels signalés sur le tracker GitHub.

Cause 1 : Interruption silencieuse de la réponse en streaming de l'API
C'est la cause la plus fréquente et la plus insidieuse, correspondant au ticket GitHub #25979. Le client HTTP de Claude Code ne possède pas de mécanisme de read timeout. Si l'API en amont cesse d'envoyer des paquets en cours de transfert, le processus reste bloqué dans l'état noyau epoll_wait en attendant de nouvelles données. L'interface affiche toujours le spinner, mais le compteur de jetons ne progresse plus. Les causes courantes incluent l'instabilité du réseau transfrontalier, le multiplexage tmux ou les coupures de flux SSH longue durée.
Cause 2 : Payload d'invocation d'outil trop volumineux provoquant une réinitialisation de la connexion
Correspond au ticket #39718. Lorsque le modèle demande à Claude Code d'exécuter un outil générant une sortie massive (par exemple, écrire un fichier de plusieurs centaines de milliers de lignes), la connexion HTTP sous-jacente est réinitialisée par l'OS après 5 minutes sans transfert de données effectives. Claude Code ne capturant pas cette erreur, le spinner reste actif dans l'interface. Ce type de blocage survient généralement après exactement 5 minutes d'attente.
Cause 3 : Thrashing de la compression automatique
Lorsque la fenêtre de contexte de Claude Code est presque pleine, une compression automatique (auto-compact) est déclenchée. Si un fichier très volumineux ou une sortie d'outil est relu dans le contexte immédiatement après avoir été compressé, cela déclenche une boucle de compression répétée. Le système finit par s'arrêter en affichant l'erreur Autocompact is thrashing. Avant l'affichage de ce message, l'interface donne l'impression d'être figée.
Cause 4 : Utilisation du contexte supérieure à 80 %
La documentation officielle précise qu'au-delà de 80 % d'utilisation du contexte, le temps de réponse se dégrade de manière significative, se manifestant dans certains cas par une absence de réponse prolongée. La caractéristique de ce "faux blocage" est que le compteur de jetons continue d'augmenter lentement, mais à une vitesse bien inférieure à la normale.
Cause 5 : Configuration anormale entraînant un blocage au démarrage
Correspond aux tickets #31049, #29652, etc. Par exemple, une configuration enableAllProjectMcpServers: true chargeant un grand nombre de serveurs MCP locaux, ou un préfixe de chemin anormal tel que //C:/ dans additionalDirectories, peut bloquer Claude Code au démarrage. Ce blocage survient généralement dans les premières secondes de l'ouverture d'une nouvelle session.
Cause 6 : Résidu de la ligne d'état (réponse terminée mais interface non rafraîchie)
Correspond au ticket #25539. Dans certaines versions, Claude a déjà renvoyé le résultat complet, mais le spinner de l'interface terminal n'a pas été effacé et semble toujours tourner. Si vous appuyez sur Entrée ou envoyez un nouveau message, Claude reprend immédiatement son travail : il n'y a aucun blocage, c'est simplement l'interface qui affiche une information erronée.
Lors de vos investigations, commencez par vérifier si le compteur de jetons progresse. Si vous utilisez un service proxy API comme APIYI (apiyi.com) pour Claude, vous pouvez également consulter les journaux de la plateforme pour vérifier si la requête a bien renvoyé un code 200 OK, afin de croiser ces informations avec l'état affiché dans l'interface de Claude Code.
Pourquoi envoyer un message suffit à "ressusciter" Claude Code
Beaucoup ont remarqué une curiosité technique assez déconcertante : Claude Code semble bloqué depuis 3 minutes, mais il suffit d'envoyer un simple "Tu es là ?" ou même d'appuyer sur Entrée pour qu'il reprenne immédiatement son travail là où il s'était arrêté. Ce phénomène s'explique en réalité au niveau du protocole.
La première situation concerne les résidus dans la ligne d'état (cause racine 6). Claude a en fait déjà terminé sa réponse, mais l'interface utilisateur n'a pas effacé l'indicateur de chargement (spinner). Dans ce cas, votre nouveau message est directement traité comme la requête suivante, ce qui donne l'impression d'une "résurrection", alors qu'il s'agit simplement de la poursuite normale du flux.
La seconde situation concerne les blocages lors de la réponse en flux (cause racine 1). Lorsque Claude Code reçoit une nouvelle entrée, il ferme activement l'état de suspension (hang), nettoie la requête partiellement terminée et lance une nouvelle requête HTTP. Cette nouvelle requête est envoyée avec l'historique complet de la session, et le modèle reprend sa réponse près du point d'interruption. Visuellement, on a donc l'impression qu'il "reprend le travail".
La troisième situation survient lorsqu'un serveur MCP ou un appel d'outil attend une réponse en aval. Le nouveau message est routé par Claude Code comme une nouvelle décision d'appel d'outil, ce qui permet d'éviter indirectement l'appel qui était bloqué.
Il est important de souligner que l'envoi d'un message n'est pas une solution miracle. Si le blocage est dû à un processus sous-jacent dans un état d'attente irrécupérable (comme dans les phases avancées de la cause racine 2), le message sera ajouté à la file d'attente sans être traité. Dans ce cas, il faut utiliser Ctrl+C ou fermer le terminal. Pour les scénarios passant par le service proxy API APIYI (apiyi.com), le taux de réussite de cette méthode est généralement plus élevé, car ces plateformes libèrent souvent les connexions expirées plus rapidement que les points de terminaison officiels.
7 méthodes pour restaurer Claude Code en cas de blocage
Chaque cause racine nécessite une approche différente. Le tableau ci-dessous classe les 7 méthodes les plus efficaces par "degré d'intrusion", du plus léger au plus lourd, pour vous aider à décider.

| Méthode | Commande | Cause racine | Perte de contexte |
|---|---|---|---|
| Envoyer un message | Saisie directe | Cause 1 / 6 | Non |
| Interrompre | Ctrl+C |
Cause 1 / 2 / 3 | Non |
| Diagnostic | /doctor |
N'importe laquelle | Non |
| Compacter | /compact |
Cause 3 / 4 | Historique résumé |
| Vider la session | /clear |
Cause 4 grave | Oui |
| Relancer le terminal | claude --resume |
Cause 1 / 2 grave | Non |
| Forcer l'arrêt | kill -9 <pid> |
Cause 1 / 2 bloqué | Perte de la session |
La stratégie recommandée est de procéder "du plus léger au plus lourd". Commencez par appuyer sur Entrée ou envoyer un message quelconque ; si cela échoue, utilisez Ctrl+C pour annuler la requête en cours. Si le terminal ne répond plus du tout, fermez-le complètement, puis utilisez claude --resume pour récupérer votre session.
La commande /doctor est l'outil de diagnostic officiel recommandé par Anthropic. Elle vérifie en une fois l'installation, le fichier de configuration, la liste des serveurs MCP, le taux d'utilisation du contexte, etc., et fournit généralement des conseils de réparation précis. Si le rapport indique Context: 87%, il s'agit presque certainement de la cause racine 4, et un /compact suffira à résoudre le problème.
Pour les tâches longues, il est conseillé d'intégrer régulièrement des /compact dans votre flux de travail pour maintenir l'utilisation du contexte en dessous de 60 %. De plus, lorsque vous utilisez Claude via la plateforme APIYI (apiyi.com), vous pouvez allouer des quotas indépendants au processus principal de Claude Code et aux serveurs MCP, ce qui facilite l'identification de l'origine des erreurs.
5 meilleures pratiques pour éviter les blocages avec Claude Code
Le dépannage n'est qu'une solution réactive ; un flux de travail réellement stable repose sur la prévention. Voici 5 pratiques basées sur l'analyse des causes profondes de plusieurs tickets GitHub, qui permettront de réduire le taux de blocage à un niveau quasi négligeable.

La première règle est la lecture segmentée des gros fichiers. Lire directement un fichier de plus de 1 Mo déclenchera presque certainement une saturation de la fenêtre de contexte. Adoptez une approche en deux étapes : commencez par un ls -la pour vérifier la taille, puis utilisez Read avec les paramètres offset et limit pour lire par segments, ce qui évite la cause profonde n°4.
La deuxième règle consiste à déléguer les tâches complexes aux subagents. Les subagents de Claude Code possèdent leur propre fenêtre de contexte. Confier la génération de nombreux fichiers ou la réécriture de code en masse à un subagent permet d'éviter, à la source, de saturer le contexte principal.
La troisième règle est de désactiver les serveurs MCP suspects. Chaque serveur MCP ajouté augmente le risque de blocage au démarrage. Ne conservez dans vos paramètres que les serveurs MCP que vous utilisez quotidiennement ; désactivez tous les autres pour réduire significativement la cause profonde n°5.
La quatrième règle est de configurer les délais d'expiration (timeout) du modèle principal et de lecture. Une pratique courante dans la communauté consiste à régler STREAM_READ_TIMEOUT_MS sur 120 secondes et à ajouter un processus de surveillance (watchdog) externe qui tue et redémarre automatiquement le processus si le fichier JSONL ne progresse plus. C'est extrêmement efficace contre la cause profonde n°1.
La cinquième règle est d'utiliser une voie d'accès API stable. Les appels transfrontaliers, les connexions haut débit domestiques ou le multiplexage via tmux augmentent la probabilité de blocage du flux. Une solution simple consiste à passer par une plateforme d'agrégation comme APIYI (apiyi.com) pour invoquer les modèles de la série Claude. Cela permet aux connexions TCP persistantes de transiter par des nœuds relais stables, réduisant ainsi la fréquence de la cause profonde n°1.
Les équipes qui appliquent ces 5 points rapportent généralement que le nombre de blocages hebdomadaires passe de 5-10 à moins d'une fois, et que le temps de récupération moyen est réduit de 5-10 minutes à quelques dizaines de secondes.
FAQ
Q1 : Les différents verbes du spinner signifient-ils que Claude effectue des tâches différentes ?
Non. Les 187 verbes par défaut ne sont que des textes anthropomorphiques choisis au hasard et n'ont aucun lien avec l'état réel de Claude. Pour juger de l'état, fiez-vous au compteur de jetons (tokens) et à la durée d'attente.
Q2 : Est-ce que je perds mon contexte après un Ctrl+C ?
Non. Ctrl+C annule uniquement la requête en cours, mais toute la session est conservée. Si Ctrl+C ne répond pas, vous pouvez réessayer ou fermer directement le terminal, puis utiliser claude --resume pour récupérer votre session.
Q3 : Est-il fréquent que Claude Code se bloque lors d’une utilisation depuis l’étranger ?
Le réseau transfrontalier est l'une des principales causes d'interruption du flux. Il est recommandé d'utiliser une plateforme d'agrégation comme APIYI (apiyi.com) pour appeler les modèles Claude. Les nœuds relais stables maintiennent la connexion persistante avec Anthropic, ce qui réduit considérablement la probabilité de blocage pour les développeurs.
Q4 : Que faire si je vois le message `Autocompact is thrashing` ?
Arrêtez immédiatement la tâche en cours et utilisez une commande de compactage ciblée comme /compact keep only the plan and the diff pour vider les gros blocs de sortie brute du contexte. Si cela échoue, ouvrez une nouvelle session ou passez la lecture des gros fichiers en mode subagent.
Q5 : Puis-je modifier moi-même les verbes du spinner ?
Oui. Ajoutez le champ spinnerVerbs dans votre fichier ~/.claude/settings.json. Les modes peuvent être default, append ou replace, associés à un tableau de chaînes de caractères. La communauté propose des packs de verbes avec 88 thèmes et plus de 1900 mots que vous pouvez utiliser directement.
Résumé
Le blocage de Claude Code provient essentiellement d'une superposition de problèmes dans trois sous-systèmes : le protocole de streaming, la gestion du contexte et l'intégration MCP, le tout dans des scénarios limites. En comprenant les 4 champs de l'indicateur d'état, en mémorisant les 6 causes profondes et les 7 méthodes de récupération, vous transformerez ce qui semble être une "panne mystique" en un "incident connu".
Notre conseil pour une mise en pratique efficace est de transformer ces méthodes de récupération en réflexes : envoyez d'abord un message, faites ensuite un Ctrl+C, utilisez /doctor, et enfin, fermez le terminal avec claude --resume. En combinant un service proxy API stable et 5 bonnes pratiques de prévention — comme maintenir le contexte en dessous de 80 %, déléguer les fichiers volumineux à des sous-agents et utiliser les accès stables via APIYI (apiyi.com) — la grande majorité des blocages peuvent être résolus en quelques secondes.
Auteur : Équipe technique APIYI
Contact : Obtenez la gamme complète des modèles Claude et un support de service proxy API stable pour Claude Code via APIYI (apiyi.com)
Date de mise à jour : 13 mai 2026
