Volver a actualizaciones
Nuevo releaseAug 22, 2026

credactor v2.6.0

Escanea. Redacta. Haz commit limpio.

Compartir

PyPI CI License

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.

Credactor: escanea, redacta, haz commit limpio
# 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 --ci de 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

ComandoQué haceModifica archivos
credactor --dry-run .Informa de los hallazgosNo
credactor .Revisa y corrige un hallazgo a la vezSí, con y
credactor --fix-all .Corrige todos los hallazgos tras una confirmaciónSí
credactor --ci .Barrera: sale con 1 si hay hallazgosNunca
credactor --staged --ci .Barrera solo para lo que está en stage para el commitNunca
credactor --scan-history .Escanea los últimos 100 commits que modifican archivosNunca
credactor --ci -f sarif . > results.sarifSARIF 2.1.0 para Code ScanningNunca
credactor --ci -f json . > findings.jsonInforme legible por máquinaNunca

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

Categorías