
credactor v2.6.0
Scannez. Expurgez. Committez proprement.
Credactor
Trouvez le secret. Corrigez-le. Commitez proprement.
La plupart des scanners de secrets s'arrêtent à l'alerte : vous obtenez une liste d'identifiants compromis et le nettoyage vous revient. Credactor détecte les secrets codés en dur et les réécrit sur place, de sorte qu'une fuite dans votre arbre de travail passe de détectée à corrigée en une seule commande. Il s'exécute sur votre machine, en tant que hook pre-commit ou en tant que barrière CI, et il peut aussi corriger ce que Gitleaks, TruffleHog ou Betterleaks détectent.
# Before
db_password = "h8Tq2vKp9mRz4Wd"
# credactor --fix-all . (default: a sentinel that fails loudly at runtime)
db_password = "REDACTED_BY_CREDACTOR"
# credactor --replace-with env --fix-all . (read it from the environment)
db_password = os.environ["DB_PASSWORD"]
La rédaction nettoie votre arbre de travail. Elle ne révoque pas l'identifiant et ne touche pas à l'historique git. Si un secret a déjà été commité ou partagé, révoquez-le, et réécrivez l'historique si vous devez également le faire disparaître de là (par exemple avec
git filter-repo).
Pourquoi Credactor
- Il corrige, il ne se contente pas de signaler. Chaque résultat est remplacé sur place par une sentinelle, votre propre marqueur, ou une recherche de variable d'environnement dans le langage propre au fichier.
- Des écritures prudentes. Chaque modification est planifiée en mémoire,
sauvegardée au préalable (mode
0600), écrite dans un fichier temporaire puis renommée à sa place. Un fichier modifié pendant l'exécution, un chemin qui sort de la racine d'analyse, ou un bloc de clé privée est ignoré avec un avertissement, et son résultat reste signalé. - Fonctionne avec le scanner que vous utilisez déjà. Fournissez-lui un rapport Gitleaks, TruffleHog ou Betterleaks et il corrige leurs résultats et les siens en une seule passe dédupliquée.
- Conçu pour les pipelines. Une barrière
--cien lecture seule avec des codes de sortie clairs, SARIF 2.1.0 avec les emplacements de ligne et de colonne pour GitHub Code Scanning, une GitHub Action et un hook pre-commit. Les secrets sont masqués dans tous les formats de rapport, et la sortie texte est nettoyée afin qu'un fichier analysé ne puisse pas injecter de séquences d'échappement ou de commandes de workflow CI dans votre terminal ou vos logs. - Des versions vérifiées par rapport à leur source. Bibliothèque standard
Python 3.11+ pure, sans dépendances à l'exécution. Avant qu'une version
n'atteigne PyPI, chaque fichier Credactor du wheel et du sdist est comparé
octet par octet avec la source étiquetée, et les métadonnées du paquet doivent
correspondre à
pyproject.toml(voir Durcissement de la chaîne d'approvisionnement).
Là où il n'est pas l'outil adéquat à lui seul : ses règles intégrées couvrent les formats d'identifiants qui fuient le plus souvent plutôt que des centaines de fournisseurs, et il ne vérifie pas si un secret est actif. Une exécution propre signifie que rien ne correspond à ses règles, pas que le code ne contient aucun secret. Associez-le à un scanner dédié pour la couverture (voir Apportez votre propre scanner).
Installation
pip install credactor
Avec uv, installez-le en tant qu'outil, ou exécutez-le une fois sans l'installer :
uv tool install credactor
uvx credactor --dry-run .
Ou avec Homebrew sur macOS et Linux :
brew install rxb06/tap/credactor
Nécessite Python 3.11 ou plus récent. Testé en CI sur Linux et Windows, Python 3.11 à
3.13. Pour les fichiers dans des encodages autres que UTF-8, Latin-1 ou UTF-16 simple, ajoutez
l'extra optionnel : pip install 'credactor[encoding]' ou
uv tool install 'credactor[encoding]' (la formule Homebrew l'inclut).
Démarrage rapide
1. Voyez ce qu'il trouve. Rien n'est modifié.
credactor --dry-run .
======================================================================
CREDENTIAL SCAN REPORT -- 2 finding(s) in 1 file(s)
======================================================================
FILE: config.py
────────────────────────────────────────────────────────────
Line 3 [HIGH] [variable:db_password]
db_password = "h8Tq[REDACTED]"
Line 4 [CRITICAL] [pattern:AWS access key]
aws_key = "AKIA[REDACTED]"
Les rapports n'affichent que les quatre premiers caractères de chaque secret.
2. Corrigez-les. Examinez d'abord les résultats : --fix-all réécrit chacun d'eux, y compris les faux positifs. Pour en conserver un, ajoutez # credactor:ignore sur sa ligne (voir Supprimer les faux positifs) ou corrigez de manière interactive et répondez n. Avant chaque modification de fichier, une copie .bak est écrite à côté de celui-ci afin que vous puissiez annuler.
credactor . # ask y/N for each finding (needs a terminal)
credactor --fix-all . # fix all after one confirmation
credactor --fix-all --yes . # fix all, no prompt (scripts)
credactor --replace-with env --fix-all . # environment lookups instead of the sentinel
Le mode Env écrit la recherche, pas l'import : ajoutez import os ou l'équivalent de votre langage si le fichier ne le contient pas. Sous Windows Git Bash, exécutez le mode interactif avec winpty credactor ..
3. Vérifiez, puis nettoyez les sauvegardes. Chaque .bak contient encore le secret d'origine, et Credactor ne modifie jamais votre .gitignore, donc un simple git add . l'indexerait.
diff config.py.bak config.py # check what changed
cp config.py.bak config.py # undo
Ajoutez *.bak et *.credactor.tmp au .gitignore et supprimez les sauvegardes une fois
satisfait. Pour garder les sauvegardes hors de l'arborescence dès le départ, passez
--secure-backup-dir DIR (un répertoire en dehors du dépôt) lors de l'exécution de correction.
--secure-delete efface chaque sauvegarde à la place, ce qui laisse git comme seule
annulation.
Commandes en un coup d'œil
| Commande | Ce qu'elle fait | Modifie les fichiers |
|---|---|---|
credactor --dry-run . | Signale les résultats | Non |
credactor . | Examine et corrige un résultat à la fois | Oui, sur y |
credactor --fix-all . | Corrige chaque résultat après une confirmation | Oui |
credactor --ci . | Barrière : code de sortie 1 en cas de résultats | Jamais |
credactor --staged --ci . | Barrière uniquement sur ce qui est indexé pour le commit | Jamais |
credactor --scan-history . | Analyse les 100 derniers commits modifiant des fichiers | Jamais |
credactor --ci -f sarif . > results.sarif | SARIF 2.1.0 pour Code Scanning | Jamais |
credactor --ci -f json . > findings.json | Rapport lisible par machine | Jamais |
Chaque option et combinaison se trouve dans le Manuel.
Utilisation dans pre-commit et CI
Hook pre-commit
# .pre-commit-config.yaml
repos:
- repo: https://github.com/rxb06/credactor
rev: v2.7.5
hooks:
- id: credactor
pre-commit install