Skip to main content

SecretScanner

CI PyPI Python VS Code Marketplace License: MIT Security policy

Detecta credenciales antes de que lleguen al repositorio. SecretScanner es un escáner local y de código abierto para encontrar secretos hardcodeados mediante CLI, pre-commit, MCP y Visual Studio Code.

$ secret-scanner --path .
[HIGH] GitHub Token · src/config.py:12
[!] 1 posible secreto encontrado

Por qué SecretScanner

  • Local primero: el código y los hallazgos permanecen en tu equipo.
  • Un motor, varios flujos: CLI, hook de Git, servidor MCP y extensión para VS Code.
  • Listo para automatización: códigos de salida apropiados y reportes JSON o CSV.
  • Políticas por proyecto: exclusiones, allowlists y baseline versionables.
  • Privacidad verificable: cada hallazgo tiene un fingerprint sin almacenar el secreto.
  • Multiplataforma: compatible con Windows, Linux y macOS mediante Python 3.10 o posterior.

Inicio rápido

Instala el paquete desde PyPI:

pip install secret-scanner-cl
secret-scanner --path .

También puedes mantenerlo aislado con pipx install secret-scanner-cl.

Comandos

# Analizar un archivo o directorio
secret-scanner --path ./mi-proyecto

# Exportar los hallazgos
secret-scanner --path . --output json
secret-scanner --path . --output csv

# Mostrar cada archivo procesado
secret-scanner --path . --verbose

# Crear un baseline con los hallazgos existentes
secret-scanner --path . --update-baseline
Opción Descripción
--path PATH Archivo o directorio que se analizará.
--output json Guarda los hallazgos en output/report.json.
--output csv Guarda los hallazgos en output/report.csv.
--verbose Muestra los archivos a medida que se procesan.
--config PATH Utiliza una configuración TOML específica.
--baseline PATH Compara contra un baseline específico.
--update-baseline [PATH] Crea o reemplaza el baseline.

El proceso termina con código 1 si encuentra posibles secretos y 0 si no encuentra ninguno, por lo que puede utilizarse como control en CI.

Configuración por proyecto

Copia .secretscanner.example.toml como .secretscanner.toml en la raíz del proyecto:

[scan]
exclude_paths = ["vendor/**", "docs/generated/**"]

[allowlist]
paths = ["tests/fixtures/**"]
patterns = ["EXAMPLE_ONLY_[A-Z0-9]+"]
fingerprints = []

[baseline]
path = ".secretscanner-baseline.json"

La configuración más cercana al archivo analizado se descubre automáticamente. Las rutas utilizan / y aceptan patrones glob. Las expresiones de allowlist.patterns se evalúan sobre la línea completa; deben reservarse para valores de ejemplo deliberados.

Baseline y fingerprints

Cada hallazgo contiene un fingerprint SHA-256 derivado del tipo, la ruta relativa y el valor detectado. El valor original nunca se guarda en el fingerprint ni en el baseline.

Para adoptar SecretScanner en un proyecto con hallazgos conocidos:

secret-scanner --path . --update-baseline
git add .secretscanner-baseline.json

Los análisis posteriores ocultarán esos hallazgos y fallarán únicamente ante secretos nuevos. Revisa siempre el archivo antes de confirmarlo y no uses el baseline para aceptar credenciales reales: deben revocarse y eliminarse.

Detectores incluidos

Tipo Severidad
Token de GitHub Alta
AWS Access Key Alta
API key genérica Media
Contraseña hardcodeada Alta
JSON Web Token Alta
Token de Slack Alta
Clave privada RSA Alta
URL con credenciales Media

El escáner omite .git, node_modules, entornos virtuales, artefactos de construcción y formatos binarios comunes.

Pre-commit

Añade el hook al archivo .pre-commit-config.yaml. Sustituye v1.0.2 por el release estable que quieras fijar:

repos:
  - repo: https://github.com/Kiara1616/secretscanner
    rev: v1.1.0
    hooks:
      - id: secret-scanner

Después ejecuta pre-commit install. El hook analiza el repositorio antes de permitir el commit.

MCP

El comando secret-scanner-mcp expone el escáner mediante transporte estándar stdio:

{
  "mcpServers": {
    "secret-scanner": {
      "command": "secret-scanner-mcp",
      "args": []
    }
  }
}

Visual Studio Code

Instala SecretScanner desde Visual Studio Marketplace o ejecuta:

code --install-extension kiara.secret-scanner-pr

La extensión utiliza la CLI local, por lo que también debes instalar el paquete de Python:

pip install secret-scanner-cl

Para generar un VSIX durante el desarrollo:

cd vscode-extension
npm ci
npm run package

Desarrollo

git clone https://github.com/Kiara1616/secretscanner.git
cd secretscanner
python -m venv .venv
python -m pip install -e ".[dev]"
pytest
ruff check .

La matriz de CI valida Python 3.10–3.13, cobertura mínima de 80 %, estilo, compilación de la extensión y distribuciones para PyPI. Consulta CONTRIBUTING.md antes de enviar cambios.

Seguridad y soporte

No publiques credenciales reales en issues, ejemplos ni reportes. Las vulnerabilidades deben comunicarse en privado siguiendo SECURITY.md. Para preguntas de uso consulta SUPPORT.md.

Estado del proyecto

La hoja de ruta inmediata incluye historial Git, detección por entropía y salida SARIF. Consulta CHANGELOG.md para conocer los cambios publicados.

Licencia

SecretScanner se distribuye bajo la licencia MIT.

Metadata

Release files for secret-scanner-cl 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for secret-scanner-cl 1.1.0
File Size Uploaded
secret_scanner_cl-1.1.0.tar.gz 22.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for secret-scanner-cl 1.1.0
File Interpreter ABI Platform
secret_scanner_cl-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 38.1 kB

Release files / secret_scanner_cl-1.1.0.tar.gz

Download URL secret_scanner_cl-1.1.0.tar.gz
Size 22.2 kB
Tags Source
SHA-256 checksum
How to use checksums
0140eb47dd872ed6bbddb9bb2c85532b833dfd9915b07b3fd4ec00cf06144aa6
BLAKE2b-256 checksum
How to use checksums
d36d69a2ed22c99f353bc88876ff452bb307d729ff7370d950e6d57b5cc5e453
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.

Transparency log

Release files / secret_scanner_cl-1.1.0-py3-none-any.whl

Download URL secret_scanner_cl-1.1.0-py3-none-any.whl
Size 15.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3221bb41794fa1bbd1946313feeb63353a32dd4eb5c326ebe3acb89f090a8443
BLAKE2b-256 checksum
How to use checksums
dd6ea4195ac6c65e8b2cec3c23c178be131a324555b68e6d844a41adb061a70c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page