Il y a une phrase qui résume bien le codage agentique : l’objectif n’est pas une meilleure invite, c’est un flux de travail qui s’exécute sans que vous ayez à le surveiller. Si vous utilisez Claude comme une simple fenêtre de chat, votre débit reste limité par votre attention. Pour gagner en production, construisez plutôt des workflows déclenchés automatiquement, capables d’exécuter une tâche, de vérifier leurs résultats et de demander une intervention humaine uniquement lorsqu’une décision est nécessaire.
TL;DR
Un workflow Claude autonome doit contenir cinq éléments :
- une spécification écrite et précise ;
- une exécution headless, par exemple avec
claude -p; - une porte de vérification déterministe : tests, typage, validation de schéma, tests de contrat ;
- des garde-fous : permissions limitées, nombre d’itérations borné, plafond de coûts, logs, arrêt d’urgence ;
- un transfert clair vers un humain : notification, PR de brouillon ou alerte d’échec.
Le mode headless de Claude Code, le SDK Claude Agent, les hooks et un ordonnanceur comme cron ou launchd permettent de mettre ces pièces en place. Le risque n’est pas l’agent lui-même, mais l’exécution non supervisée sans porte de validation ni limites.
Pourquoi « s’exécuter sans vous » est le vrai objectif
Le chat supervisé a un plafond simple : vous.
À chaque itération, Claude attend que vous lisiez la sortie, décidiez de la suite, reformuliez une instruction, puis relanciez. Le modèle peut générer rapidement, mais le workflow reste bloqué par vos changements de contexte.
Un workflow non supervisé retire ce goulot d’étranglement :
- l’agent exécute une tâche ;
- un script vérifie le résultat ;
- les échecs sont renvoyés automatiquement à l’agent ;
- un humain intervient seulement à la fin ou en cas de blocage.
Le gain principal n’est pas seulement la vitesse, mais le parallélisme. Une fois qu’un workflow peut tourner sans supervision, vous augmentez votre capacité en ajoutant d’autres workflows, pas en tapant plus vite. C’est le même principe que dans les flux de travail dynamiques de Claude Code, où une session peut se déployer en plusieurs agents parallèles.
Mais l’autonomie augmente aussi le risque. Un agent supervisé qui fait une mauvaise modification peut être arrêté lorsque vous lisez le diff. Un agent non supervisé peut valider, passer à l’étape suivante et continuer. Il faut donc passer de l’art de l’invite à la conception d’un système borné, observable et vérifiable. L’article d’Anthropic sur la construction d’agents efficaces va dans le même sens : l’effet de levier vient surtout de l’environnement autour du modèle.
Les cinq éléments d’un workflow Claude autonome
1. Une spécification précise
L’agent doit lire une définition claire de ce qui est attendu au début de chaque exécution.
Mauvais exemple :
Corrige l’API.
Meilleur exemple :
Implémente POST /orders.
Critères d’acceptation :
- retourne 201 lorsque la commande est valide ;
- valide le corps de requête contre le schéma OpenAPI ;
- retourne 422 si customer_id ou items est manquant ;
- retourne une réponse JSON conforme au schéma OrderResponse ;
- tous les tests API doivent passer.
Une bonne spécification sert à la fois d’instruction pour l’agent et de référence pour la porte de vérification.
2. Une exécution headless
Claude doit pouvoir s’exécuter sans interface de chat ni approbation manuelle à chaque action.
Avec Claude Code, la base est le mode non interactif :
claude -p "Implement the orders endpoint per spec.md, then run the test suite" \
--allowedTools "Edit,Write,Bash" \
--output-format json \
>> run.log 2>&1
Le flag --allowedTools est critique. En mode interactif, vous approuvez les actions. En mode headless, personne ne le fait. La liste blanche devient donc votre contrôle principal.
Commencez avec le minimum :
--allowedTools "Edit,Write,Bash"
Évitez de donner un accès shell large à un agent non supervisé sans sandbox. La liste complète des options se trouve dans la documentation de Claude Code.
3. Une porte de vérification déterministe
L’agent ne doit pas décider seul qu’il a terminé. Une vérification externe doit produire un résultat clair : succès ou échec.
Exemples de portes utiles :
npm test
npm run typecheck
npm run test:contract
pytest tests/api
Pour un workflow API, la porte peut vérifier :
- les codes de statut ;
- les schémas JSON ;
- les champs obligatoires ;
- les contrats OpenAPI ;
- les erreurs attendues ;
- les cas limites.
Le résultat doit être exploitable par l’agent :
Échec :
POST /orders sans customer_id
Attendu : 422
Reçu : 500
Cette sortie devient l’entrée de l’itération suivante.
4. Des garde-fous stricts
Un workflow autonome doit être limité par construction :
- permissions minimales ;
- nombre maximal d’itérations ;
- plafond de coûts ;
- logs par exécution ;
- espace de travail isolé ;
- arrêt d’urgence ;
- tests et spécifications non modifiables par l’agent.
La règle pratique : l’agent doit pouvoir faire son travail, et rien d’autre.
5. Un transfert explicite
À la fin, le workflow doit prévenir quelqu’un.
Exemples :
- créer une PR de brouillon ;
- envoyer une notification Slack ;
- ouvrir une issue ;
- envoyer un rapport d’échec ;
- attacher les logs de l’exécution.
Le silence n’est pas un succès.
Utiliser le SDK Claude Agent pour contrôler la boucle
Une commande shell suffit pour des tâches simples. Pour un workflow plus robuste, utilisez le SDK Claude Agent afin d’implémenter la boucle dans votre code.
Exemple TypeScript simplifié :
import { query } from "@anthropic-ai/claude-agent-sdk";
const MAX_ITERATIONS = 8;
let feedback = "";
for (let attempt = 0; attempt < MAX_ITERATIONS; attempt++) {
for await (const msg of query({
prompt: `
${task}
Échecs précédents :
${feedback}
`,
options: {
allowedTools: ["Edit", "Write", "Bash"],
},
})) {
// Écrire les messages dans les logs
console.log(msg);
}
const gate = runVerification();
if (gate.passed) {
await createDraftPullRequest();
break;
}
feedback = gate.failures;
if (attempt === MAX_ITERATIONS - 1) {
await notifyHuman({
status: "failed",
reason: gate.failures,
});
}
}
La structure importante est celle-ci :
- envoyer la tâche ;
- laisser Claude modifier le code ;
- exécuter une vérification déterministe ;
- renvoyer les erreurs structurées à Claude ;
- arrêter après une limite ;
- transférer à un humain.
Si vous hésitez entre une boucle personnalisée et une solution hébergée, cette comparaison entre les agents gérés et le SDK Agent détaille les cas d’usage.
Ajouter des hooks pour appliquer les règles
Les hooks exécutent vos commandes à des moments fixes du cycle de vie de Claude. Contrairement à une instruction donnée au modèle, un hook est déterministe : l’agent ne choisit pas de l’exécuter ou non.
Exemple : lancer les tests après chaque modification de fichier.
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "npm test --silent"
}
]
}
]
}
}
Ce type de hook est utile pour :
- exécuter les tests après une modification ;
- vérifier le formatage ;
- refuser certaines commandes ;
- empêcher la modification de fichiers sensibles ;
- déclencher une analyse statique.
Exemple de règle simple côté script :
#!/usr/bin/env bash
set -euo pipefail
if git diff --name-only | grep -E "openapi.yaml|tests/contract"; then
echo "Erreur : l’agent ne doit pas modifier la spécification ou les tests de contrat."
exit 1
fi
Déclencher le workflow avec cron ou launchd
Un workflow autonome doit être lancé par un ordonnanceur.
Sur un serveur Linux, utilisez cron :
# Tous les jours de semaine à 7h : exécuter la maintenance API
0 7 * * 1-5 cd /srv/api && claude -p "$(cat tasks/nightly-maintenance.md)" \
--allowedTools "Edit,Bash" \
>> logs/run-$(date +\%F).log 2>&1
Structure recommandée :
/srv/api
├── tasks/
│ └── nightly-maintenance.md
├── logs/
├── scripts/
│ └── verify.sh
├── openapi.yaml
└── tests/
Votre tâche peut être écrite ainsi :
# Maintenance API quotidienne
Objectif :
Synchroniser l’implémentation avec openapi.yaml.
Contraintes :
- ne pas modifier openapi.yaml ;
- ne pas modifier tests/contract ;
- corriger uniquement les endpoints listés dans cette tâche ;
- exécuter ./scripts/verify.sh avant de terminer.
Définition de terminé :
- ./scripts/verify.sh retourne 0 ;
- aucun test de contrat ne casse ;
- les modifications sont prêtes pour une PR de brouillon.
Concevez la boucle, pas seulement l’invite
La question utile n’est pas :
Que dois-je dire à Claude ?
La question utile est :
Quelle boucle permet à Claude de recevoir automatiquement le bon feedback ?
L’agent génère rapidement, mais il ne possède pas un sens fiable de sa propre justesse. La boucle lui fournit ce signal via la porte de vérification.
C’est le cœur de l’approche décrite dans arrêtez de solliciter votre agent de codage, construisez la boucle à la place. Quand la porte décide, la confiance déclarée du modèle n’a plus d’importance.
Une spécification claire est donc plus importante qu’une invite astucieuse. Un fichier design.md ou AGENTS.md peut contenir :
# AGENTS.md
## Objectif
Maintenir les endpoints Orders conformes à openapi.yaml.
## Contraintes
- Ne jamais modifier openapi.yaml.
- Ne jamais modifier les tests de contrat.
- Ne jamais pousser directement sur main.
- Toujours exécuter ./scripts/verify.sh.
## Définition de terminé
- Tous les tests passent.
- Les réponses respectent les schémas OpenAPI.
- Une PR de brouillon est créée.
Exemple concret : maintenance d’API non supervisée
Supposons que vous vouliez maintenir des endpoints API synchronisés avec leur spécification OpenAPI, chaque matin, sans envoyer de code cassé.
Architecture du workflow
Spécification
Le contrat est dansopenapi.yaml. Les comportements attendus sont dans les tests.Déclencheur
Une tâchecronlance Claude en mode headless à 7h.Génération
Claude corrige les écarts entre l’implémentation et la spécification.Porte
Le workflow exécute les tests API et les validations de schéma.Boucle
Si la porte échoue, l’erreur structurée est renvoyée à Claude.Escalade
Après N tentatives, le workflow s’arrête et alerte un humain.Transfert
Si tout passe, une PR de brouillon est créée.
Exemple de script de vérification :
#!/usr/bin/env bash
set -euo pipefail
npm run typecheck
npm test
npm run test:contract
Exemple de feedback renvoyé à l’agent :
La porte de vérification a échoué.
Échec 1 :
Endpoint : POST /orders
Cas : customer_id manquant
Attendu : 422
Reçu : 500
Échec 2 :
Endpoint : GET /orders/{id}
Champ : total
Attendu par le schéma : number
Reçu : string
Corrige uniquement ces écarts. Ne modifie pas openapi.yaml ni les tests.
La porte de l’étape 4 est ce qui rend le workflow sûr. Sans elle, l’agent peut modifier le code et déclarer un succès sur la base de sa propre lecture.
C’est là qu’Apidog s’intègre dans un workflow autonome : la conception de l’API, le schéma, le serveur de mock et les tests automatisés vivent dans un seul espace de travail. La spécification et la porte de vérification restent donc alignées. Vous pouvez diriger l’exécution vers un scénario de test Apidog et donner à l’agent un résultat succès/échec validé par schéma à chaque itération. Le serveur de mock permet aussi de remplacer des dépendances indisponibles, afin qu’une exécution nocturne ne soit pas bloquée par un service tiers instable.
Les équipes qui câblent l’accès aux endpoints via le débogueur d’agent AI Apidog permettent à l’agent d’inspecter les endpoints comme un testeur humain. Téléchargez Apidog si vous préférez construire cette porte visuellement plutôt que coder tout l’exécuteur à la main.
Garde-fous pour les exécutions non supervisées
Voici les règles à appliquer avant de laisser un workflow tourner sans vous.
Limitez les permissions
N’accordez que les outils nécessaires :
--allowedTools "Edit,Write,Bash"
Évitez les accès destructeurs non sandboxés. Une exécution non supervisée ne doit jamais avoir carte blanche sur votre environnement.
Bornez les itérations
Une boucle doit s’arrêter.
const MAX_ITERATIONS = 5;
Si la porte ne passe pas après cinq tentatives, l’agent doit escalader, pas continuer indéfiniment.
Ajoutez un plafond de coûts
Les boucles non supervisées peuvent consommer des tokens sans signal immédiat. Définissez un budget par exécution et loggez la consommation. Les recommandations sur la réduction des coûts des tokens d’agent s’appliquent directement ici.
Protégez les tests et la spécification
Ne laissez pas l’agent modifier la porte qui le vérifie.
À protéger :
openapi.yaml
tests/contract/
scripts/verify.sh
Sinon, vous construisez un système capable de simuler le progrès en réécrivant ses propres critères de réussite.
Utilisez une sandbox
Exécutez le workflow dans :
- un conteneur ;
- une branche jetable ;
- un
git worktree; - un environnement CI isolé.
Exemple :
git worktree add ../api-agent-run -b agent/nightly-$(date +%F)
cd ../api-agent-run
Loggez tout
Chaque exécution doit produire un journal exploitable :
mkdir -p logs
claude -p "$(cat tasks/nightly-maintenance.md)" \
--allowedTools "Edit,Bash" \
--output-format json \
>> logs/run-$(date +%F-%H%M).log 2>&1
Vous ne pouvez pas déboguer ce que vous n’avez pas enregistré.
Gardez une approbation humaine aux marges
« Sans vous » ne veut pas dire « sans contrôle humain ». Placez l’humain :
- au début, pour approuver la tâche ;
- ou à la fin, pour valider la PR.
Ne le mettez pas dans la boucle interne. Les schémas de câblage et les modes de défaillance sont détaillés dans cet article sur le câblage des outils de flux de travail agentique.
Erreurs courantes
Pas de porte de vérification
Si la seule vérification est :
Claude, as-tu terminé ?
vous n’avez pas un workflow autonome. Vous avez un chatbot non supervisé.
La porte doit être externe au modèle.
Une tâche trop large
Une tâche comme celle-ci converge rarement :
Maintiens tout le service backend.
Préférez :
Corrige uniquement POST /orders selon openapi.yaml et tests/orders.contract.ts.
Les petites tâches terminent. Les grosses tâches dérivent.
Permissions trop larges
Accorder tous les outils est pratique, mais dangereux. En mode non supervisé, un petit bug peut devenir un incident si l’agent dispose d’un accès trop large.
Succès ou échec silencieux
Un workflow qui réussit sans notification ou échoue sans alerte est difficile à exploiter. Chaque exécution doit produire un transfert explicite.
Faire confiance à l’auto-déclaration du modèle
Claude peut dire que c’est terminé. La porte décide si c’est vrai.
Construisez pour l’écart entre :
semble terminé
et :
est vérifié
Si vous souhaitez une architecture plus complète, cette analyse de la conception du harnais d’agent explique comment assembler ces pièces à plus grande échelle.
Le point à retenir
Construire des workflows Claude qui s’exécutent sans vous dépend moins de Claude que du système autour de lui.
Les cinq pièces indispensables sont :
- une spécification précise ;
- une exécution headless ;
- une porte de vérification déterministe ;
- des garde-fous stricts ;
- un transfert propre vers un humain.
Commencez petit : un endpoint, une spécification, une porte rapide, une boucle bornée, des permissions limitées et une notification finale.
Pour les workflows API, la suite de tests est la porte qui rend l’exécution non supervisée sûre. Apidog fournit la conception, la simulation et les tests automatisés dans un seul espace de travail pour construire cette porte. Téléchargez-le, câblez la vérification, puis laissez le workflow tourner pendant que vous faites autre chose.

Top comments (0)