最近、こういった記事を目にする機会が増えてきました。
コーディングエージェントの発展に伴い、人間の手を離れて AI が自律的にコードを書き、コミットをするようになってきています。チームや人によっては、ほぼノーチェックでそれを回し続けていることと思います。
プライベートリポジトリでやる分にはまだ許容できるかもしれません。しかしパブリックリポジトリだと意図せず個人情報が漏れてしまうという危険性もあります。また、リポジトリがプライベートでも、そのビルド結果などを外部に公開する場合(コーポレートサイトなど)、プライベート情報が意図せず公開されてしまう可能性も考えられます。
漏洩経路
多岐に渡りますが、個人情報という観点に絞ってピックアップしていきましょう。
Git の author 情報
まさに上の記事が警告する点ですね!
クラウド環境の場合、author 情報がどうセットされるかは不明瞭なことが多いですし、ローカルの場合でも AI が author 情報を黙って上書きする事例が報告されています。ある程度経験を積んだエンジニアならこのあたりきちんと見られていることかと思いますが、特に学びたての方ですと見落とすことがかなり多いです。
画像のメタ情報
特にブログを Git で管理している場合、注意すべき点かと思います。
主要な SNS などでは画像をアップロードすると EXIF 情報はあらかた削除されますので、あまり意識しなくても個人情報が漏れることはありません。しかし Git はそのようなお節介を焼いてくれないため(あくまで内容を深く関知しないバージョン管理ツールなので当然です)、画像をコミットすると EXIF 情報はそのままになります。
特に問題なのが GPS 情報です。 もし自宅で撮影した写真をブログにコミットした場合、意図せず全世界に自分の住所が露呈してしまうことになります。そして Git 上で削除をしても、履歴には残り続けます。完全に抹消するには、git filter-repo で歴史改変をしたり、GitHub 側で git gc してもらったり、もしフォークされてたらフォーク先に連絡したり、などの極めて面倒な作業が必要です。しかもここまでやっても、完全に抹消しきれない可能性があります。
Office ドキュメント
公開リポジトリで扱うことは比較的稀な気がしますが、コーポレートサイトを Git 管理している場合、Office ドキュメントに作成者名などが残っているとそれがそのまま外部公開されてしまいます。
かなり古典的というか、昔から何度も話題になってきているのでご存知の方も多いかもしれません。
PDF ファイル
わりと Git 管理することが多いので、少し注意です。PDF には作成者名が入ることがあります。その他、使用ソフトウェア名なども場合によっては入ります。
この辺りはほぼ Office ドキュメントと同様ですね。
tar.gz アーカイブ
これは意外と知られてないかもしれませんが、実は tar.gz アーカイブにも OS のユーザー名などが記録されることがあります。
正確には、tar のヘッダー情報にです。ここにはファイルの所有者名・グループ名・タイムスタンプなどのメタデータが記録されることがあります。これは見落としやすいポイントだと思いますが、tar をコミットするケースは一定存在するので、このことを知っておいた方が良いです。
一通りチェックできるツールを作った
以前まではこのあたりをコミットのたびにチェックしていたのですが……、さすがに面倒なのと手動だとすり抜けが起きうるので、ようやっと腰を上げてツールにしました。
go install github.com/tamiroh/git-footprint@latest
でインストールできます。
まだアルファ版のような位置付けですが、ざっくり、上記で挙げたようなメタ情報の検出を主軸に動作します。警告があれば CI で落とす、というような使い方も可能です。
git footprint --no-pager --fail-on warn
加えて、
git footprint --allow-identity 'Alex Rivera <alex@rivera.example>'
というふうにオプションで許容する名前・メールアドレスを指定すると、それ以外のコントリビューターには警告が出るようになります(Co-authored-by などのトレーラーも検出対象です)。
大勢が参加する OSS だと正直ほとんど役立たない気がしますが、ほぼ一人で運営してるブログの Git リポジトリなんかには使えるかな、と思っています。Codex クラウドで本名が漏れてた、というのには気付きやすいですね。
まとめ
自作ツールの宣伝のようになってしまいましたが、要はこういうことが言いたかったです。
- Git には無意識のうちに多くの情報が集積していくし、ファイルを消しても履歴に残り続けてしまう
- 特に author 情報やファイルメタデータには注意が必要で、単に git diff を眺めるだけだとこれら経由での個人情報漏洩は防げない
- AI コーディングが活発になる中で、人間以外の手によって大量のアウトプットが発生し、意図しない漏洩が起きやすくなってきている
- ツールで機械的にチェックしよう!
上で宣伝したツールについては、ご自由にお使いください!
個人的に内部のリポジトリで試用してみて、一通り動作すること、一定の有用性があることは確かめられているので、プライバシーが気になる開発者へおすすめいたします。フィードバックやプルリクエストは歓迎しております、よろしくお願いします〜。

