Claude Code Monitor Tool : Streaming Temps Réel des Processus Background
L'outil Monitor de Claude Code remplace le polling par du push temps réel. Architecture, exemples concrets, patterns avancés pour logs, tests et serveurs dev.
Sommaire
---
Qu'est-ce que l'outil Monitor ? {#introduction}
Monitor est un outil natif de Claude Code introduit le 9 avril 2026 dans la version v2.1.98. Son rôle : surveiller un processus background lancé par Claude (typiquement avec bash --background) et streamer ses événements directement dans la conversation au fur et à mesure qu'ils arrivent.
Concrètement, là où Claude devait auparavant interroger répétitivement un fichier de logs (tail -n 50 server.log) pour vérifier l'état d'un processus, Monitor maintient une connexion ouverte sur la sortie standard et pousse chaque ligne pertinente vers Claude en temps réel.
Pourquoi c'est important ?
Avant Monitor, les [workflows long-running](/blog/workflows-autonomes-long-running-claude-code) reposaient sur du polling : Claude devait deviner *quand* aller voir le fichier de logs. Trop tôt et il manque l'événement, trop tard et il perd du temps. Monitor élimine cette latence en passant à un modèle interruptif piloté par les événements eux-mêmes.
---
Polling vs streaming : pourquoi Monitor change la donne {#polling-vs-stream}
Le modèle polling (avant Monitor)
\\\`bash # Lancer le serveur en background npm run dev & SERVER_PID=$!
# Claude doit ensuite tailer manuellement tail -n 20 dev.log # ... attendre ... tail -n 20 dev.log # ... attendre encore ... tail -n 20 dev.log \\\`
Problèmes :
tail ajoute du bruit dans le contextetail, Claude la rateLe modèle streaming (avec Monitor)
\\\text [Claude lance npm run dev en background] [Claude appelle Monitor avec un pattern à surveiller] [Le serveur écrit "Ready on http://localhost:3000"] ↓ (push immédiat) [Claude reçoit l'événement et lance les tests E2E] \\\
Monitor maintient un descripteur de fichier ouvert sur stdout/stderr, applique un filtre (regex ou pattern simple), et injecte chaque match dans la conversation Claude comme un nouveau message système. Claude réagit immédiatement.
---
Architecture interne de Monitor {#architecture}
Composants
| Composant | Rôle |
|---|---|
| Background process | Le processus lancé via bash --background ou équivalent |
| Stream reader | Lecteur incrémental sur stdout/stderr du processus |
| Pattern matcher | Regex ou matcher simple appliqué ligne par ligne |
| Event channel | Canal qui pousse les matches dans la conversation |
| Trigger condition | Condition d'arrêt automatique (timeout, nombre de matches) |
Cycle de vie
npm run dev &Différence avec un hook
Les [hooks Claude Code](/blog/claude-code-hooks-automatiser-workflow) se déclenchent sur des événements internes de Claude (avant un tool call, après une réponse). Monitor se déclenche sur des événements externes : la sortie d'un processus que vous avez lancé. Les deux mécanismes sont complémentaires.
---
Activer et utiliser Monitor {#activer}
Monitor est disponible nativement dans Claude Code v2.1.98+. Aucune installation supplémentaire requise.
Vérification de version
\\\`bash claude --version # Doit afficher 2.1.98 ou supérieur
# Mise à jour si besoin npm install -g @anthropic-ai/claude-code@latest \\\`
Activation dans un prompt
Vous n'appelez généralement pas Monitor directement : c'est Claude qui choisit de l'utiliser quand vous décrivez le besoin. Exemples de prompts qui déclenchent Monitor :
\\\`text "Lance le serveur dev et préviens-moi quand il est prêt à recevoir des requêtes."
"Démarre les tests en watch mode et corrige les erreurs au fur et à mesure qu'elles apparaissent."
"Surveille les logs Postgres pendant que je tourne la migration, alerte-moi si tu vois une erreur." \\\`
Claude lance le processus en background puis appelle Monitor avec le pattern adapté.
---
Exemple 1 : surveiller un serveur de développement {#exemple-dev}
Cas typique : vous voulez que Claude lance votre serveur Next.js et passe automatiquement aux tests E2E quand il est prêt.
Sans Monitor (ancienne approche)
\\\`bash # Claude lance le serveur npm run dev > dev.log 2>&1 &
# Claude attend en pollant sleep 5 grep "Ready" dev.log || sleep 5 grep "Ready" dev.log || sleep 5 # Souvent imprécis : sleep trop court rate l'événement, trop long perd du temps \\\`
Avec Monitor
\\\`text [Prompt utilisateur] "Lance le serveur dev et dès qu'il écoute, exécute les tests Playwright"
[Claude]
\\\`
Gain de temps : 5 à 15 secondes par cycle, multiplié par chaque relance pendant la session.
---
Exemple 2 : tailer un test runner en TDD {#exemple-tdd}
Pattern puissant pour le [développement piloté par les tests](/blog/claude-code-tests-automatises-tdd) : Claude lance Vitest en watch mode et corrige les erreurs au fur et à mesure.
\\\`text [Prompt utilisateur] "Lance vitest --watch et corrige automatiquement chaque test qui échoue, en m'expliquant la correction"
[Claude]
\\\`
Boucle TDD entièrement pilotée par Monitor. Claude ne re-lance jamais les tests manuellement : Vitest le fait, Monitor pousse les résultats.
---
Exemple 3 : observer les logs d'une migration {#exemple-migration}
Cas critique : vous lancez une migration Prisma sur une grosse table et vous voulez que Claude détecte tout de suite si elle se bloque.
\\\`text [Prompt utilisateur] "Lance la migration en surveillant les logs Postgres, arrête-toi immédiatement si tu vois un lock ou une erreur"
[Claude]
\\\`
Sans Monitor, Claude aurait dû tailer le log par intervalles, manquant potentiellement le moment critique d'un lock long.
---
Patterns avancés avec Monitor {#patterns}
Pattern 1 : Trigger multi-conditions
Monitor accepte plusieurs patterns avec une condition logique :
\\\`text Monitor: patterns:
match_mode: "any" # any | all on_match: "interrupt" # interrupt | log | continue \\\`
Pattern 2 : Fenêtre glissante
Surveiller un événement qui doit se répéter N fois dans une fenêtre temporelle :
\\\text Monitor: pattern: "timeout" window: "30s" threshold: 5 on_match: "interrupt" # 5 timeouts en 30s = problème \\\
Utile pour détecter une dégradation progressive plutôt qu'une erreur ponctuelle.
Pattern 3 : Combinaison avec sub-agents
Claude peut déléguer la réaction à un [sub-agent spécialisé](/blog/claude-code-sub-agents-guide-pratique-2026) :
\\\text [Monitor détecte "ERROR" dans les logs] → Claude délègue au sub-agent "error-analyzer" → Sub-agent diagnostique, propose un fix, retourne au parent → Claude applique le fix sans polluer son contexte principal \\\
Pattern 4 : Signalisation fichier
Faire communiquer plusieurs processus via un fichier de signal lu par Monitor :
\\\`bash # Processus A écrit dans un fichier de signal echo "DEPLOY_READY" > .signals/state
# Monitor surveille ce fichier Monitor file=".signals/state" pattern="DEPLOY_READY" \\\`
Pattern utile pour orchestrer plusieurs sessions Claude Code asynchrones.
---
Bonnes pratiques et pièges courants {#bonnes-pratiques}
Patterns précis = signal/bruit optimal
Évitez les patterns trop génériques comme ERROR qui peuvent matcher des logs de routine. Préférez :
\\\text Mauvais : "ERROR" Bon : "ERROR\\s+\\[critical\\]" Bon : "panic:|fatal:" \\\
Toujours définir un timeout
Un Monitor sans timeout peut tourner indéfiniment si le processus ne produit jamais le pattern attendu. Toujours :
\\\text Monitor pattern="..." timeout="120s" \\\
Nettoyer les processus background
Quand vous terminez une session, vérifiez qu'aucun processus background n'est resté actif :
\\\`bash # Lister les processus background lancés par Claude ps aux | grep -E "node|next|vitest"
# Tuer si besoin kill \\`
Ne pas streamer des binaires
Monitor s'attend à du texte ligne par ligne. Si vous monitorez un processus qui produit du binaire (ffmpeg en mode debug verbeux), filtrez d'abord avec grep --line-buffered.
Volumes de logs élevés
Si votre processus produit plus de 100 lignes/seconde, Monitor peut accumuler du retard. Préfiltrez en amont :
\\\bash # Au lieu de monitorer tout le log applicatif tail -f app.log | grep --line-buffered "ERROR\|WARN" # Puis Monitor sur la sortie filtrée \\\
---
FAQ {#faq}
Monitor est-il payant ?
Non, Monitor est inclus dans Claude Code natif depuis la v2.1.98. Aucun supplément.
Y a-t-il une limite au nombre de Monitor simultanés ?
En pratique, vous pouvez surveiller 5 à 10 processus en parallèle sans souci. Au-delà, vous risquez de saturer le contexte Claude avec trop d'événements concurrents.
Monitor fonctionne-t-il sous Windows ?
Oui depuis la mise à jour Windows / PowerShell d'avril 2026. La syntaxe des patterns reste identique mais la commande de lancement background diffère (Start-Process au lieu de &).
Puis-je utiliser Monitor avec Docker ?
Oui, en monitorant docker logs -f ou en attachant un volume de logs partagé. Le pattern matching s'applique sur la sortie standard du container.
Différence avec un hook PostToolUse ?
Un [hook PostToolUse](/blog/claude-code-hooks-automatiser-workflow) se déclenche sur les actions de Claude lui-même (après un Read, après un Edit). Monitor surveille des processus externes lancés par Claude. Les deux peuvent être combinés.
Monitor consomme-t-il des jetons à chaque ligne ?
Seules les lignes qui matchent le pattern sont injectées dans la conversation. Si vous monitorez 10 000 lignes mais seulement 3 matchent, vous payez le coût de 3 messages, pas 10 000.
Peut-on stopper Monitor manuellement ?
Oui, en demandant à Claude "arrête le monitoring" ou en interrompant la session. Monitor libère ses ressources proprement.
Monitor remplace-t-il les tests automatisés ?
Non. Monitor est un outil de réactivité, pas de vérification. Combinez-le avec [TDD et tests automatisés](/blog/claude-code-tests-automatises-tdd) pour un workflow complet.
---
*Sources : Anthropic Claude Code Documentation v2.1.98, Claude Code Changelog Week 15 April 2026, communauté Claude Code.*
Envie de maîtriser Claude Code ?
Rejoignez notre formation complète et apprenez à utiliser Claude Code comme un pro.
Découvrir la formation