私はLLMを使って、diffがマシンから出る前に秘密をスキャンするgitプリプッシュフックを作りました。 仕組🧵みはこうです
git pushを実行すると、フックが先に発射されます。新しいものを検出します。新しいブランチの全コミットか、既存のブランチの新しいコミットのみのどちらかを判断し、これから配信されるもののgit差分を生成します。
その差分は厳しく制約されたプロンプトとともにKimi CLIに送られます。モデルは、SAFE_TO_PUSHかBLOCK_PUSHの2つの文字列のうち、正確にどちらかで応答するよう指示されます。
よくある候補者を探している。 - APIキー(OpenAI、Anthropic、AWSなど) - パスワードおよび認証トークン - 秘密鍵(SSH、SSL、JWT 秘密) - 信用情報付きDB接続文字列 - コミットにこっそり侵入した.envファイル
もし返BLOCK_PUSHが来たら、フックは1から抜けます — プッシュは拒否され、どのラインがトリガーになったかと、重度評価が表示されます。 直してからもう一度押してください。
ここで正規表現パターンの代わりにLLMを使う良い点は、文脈を理解してくれることです。「sk-」の正則表現はOpenAIの鍵を捉えますが、PROD_SECRETというカスタム内部トークンは見逃します。モデルは両方を捉えています。
227