Mode headless : faire tourner des agents sans interaction
En mode headless ou non-interactif, un agent IA tourne sans fenĂȘtre de chat â idĂ©al pour les scripts et la CI, mais sans pouvoir te poser de questions.
Ce que signifie headless
Normalement, tu discutes en direct avec un agent : il pose une question, tu rĂ©ponds, il continue. En mode headless ou non-interactif, ce dialogue disparaĂźt. Tu fournis un prompt en argument ou via un pipe, l'agent le traite et renvoie une seule rĂ©ponse Ă la fin â sans question intermĂ©diaire, sans fenĂȘtre de chat.
à quoi ça ressemble dans Claude Code
La commande claude -p "Trouve et corrige le bug dans auth.py" dĂ©marre Claude Code en mode non-interactif. Tu peux aussi envoyer des donnĂ©es via un pipe : cat erreur.log | claude -p "Explique la cause". La sortie peut ĂȘtre rĂ©cupĂ©rĂ©e en texte brut ou en JSON structurĂ© (--output-format json), ce qui s'intĂšgre bien dans des scripts.
à quoi ça sert
- Traitement par lots (batch) : parcourir automatiquement de nombreux fichiers ou tickets
- CI/CD : par exemple vérifier automatiquement chaque pull request pour des fautes de frappe ou des problÚmes de sécurité
- Tùches cron et automatisations planifiées, sans intervention humaine
Le risque : pas de questions en retour
La plus grande diffĂ©rence avec le mode interactif : l'agent ne peut pas te demander la permission ou une clarification. S'il tombe sur une situation oĂč il demanderait normalement, il doit dĂ©cider seul ou abandonner. C'est pourquoi le choix du mode de permissions (voir l'entrĂ©e dĂ©diĂ©e) compte particuliĂšrement en fonctionnement headless : sans rĂšgles claires, un agent peut soit faire trop peu (il abandonne sans cesse), soit trop (il exĂ©cute des actions risquĂ©es sans demander).
EXEMPLE
# Script CI : vérification des fautes de frappe pour chaque diff de PR git diff main | claude -p "Trouve les fautes de frappe dans ce diff. Pour chacune, indique 'fichier:ligne' et le problÚme, rien d'autre." --output-format json
đ ïž EXERCICE â Ă TOI DE JOUER
Construis un appel headless simple qui résume un fichier, et observe comment il se comporte sans pouvoir poser de questions.
- Exécute dans un terminal : claude -p "Résume ce fichier en 3 phrases" --allowedTools "Read" avec un vrai fichier de ton projet.
- RĂ©pĂšte l'appel, mais indique un fichier qui n'existe pas â observe comment l'agent rĂ©agit sans demander (une erreur au lieu d'une question).
- Essaie --output-format json et regarde le JSON rĂ©sultant : quels champs contient-il en plus du texte lui-mĂȘme ?
â AUTO-VĂRIFICATION
- â As-tu pu expliquer pourquoi l'agent n'a pas simplement demandĂ©, face au fichier manquant ?
- â As-tu compris Ă quoi sert --allowedTools dans ce contexte ?
- â Connais-tu les deux scĂ©narios (batch, CI) de l'entrĂ©e oĂč le fonctionnement headless a le plus de sens ?
QUIZ RAPIDE
Quel est le plus grand risque lorsqu'on fait tourner un agent en mode headless / non-interactif ?
SOURCES
- Doc Claude Code : exĂ©cuter Claude Code de façon programmatique (headless) â code.claude.com
- Doc Claude Code : modes de permissions â code.claude.com