「AIに任せていたら git add -A で秘密が入っていた」を、コミット前とpush前の2か所で止めます。Pythonの標準ライブラリだけで動きます(pip install 不要)。
■ 納品物
・検査スクリプト1本と、gitフック2本
・導入手順書(導入は1行)
・除外パターンの足し方と自己検査の読み方
・引き渡し表(「該当あり/なし/確認できず」の3値)
■ 何を見るか
・置き場所と名前 … secret/ 配下、backup_code、.env系、.pem/.key、id_rsa、service_account.json、kubeconfig、terraform.tfstate など
・中身 … 秘密鍵ブロック、Stripe、AWS、GitHub、Slack、Anthropic、OpenAI、Google、npm の各トークン、URLに埋めた資格情報
・テキストなのに読めなかったものは通しません
「password=」のような汎用語は入れていません。誤検知で止まる検査は、いずれ外されて何も守らなくなるためです。
■ なぜpush前にも見るのか
merge、cherry-pick、rebase、git am ではコミット前のフックが呼ばれません。別の環境で作られたコミットも同じです。外に出る直前が最後の関門です。
■ 動作確認の方法
こちらはご購入者さまの環境にログインしません。同梱の自己検査を実行していただき、出力を貼っていただく形で確認します。
■ 止まらないもの
・--no-verify を付けた場合(gitの仕様上、フックは迂回できます)
・接頭辞のない資格情報(置き場所の側で受けています)
・2MBを超えるファイルの中身と、バイナリの中身
・すでにコミット済み・push済みの秘密
確認していないことは保証しません。
合格条件が未達のままAIが作業を終えるのを止める仕組みも、別サービスでお出ししています。
■ お受けできないこと
・ご購入者さまの環境へのログイン・操作
・すでに履歴に入った秘密の除去
・アプリケーションコードのレビューや修正
■ 起点
2026年8月、自分のリポジトリで git add -A が決済のバックアップコードを巻き込みました。防いだのは偶然でした。その穴を塞ぐために書いたものです。
所要2営業日。
・Pythonが使える環境かどうかを事前にお知らせください
(コマンドラインで python -V が通れば大丈夫です)
・gitのバージョン管理をお使いであることが前提です
・認証情報そのものは絶対にお送りにならないでください。こちらでは不要です
・平日21時以降と土日に作業しております。返信が翌日になる場合があります