Voltar às atualizações
New releaseAug 22, 2026

credactor v2.6.0

Digitalize. Redija. Faça commit limpo.

Compartilhar

PyPI CI License

Credactor

Encontre o segredo. Corrija-o. Faça commit limpo.

A maioria dos scanners de segredos para no alerta: você recebe uma lista de credenciais vazadas e a limpeza é por sua conta. O Credactor encontra segredos embutidos no código e os reescreve no próprio local, de modo que um vazamento na sua árvore de trabalho passa de encontrado a corrigido com um único comando. Ele roda na sua máquina, como um hook de pré-commit ou como um gate de CI, e também pode corrigir o que o Gitleaks, o TruffleHog ou o Betterleaks encontram.

Credactor: escaneie, redija, faça commit limpo
# 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"]

A redação limpa sua árvore de trabalho. Ela não revoga a credencial e não toca no histórico do git. Se um segredo já foi commitado ou compartilhado, rotacione-o e reescreva o histórico se precisar removê-lo de lá também (por exemplo, com git filter-repo).

Por que o Credactor

  • Ele corrige, não apenas sinaliza. Cada achado é substituído no local por um sentinel, seu próprio marcador ou uma consulta de variável de ambiente na linguagem do próprio arquivo.
  • Escritas cuidadosas. Cada edição é planejada em memória, com backup prévio (modo 0600), gravada em um arquivo temporário e renomeada para o local. Um arquivo que mudou durante a execução, um caminho que sai da raiz de varredura ou um bloco de chave privada é ignorado com um aviso, e seu achado permanece reportado.
  • Funciona com o scanner que você já executa. Alimente-o com um relatório do Gitleaks, TruffleHog ou Betterleaks e ele corrige os achados deles e os seus em uma única passagem deduplicada.
  • Feito para pipelines. Um gate --ci somente leitura com códigos de saída claros, SARIF 2.1.0 com localizações de linha e coluna para o GitHub Code Scanning, uma GitHub Action e um hook de pre-commit. Os segredos são mascarados em todos os formatos de relatório, e a saída de texto é limpa para que um arquivo escaneado não possa injetar sequências de escape ou comandos de workflow de CI no seu terminal ou log.
  • Releases verificadas contra seu código-fonte. Biblioteca padrão pura do Python 3.11+ sem dependências de runtime. Antes de uma release chegar ao PyPI, cada arquivo do Credactor no wheel e no sdist é comparado byte a byte com o código-fonte marcado, e os metadados do pacote devem corresponder ao pyproject.toml (veja Endurecimento da cadeia de suprimentos).

Onde ele não é a ferramenta certa por si só: suas regras integradas cobrem os formatos de credenciais que vazam com mais frequência, em vez de centenas de provedores, e ele não verifica se um segredo está ativo. Uma execução limpa significa que nada correspondeu às suas regras, não que o código não contenha segredos. Combine-o com um scanner dedicado para amplitude (veja Traga seu próprio scanner).

Instalação

pip install credactor

Com o uv, instale-o como uma ferramenta ou execute-o uma vez sem instalá-lo:

uv tool install credactor
uvx credactor --dry-run .

Ou com Homebrew no macOS e Linux:

brew install rxb06/tap/credactor

Requer Python 3.11 ou mais recente. Testado em CI no Linux e Windows, Python 3.11 a 3.13. Para arquivos em codificações diferentes de UTF-8, Latin-1 ou UTF-16 simples, adicione o extra opcional: pip install 'credactor[encoding]' ou uv tool install 'credactor[encoding]' (a fórmula do Homebrew o inclui).

Início rápido

1. Veja o que ele encontra. Nada é alterado.

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]"

Os relatórios mostram apenas os primeiros quatro caracteres de cada segredo.

2. Corrija-os. Revise primeiro as descobertas: --fix-all reescreve todas elas, incluindo os falsos positivos. Para manter uma, adicione # credactor:ignore à sua linha (consulte Suprimir falsos positivos) ou corrija interativamente e responda n. Antes de cada arquivo ser alterado, uma cópia .bak é gravada ao lado dele para que você possa desfazer.

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

O modo Env grava a consulta, não o import: adicione import os ou o equivalente da sua linguagem se o arquivo não o tiver. No Windows Git Bash, execute o modo interativo como winpty credactor ..

3. Verifique e depois limpe os backups. Cada .bak ainda contém o segredo original, e o Credactor nunca edita seu .gitignore, então um simples git add . o colocaria no stage.

diff config.py.bak config.py         # check what changed
cp config.py.bak config.py           # undo

Adicione *.bak e *.credactor.tmp ao .gitignore e exclua os backups quando estiver satisfeito. Para manter os backups fora da árvore desde o início, passe --secure-backup-dir DIR (um diretório fora do repositório) na execução de correção. --secure-delete apaga cada backup, o que deixa o git como seu único desfazer.

Comandos em resumo

ComandoO que fazAltera arquivos
credactor --dry-run .Relata as descobertasNão
credactor .Revisa e corrige uma descoberta por vezSim, com y
credactor --fix-all .Corrige todas as descobertas após uma confirmaçãoSim
credactor --ci .Gate: sai com 1 se houver descobertasNunca
credactor --staged --ci .Gate apenas no que está em stage para commitNunca
credactor --scan-history .Escaneia os últimos 100 commits que alteraram arquivosNunca
credactor --ci -f sarif . > results.sarifSARIF 2.1.0 para Code ScanningNunca
credactor --ci -f json . > findings.jsonRelatório legível por máquinaNunca

Cada flag e combinação está no Manual.

Use no pre-commit e no 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

Cada git commit então verifica o conteúdo preparado (staged) e é bloqueado se contiver uma credencial. O hook nunca reescreve arquivos. Ele requer pre-commit 3.2.0 ou mais recente; sem o framework, consulte o hook autônomo.

GitHub Action

steps:
  - uses: actions/checkout@v7
  - uses: rxb06/[email protected]

Categorias