自作の CLI ツール docsweep を PyPI に公開して 2 週間。その CLI が「書き込み前 backup」として作った .docsweep/backup/ ディレクトリ経由で、非公開のはずの docs/local/*.md が 4 つの公開リポの origin/main に到達していました。「安全のため」に足した機構が、逆に情報漏洩の入口になっていた話です。gitignore の 1 行で塞がず、backup 機構ごと撤去した経緯と、そこから学んだ 4 つの教訓を書きました。
自作 CLI ツール docsweep(v0.3.0)が備えていた「書き込み前 backup」機構が、gitignore の抜けと相まって非公開 md を公開リポへ流していた事故の一次記録です。V0.3.1 で backup 機構を丸ごと撤去した設計判断と、その根拠(backup が救う想定ケースの実測、既存 clone を守れない性質、外向き API が無変更なので patch 判定)を書いています。学びは 4 点。「安全のため」に足す機構が新しい事故経路になること・デフォルト gitignore は未来のリポしか守らないこと・gitignore は 4 層防御の 1 層目でしかないこと・SemVer は外向き API を単一の物差しにできること。
pip install docsweep)