Claude Code がコードを書く時代、最も怖いのは「AI がうっかり API キーを記事や PR に貼る」事故。事前検知に有効なのが Gitleaks と TruffleHog で、合計 5.1 万 GitHub stars の業界標準ツール。本稿は両者の違いと、「pre-commit に Gitleaks、CI に TruffleHog」という現場のベストプラクティスを実装ベースで整理する。
なぜ「両方」を使うのか
両ツールは似て見えるが性質が違う。
| 項目 | Gitleaks | TruffleHog | |---|---|---| | 速度 | 数百ミリ秒(pre-commit 向き) | 数秒〜数十秒 | | 検出方式 | 正規表現中心 | 正規表現 + **credential verification(実在検証)** | | 出力 | SARIF(GitHub Advanced Security 連携) | JSON / 詳細表示 | | カバー範囲 | git リポジトリ | git / S3 / Docker / Slack ほか | | ライセンス | MIT | AGPL-3.0 |
公式比較ブログでは「Gitleaks pre-commit, TruffleHog CI」が現場で最も普及している組み合わせとして紹介されている。
pre-commit に Gitleaks
# .pre-commit-config.yaml
repos:
- repo: https://github.com/gitleaks/gitleaks
rev: v8.x
hooks:
- id: gitleaksこれで `git commit` の度に scan が走る。数百ミリ秒なので開発のテンポを壊さない。Claude Code が `git commit` をする前に走らせるよう、Claude Code 側にも `PostToolUse` フックで `gitleaks protect --staged` を仕込むと二重防御。
CI に TruffleHog(`--only-verified` 推奨)
# .github/workflows/secrets-scan.yml
- uses: trufflesecurity/trufflehog@main
with:
extra_args: --only-verified無料でアカウント作成
CCHub は Claude Code 開発者のための日本語コミュニティです。