Gitleaks
Scanner de secrets rapide pour les dépôts git et les fichiers. Détecte les clés API, mots de passe, tokens et clés privées via plus de 150 règles regex avec sortie SARIF et JSON. Fast secret scanner for git repositories and files. Detects API keys, passwords, tokens, and private keys using 150+ regex rules with SARIF and JSON output.
↗ https://github.com/gitleaks/gitleaksOverview
Gitleaks detects hardcoded secrets in git repositories and filesystems. It scans commit history, staged files, and current working trees using 150+ built-in rules for common secret patterns. It’s faster than TruffleHog for CI/CD integration and produces SARIF output for IDE integration.
Basic Usage
Scan a local git repository (full history)
gitleaks detect --source /path/to/repo
Scan current directory
gitleaks detect
Scan only staged files (pre-commit)
gitleaks protect --staged
Scan a remote repository
gitleaks detect --source https://github.com/target/repo
Verbose output (show all findings)
gitleaks detect -v
Output Formats
Default (human-readable)
gitleaks detect --source /path/to/repo
JSON report
gitleaks detect --source /path/to/repo -r report.json
SARIF report (for GitHub Code Scanning)
gitleaks detect --source /path/to/repo -f sarif -r report.sarif
CSV report
gitleaks detect --source /path/to/repo -f csv -r report.csv
Scanning Modes
Scan all git history
gitleaks detect --source /repo --log-opts="--all"
Scan only recent commits (last 10)
gitleaks detect --source /repo --log-opts="-10"
Scan specific branch
gitleaks detect --source /repo --log-opts="--branches=main,develop"
Scan between commits
gitleaks detect --source /repo --log-opts="abc123..HEAD"
No-git mode (scan files directly, no git history)
gitleaks detect --no-git --source /path/to/files
Pre-commit Integration
Scan staged files before commit
gitleaks protect --staged
→ Returns exit code 1 if secrets found
# Install as git hook
cat > .git/hooks/pre-commit << 'EOF'
#!/bin/sh
gitleaks protect --staged --redact
EOF
chmod +x .git/hooks/pre-commit
CI/CD Integration
# GitHub Actions
- name: Gitleaks
uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# GitLab CI
gitleaks:
image: zricethezav/gitleaks:latest
script:
- gitleaks detect --source . -r gitleaks-report.json
# Generic CI
gitleaks detect --source . --exit-code 1
Custom Rules (.gitleaks.toml)
[extend]
useDefault = true # Include built-in rules
[[rules]]
id = "custom-api-key"
description = "Custom API Key"
regex = '''(?i)myapp[_-]?key[_-]?=\s*['"]?([a-zA-Z0-9]{32})'''
secretGroup = 1
keywords = ["myapp", "api-key"]
[[rules.allowlists]]
description = "Ignore test files"
paths = ['''test/''', '''spec/''']
Allowlisting
# .gitleaks.toml
[allowlist]
description = "Global allowlist"
regexes = ['''EXAMPLE_KEY_123''']
paths = [
'''(test|spec|fixture)/''',
'''\.example$'''
]
commits = ["abc123def456"] # Specific commit to ignore
Inline allowlist in code:
password = "test123" # gitleaks:allow
Tips
- Use
--redactto hide actual secret values in output (for sharing reports) gitleaks detect --log-opts="--all"scans ALL branches and tags — always use this for thorough scans- The
.gitleaks.tomlconfig file controls rules, allowlists, and custom patterns - Combine with TruffleHog in CI: Gitleaks for speed, TruffleHog for verified credential checking
Help / Man page
gitleaks [command] [flags]
Commands:
detect Detect secrets in commits/files
protect Detect secrets in staged files (pre-commit)
version Print version
detect flags:
-s, --source PATH Target path
--no-git Don't use git, scan files directly
--log-opts STRING Git log options
-r, --report-path FILE Output report file
-f, --report-format json, csv, junit, sarif
--exit-code N Exit code when leaks found (default: 1)
-v, --verbose Show all findings
--redact Redact secrets in output
--config FILE Config file path
--max-target-megabytes Max file size to scan
Vue d’ensemble
Gitleaks détecte les secrets codés en dur dans les dépôts git et les systèmes de fichiers. Il scanne l’historique des commits, les fichiers en staging et les arbres de travail actuels à l’aide de plus de 150 règles intégrées pour les patterns de secrets courants. Il est plus rapide que TruffleHog pour l’intégration CI/CD et produit une sortie SARIF pour l’intégration IDE.
Utilisation de base
# Scanner un dépôt git local (historique complet)
gitleaks detect --source /path/to/repo
# Scanner le répertoire courant
gitleaks detect
# Scanner uniquement les fichiers en staging (pre-commit)
gitleaks protect --staged
# Scanner un dépôt distant
gitleaks detect --source https://github.com/target/repo
# Sortie verbeuse (afficher tous les résultats)
gitleaks detect -v
Formats de sortie
# Par défaut (lisible par un humain)
gitleaks detect --source /path/to/repo
# Rapport JSON
gitleaks detect --source /path/to/repo -r report.json
# Rapport SARIF (pour GitHub Code Scanning)
gitleaks detect --source /path/to/repo -f sarif -r report.sarif
# Rapport CSV
gitleaks detect --source /path/to/repo -f csv -r report.csv
Modes de scan
# Scanner tout l'historique git
gitleaks detect --source /repo --log-opts="--all"
# Scanner uniquement les commits récents (les 10 derniers)
gitleaks detect --source /repo --log-opts="-10"
# Scanner une branche spécifique
gitleaks detect --source /repo --log-opts="--branches=main,develop"
# Scanner entre deux commits
gitleaks detect --source /repo --log-opts="abc123..HEAD"
# Mode sans git (scanner les fichiers directement, sans historique git)
gitleaks detect --no-git --source /path/to/files
Intégration pre-commit
# Scanner les fichiers en staging avant le commit
gitleaks protect --staged
→ Retourne le code de sortie 1 si des secrets sont trouvés
# Installer comme hook git
cat > .git/hooks/pre-commit << 'EOF'
#!/bin/sh
gitleaks protect --staged --redact
EOF
chmod +x .git/hooks/pre-commit
Intégration CI/CD
# GitHub Actions
- name: Gitleaks
uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# GitLab CI
gitleaks:
image: zricethezav/gitleaks:latest
script:
- gitleaks detect --source . -r gitleaks-report.json
# CI générique
gitleaks detect --source . --exit-code 1
Règles personnalisées (.gitleaks.toml)
[extend]
useDefault = true # Inclure les règles intégrées
[[rules]]
id = "custom-api-key"
description = "Custom API Key"
regex = '''(?i)myapp[_-]?key[_-]?=\s*['"]?([a-zA-Z0-9]{32})'''
secretGroup = 1
keywords = ["myapp", "api-key"]
[[rules.allowlists]]
description = "Ignore test files"
paths = ['''test/''', '''spec/''']
Allowlisting
# .gitleaks.toml
[allowlist]
description = "Global allowlist"
regexes = ['''EXAMPLE_KEY_123''']
paths = [
'''(test|spec|fixture)/''',
'''\.example$'''
]
commits = ["abc123def456"] # Commit spécifique à ignorer
Allowlist inline dans le code :
password = "test123" # gitleaks:allow
Conseils
- Utiliser
--redactpour masquer les valeurs réelles des secrets dans la sortie (pour le partage de rapports) gitleaks detect --log-opts="--all"scanne TOUTES les branches et tags : toujours l’utiliser pour des scans exhaustifs- Le fichier de config
.gitleaks.tomlcontrôle les règles, allowlists et patterns personnalisés - Combiner avec TruffleHog en CI : Gitleaks pour la vitesse, TruffleHog pour la vérification des identifiants
Aide / Page de manuel
gitleaks [command] [flags]
Commands:
detect Detect secrets in commits/files
protect Detect secrets in staged files (pre-commit)
version Print version
detect flags:
-s, --source PATH Target path
--no-git Don't use git, scan files directly
--log-opts STRING Git log options
-r, --report-path FILE Output report file
-f, --report-format json, csv, junit, sarif
--exit-code N Exit code when leaks found (default: 1)
-v, --verbose Show all findings
--redact Redact secrets in output
--config FILE Config file path
--max-target-megabytes Max file size to scan