
credactor v2.6.0
Escanea. Redacta. Haz commit limpio.
Credactor
Encuentra el secreto. Corrígelo. Haz commit limpio.
La mayoría de los escáneres de secretos se detienen en la alerta: obtienes una lista de credenciales filtradas y la limpieza corre de tu cuenta. Credactor encuentra secretos codificados directamente y los reescribe en su lugar, de modo que una filtración en tu árbol de trabajo pasa de encontrada a corregida con un solo comando. Se ejecuta en tu máquina, como hook de pre-commit o como puerta de CI, y también puede corregir lo que encuentren Gitleaks, TruffleHog o Betterleaks.
# 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 redacción limpia tu árbol de trabajo. No revoca la credencial y no toca el historial de git. Si un secreto llegó a commitearse o compartirse, rótalo, y reescribe el historial si necesitas que desaparezca de allí también (por ejemplo con
git filter-repo).
Por qué Credactor
- Corrige, no solo señala. Cada hallazgo se reemplaza en su lugar con un centinela, tu propio marcador o una búsqueda de variable de entorno en el propio lenguaje del archivo.
- Escrituras cuidadosas. Cada edición se planifica en memoria, se respalda primero (modo
0600), se escribe en un archivo temporal y se renombra a su ubicación. Un archivo que cambió durante la ejecución, una ruta que sale de la raíz de escaneo o un bloque de clave privada se omite con una advertencia, y su hallazgo sigue reportándose. - Funciona con el escáner que ya ejecutas. Aliméntalo con un informe de Gitleaks, TruffleHog o Betterleaks y corrige sus hallazgos y los propios en una sola pasada deduplicada.
- Diseñado para pipelines. Una puerta
--cide solo lectura con códigos de salida claros, SARIF 2.1.0 con ubicaciones de línea y columna para GitHub Code Scanning, una GitHub Action y un hook de pre-commit. Los secretos se enmascaran en todos los formatos de informe, y la salida de texto se limpia para que un archivo escaneado no pueda inyectar secuencias de escape o comandos de flujo de trabajo de CI en tu terminal o registro. - Versiones verificadas contra su código fuente. Biblioteca estándar pura de Python 3.11+ sin
dependencias en tiempo de ejecución. Antes de que una versión llegue a PyPI, cada
archivo de Credactor en el wheel y el sdist se compara byte por byte con el
código fuente etiquetado, y los metadatos del paquete deben coincidir con
pyproject.toml(ver Endurecimiento de la cadena de suministro).
Dónde no es la herramienta adecuada por sí sola: sus reglas integradas cubren los formatos de credenciales que se filtran con más frecuencia en lugar de cientos de proveedores, y no comprueba si un secreto está activo. Una ejecución limpia significa que nada coincidió con sus reglas, no que el código no contenga secretos. Combínalo con un escáner dedicado para mayor amplitud (ver Trae tu propio escáner).
Instalación
pip install credactor
Con uv, instálalo como herramienta o ejecútalo una vez sin instalarlo:
uv tool install credactor
uvx credactor --dry-run .
O con Homebrew en macOS y Linux:
brew install rxb06/tap/credactor
Requiere Python 3.11 o superior. Probado en CI en Linux y Windows, Python 3.11 a
3.13. Para archivos en codificaciones distintas de UTF-8, Latin-1 o UTF-16 simple, añade
el extra opcional: pip install 'credactor[encoding]' o
uv tool install 'credactor[encoding]' (la fórmula de Homebrew lo incluye).
Inicio rápido
1. Observa lo que encuentra. No se modifica nada.
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]"
Los informes muestran solo los primeros cuatro caracteres de cada secreto.
2. Corrígelos. Revisa primero los hallazgos: --fix-all reescribe todos,
incluidos los falsos positivos. Para conservar uno, añade # credactor:ignore a su línea
(consulta Suprimir falsos positivos) o corrige
de forma interactiva y responde n. Antes de modificar cada archivo, se escribe
una copia .bak junto a él para que puedas deshacer los cambios.
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
El modo Env escribe la búsqueda, no la importación: añade import os o el
equivalente de tu lenguaje si el archivo no lo tiene. En Windows Git Bash, ejecuta el modo interactivo
como winpty credactor ..
3. Verifica, luego limpia las copias de seguridad. Cada .bak todavía contiene el secreto
original, y Credactor nunca edita tu .gitignore, por lo que un simple git add .
lo prepararía para el commit.
diff config.py.bak config.py # check what changed
cp config.py.bak config.py # undo
Añade *.bak y *.credactor.tmp a .gitignore y elimina las copias de seguridad una vez
que estés conforme. Para mantener las copias de seguridad fuera del árbol desde el principio, pasa
--secure-backup-dir DIR (un directorio fuera del repositorio) en la ejecución de corrección.
--secure-delete borra cada copia de seguridad en su lugar, lo que deja a git como tu única
forma de deshacer.
Comandos de un vistazo
| Comando | Qué hace | Modifica archivos |
|---|---|---|
credactor --dry-run . | Informa de los hallazgos | No |
credactor . | Revisa y corrige un hallazgo a la vez | Sí, con y |
credactor --fix-all . | Corrige todos los hallazgos tras una confirmación | Sí |
credactor --ci . | Barrera: sale con 1 si hay hallazgos | Nunca |
credactor --staged --ci . | Barrera solo para lo que está en stage para el commit | Nunca |
credactor --scan-history . | Escanea los últimos 100 commits que modifican archivos | Nunca |
credactor --ci -f sarif . > results.sarif | SARIF 2.1.0 para Code Scanning | Nunca |
credactor --ci -f json . > findings.json | Informe legible por máquina | Nunca |
Cada flag y combinación está en el Manual.
Úsalo en pre-commit y CI
Hook de pre-commit
# .pre-commit-config.yaml
repos:
- repo: https://github.com/rxb06/credactor
rev: v2.7.5
hooks:
- id: credactor
pre-commit install