← ishizakahiroshi.com
ツール紹介 2026-08-03

AI がコードに埋めた自分の本名をコミット前に止める doxguard を公開しました

机から公開リポジトリへ流れる書類を、小さな関所が堰き止めている淡いブルーのイラスト

AI にコードを書かせていたら、生成されたコードのパス例に自分の Windows ユーザー名が入っていたことがあります。API キーなら gitleaks が止めてくれますが、「自分の本名」はどのスキャナも探してくれません。無いなら作るしかない、で作った Rust 製の個人情報 watchlist スキャナ doxguard v0.1.0 を、GitHub と npm で公開しました。

Qiita で読む → GitHub リポジトリ → 図解ガイド →

この記事のテーマ

gitleaks や trufflehog が探すのは API キーやトークン、つまり「サービスの秘密」です。一方で、本名・家族の名前・勤務先・私用メール・自宅マシンの絶対パスといった「自分自身」はエントロピーがゼロで、汎用の正規表現になりません。AI コーディングの普及で、手元の環境情報が「それっぽい例」としてコードに紛れ込む事故は増えています。doxguard はこの層を pre-commit で堰き止めます。

記事の要約。手元はフルスキャン、公開側は構造パターンのみというデータ分離設計と、検知対象の比較、処理速度
記事の要約。監視リストは手元から出ない分離設計と、gitleaks 系との検知対象の違い、体感ゼロの処理速度。

監視語リストは、手元から出ない

「本名のリストと突き合わせる」設計は、そのリスト自体が最大の個人情報になります。doxguard の config に書くのは環境変数で展開されるパス参照だけで、監視語は 1 語もリポジトリに入りません。環境変数が無い CI や他人の環境ではリストは静かにスキップされ、構造パターン(個人の絶対パス・private IP・許可外メール)だけが走ります。

自分のマシン・公開リポジトリ・CI 環境の 3 者で、監視語リストがどこに存在するかを示した構成図
同じ config を共有したまま「手元ではフル監視・公開側では構造だけ」に自然に分かれる構成。

公開当日に自分で自分を監査した話

公開作業は、2 週間前のセキュリティ監査で残っていた HIGH 2 件を含む 15 件の指摘を全部片付けるところから始めました。Windows の CreateProcess がカレントディレクトリを先に探す仕様を突いた偽 git 起動の穴と、生成 hook スクリプトの quote 漏れ。仕上げのレビューでは、直したはずの正規表現の回帰まで見つかりました。セキュリティツールこそ、自分に一番厳しくあるべきだと思った一日でした。

深夜の机。チェックリストの大半に印が付いたノート PC と、湯気の立つマグカップ
深夜の机で、チェックリストの残りを 1 つずつ消していく。地味な作業ほど、後から効いてきます。