Show HN: CommitGate – コミット中の脆弱性を自動スキャン
CommitGate は AI を活用した Git のプリコミットセキュリティゲートで、git commit のたびにステージングされた差分を自動スキャンし、秘密情報や危険なコードが履歴に入る前にブロックします。Gitleaks による決定的スキャンと LLM によるセマンティック分析を組み合わせ、OpenAI、DeepSeek、Groq などの AI プロバイダーをサポートし、オプションで Splunk に監査ログを送信できます。
開発者の Mike Ly 氏は、AI を活用した Git プリコミットセキュリティゲート「CommitGate」をリリースしました。このツールは、開発者がコミットを実行するたびに自動的に起動し、ステージング領域のコード差分に対して2段階のセキュリティチェックを実行します。第一段階では Gitleaks を使用して決定的スキャンを行い、API キーやトークン、パスワードなどの既知の秘密情報を検出します。第二段階では、OpenAI 互換の AI モデル(DeepSeek、Groq、Gemini など)によるセマンティック分析を実施し、正規表現では見つけにくい脆弱性(内部 URL、非標準の認証情報、eval や os.system の呼び出し、データ漏洩ロジックなど)を特定します。2つのスキャン結果はマージされ、重複が除去された後、決定エンジンが事前設定されたしきい値に基づいて「許可」「警告」「ブロック」のいずれかの判断を下し、ターミナルに詳細な Rich レポートを表示します。
CommitGate のインストールと使用方法は非常にシンプルです。ユーザーは Python 3.10 以上、Git、および Gitleaks バイナリを事前にインストールする必要があります。その後、pip で CommitGate をインストールし、プロジェクトのルートディレクトリに .env ファイルを作成して AI キーを設定し、commitgate init を実行して初期化します。このコマンドにより、リポジトリのルートに commitgate.yaml 設定ファイルが生成され、pre-commit フックが自動的にインストールされます。以降、通常のコミットが行われるたびに CommitGate がスキャンを実行します。手動でスキャンしたい場合は commitgate scan コマンドを使用でき、SKIP=all 環境変数でフックを一時的にバイパスすることも可能です。
基本機能に加えて、CommitGate はオプションで Splunk による監査ログをサポートしています。ユーザーは Splunk HTTP Event Collector(HEC)を設定することで、スキャンごとに監査イベントを Splunk に送信し、コミット決定の検索可能な履歴を構築できます。CommitGate のドキュメントでは、決定の経時変化グラフ、今日のブロック数、トリガーされたカテゴリのランキングなど、セキュリティゲート用のダッシュボードを構築するための複数の Splunk 検索例が提供されています。
データプライバシーに関しては、CommitGate はデフォルトで AI レビューを有効にしており、コード差分が外部の AI プロバイダーに送信されます。組織のポリシーに応じて、AI レビューを無効にし(Gitleaks のみ実行)、データがローカルマシンから出ないようにすることも可能です。将来のロードマップには、ローカル LLM(Ollama など)のサポートと、完全に隔離された環境での運用を可能にするセルフホステッド Splunk のサポートが含まれています。
CommitGate は MIT ライセンスで提供されており、現在 GitHub で 6 つのスターを獲得しています。リポジトリには完全なドキュメント、アーキテクチャの説明、コントリビューションガイドが含まれており、開発プロセスを強化したいチームにとって、うっかりした秘密情報の漏洩を防ぐためのシンプルかつ強力なソリューションとなっています。