Imposé ou suggéré
Ce qui est imposé, ce qui est suggéré
Un texte que le modèle lit le guide ; seul ce que l'outil, le système ou GitHub exécute le contraint. Les workflows de Kwa sont agentiques : l'enchaînement est suggéré, les points de passage sont imposés par les gardes.
| Mécanisme | Qui l'exécute | Ce qu'il garantit | Par défaut | Ce qui le contourne | Nature |
|---|---|---|---|---|---|
AGENTS.md, CLAUDE.md | Le modèle, qui les lit | Rien : c'est du contexte | Chargés à chaque session | Le modèle peut s'en écarter | suggéré |
| Règles communes de Kwa | Le modèle ; un hook les injecte au démarrage | Rien de plus qu'une consigne | Actives | Idem | suggéré |
Rappel de routage (skills-router) | Un hook l'injecte, le modèle le lit | Que la table « quand → skill » est dans le contexte | Actif | Le modèle n'appelle pas la skill | suggéré |
Skills (/kwa:tdd, /kwa:ship…) | Le modèle, qui suit la procédure | Rien : une étape peut être sautée | Appelées par le modèle ou par vous | Une étape oubliée ; la relecture la rattrape | suggéré |
Sous-agent kwa:reviewer | Lancé par le modèle ; readonly-bash le garde en lecture seule | Qu'il ne modifie rien par les commandes reconnues | Avec /kwa:review et /kwa:agents | Une commande assemblée à l'exécution | mixte |
Gardes (guard-git, guard-write, guard-secrets…) | Claude Code ou Codex, avant les outils surveillés | Refus ou confirmation sur les commandes et chemins reconnus | Actifs dans un projet qui a une politique Kwa et le module | Ils lisent le texte : nom calculé, glob, script écrit puis lancé | imposé |
guard-github (preuve) | L'outil, avant gh pr create et gh pr merge lancés par l'agent | « Closes #N » présent, une image ou une section « Preuve » non vide | Actif avec le module issue-flow | Une fusion faite par une personne sur GitHub ; il vérifie que la preuve existe, pas qu'elle est juste | imposé |
verify-stop | L'outil, quand l'agent veut rendre la main | Pas de fin de réponse sur des vérifications rouges | Désactivé : KWA_STOP_VERIFY=1 pour l'activer | Claude Code rend la main après 8 blocages d'affilée | imposé si activé |
permissions.deny de Claude Code | Claude Code, avant l'outil nommé | Que cet outil refuse (Read(./.env)) | À écrire dans settings.json | Un autre outil : python3 -c dans le shell, sauf avec le bac à sable | imposé, sur un outil |
Bac à sable (/sandbox) | Le système d'exploitation, pendant la commande | Les commandes shell n'atteignent que les fichiers et domaines permis, règles Read et Edit deny comprises | Désactivé | Les hooks, serveurs MCP et outils de fichiers tournent hors du bac à sable ; Claude peut demander une relance hors du bac à sable | |
| Protection de branche et CI obligatoire | GitHub, hors de la machine | Pas de fusion sans relecture ni CI verte | À configurer sur le dépôt | Un administrateur du dépôt |
Sous Codex, c'est expérimental : les mêmes gardes passent par kwa hook, une confirmation que Codex ne sait pas demander devient un refus, et ces adaptations sont vérifiées par des tests, pas encore dans une vraie session. Sources : hooks, permissions, bac à sable de Claude Code.