Fonctionnalité bêta. L’audit est fourni en version bêta pendant que nous recueillons les premiers retours.
Le catalogue de détecteurs et le format de rapport sont susceptibles d’évoluer avant la prochaine version stable.
N’hésitez pas à ouvrir un ticket si quelque chose vous semble incorrect.
http://localhost:8020/audit lorsque vous exécutez failproofai en local.
cd <cwd> redondants, boucles de polling avec sleep, relecture de fichiers venant d’être modifiés, et bien plus encore.
Pour chaque transcription, chaque événement d’utilisation d’outil est rejoué à travers les 39 politiques intégrées et à travers 8 détecteurs réservés à l’audit, qui identifient des patterns non encore couverts par les politiques en temps réel. Les occurrences sont agrégées par politique / détecteur sur l’ensemble des sessions.
Ce que vous obtenez
La page/audit est composée de six sections :
- Identité — votre agent classifié dans l’un des 8 archétypes (
optimist,cowboy,explorer,goldfish,paranoid architect,precision builder,hammer,ghost) en fonction du signal pondéré sur l’ensemble des transcriptions auditées. - Points forts — chiffres réels issus de l’analyse (% d’appels propres, “0 fuite de credentials”, etc.) conditionnés par le déclenchement effectif des politiques de sanitisation concernées.
- Score — de 0 à 100 avec des niveaux S/A/B/C/D/F et une estimation de l’amélioration projetée si toutes les politiques recommandées étaient activées.
- Résultats — fiches par politique indiquant ce qui s’est passé, le coût, les preuves capturées, et la commande exacte
failproofai policy add <slug>pour activer le builtin en temps réel qui aurait détecté le problème. - Politiques prescrites — liste d’installation agrégée avec une commande
failproofai policies --installen une seule étape. - Rappel de ré-audit — « revenez avec de meilleurs résultats ». Programmez un rappel par e-mail dans 7 jours via l’api-server (connexion requise ; voir
failproofai auth).
Détecteurs réservés à l’audit
Ces détecteurs identifient des patterns de comportements sous-optimaux qui ne sont pas (encore) appliqués en temps réel. Ils s’exécutent uniquement lors de l’audit et ne bloquent jamais un appel d’outil en direct.| Détecteur | Ce qu’il compte |
|---|---|
redundant-cd-cwd | Commandes Bash commençant par cd <cwd> && … alors que les commandes s’exécutent déjà dans cwd. |
prefer-edit-over-read-cat | cat/head/tail/less/more sur un seul fichier source — utilisez l’outil Read à la place. |
prefer-edit-over-sed-awk | Modifications en place sed -i / awk … > file — utilisez l’outil Edit à la place. |
prefer-write-over-heredoc | Écriture de fichiers via heredoc / echo > file multi-lignes — utilisez l’outil Write à la place. |
sleep-polling-loop | Longues pauses sleep N (≥ 30s) ou boucles de polling while …; sleep …; done. |
find-from-root | find /, find /home, find /usr, etc. — limitez la portée à cwd. |
git-commit-no-verify | git commit … --no-verify / -n, en contournant les hooks. |
reread-after-edit | Lecture (Read) d’un fichier qui vient d’être modifié via Edit/Write dans la même session. |
Caches
- Cache par transcription dans
~/.failproofai/cache/audit/<sha1>.json, indexé par(mtime, size, engineVersion, detectorVersion). Invalidé automatiquement lors de modifications du code des politiques ou des détecteurs. - Cache du résultat global dans
~/.failproofai/audit-dashboard.json(mode 0600). Permet au tableau de bord de s’afficher instantanément à la navigation sans relancer l’analyse. Cliquez sur[ re-audit now ]depuis le tableau de bord pour forcer une actualisation.
Remarques
- Aucune mutation. L’audit s’exécute en mode lecture seule.
warn-repeated-tool-callsest ignoré car son sidecar par session serait autrement modifié. - Politiques de workflow ignorées. Les politiques
require-*-before-stopse déclenchent uniquement sur les événementsStopet viaexecSyncsur l’état git en direct — elles n’ont pas d’interprétation pertinente dans un contexte de rejoue historique, et n’apparaissent donc pas dans les comptages d’audit. - Politiques personnalisées ignorées. Les hooks personnalisés fournis par l’utilisateur ne sont pas rejoués (ils peuvent avoir évolué depuis la session d’origine).

