Skip to content

tech-debt: hook de pre-commit local com gitleaks/detect-secrets #179

Description

@elson-vinicius-lopes

Contexto

.claude/rules/security.md (seção "prevenir reincidência", regressão de 2026-07-18 da senha
SQL no appsettings.json) define 2 mecanismos técnicos para evitar que segredo em texto plano
volte a ser comitado:

(a) step de CI com gitleaks — já existe, .github/workflows/gitleaks.yml, roda em todo PR
contra develop/master/main.
(b) hook de pre-commit LOCAL com gitleaks/detect-secrets — não existe. Hoje o único freio é
o CI, que só pega o problema depois do push/PR já ter sido aberto (o segredo já passou pelo
histórico local e foi publicado no remoto antes de qualquer scan rodar).

O que falta

Hook de pre-commit (ex.: gitleaks protect --staged ou detect-secrets-hook) que rode local,
antes do commit ser criado, bloqueando o commit se detectar padrão de segredo (connection
string com senha, API key, etc.) no diff staged. Gratuito, sem licença — mesma ferramenta já em
uso no CI, reaproveitando a config existente se possível.

Critério de aceite

  • Hook de pre-commit instalável localmente (ex.: via .git/hooks/pre-commit versionado ou
    Husky-equivalente para o stack .NET) que roda gitleaks/detect-secrets sobre o diff staged
  • Documentado como instalar (README ou .claude/rules/security.md)
  • Bloqueia commit ao detectar padrão de segredo, sem falso positivo excessivo que atrapalhe
    o fluxo normal

Dono natural

@lp-backend-dev (hook local), com apoio possível de @lp-devops se envolver config
compartilhada/distribuição do hook para todos os devs.

Origem

.claude/rules/security.md, seção "Plano de remediação" / "prevenir reincidência" (item 4 do
runbook de 2026-08-15, regressão de 2026-07-18).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions