コンテンツにスキップ
Zenn Dev Kou Pg 0131 Articles Opf Pre Commit

OpenAI Privacy Filter を pre-commit フックに入れて個人情報のコミットを防ぐ

  • URL: https://zenn.dev/kou_pg_0131/articles/opf-pre-commit
  • 日付: 2026-06-26
  • Tier: Tier 3
  • 要旨: OpenAIが2024年4月に公開したOpenAI Privacy Filterをpre-commitフックに組み込み、個人情報を含むコミットを自動的にブロックする手法を試した実践記録。ローカルで動作するモデルで、pipでGitHubから直接インストールしてopfコマンドで使用できる。staged差分の追加行をgit diffで抽出してopf redactに渡し、検出されたPIIのスパン数が1件以上あればコミットを失敗させるbashスクリプトとして実装している。英語・日本語の人名や口座番号などの検出には対応するが、実行に数秒〜数分かかるためファイル種別で適用範囲を絞らないと運用が難しいとも指摘している。

詳細

  • ツール: OpenAI Privacy Filter(OPF) - 2024年4月公開、ローカル動作、PyPIには未掲載
  • インストール: pip install git+https://github.com/openai/privacy-filter.git
  • 基本コマンド: opf redact –device cpu –text-file <ファイル>
  • 出力形式: text(デフォルト)またはjson(–format json)。json形式でラベル・位置・元テキスト・プレースホルダーを取得可能
  • 検出ラベル例: private_person、account_number、secret、private_date など
  • 検出実績: 英語・日本語の人名、クレジットカード末尾4桁(account_numberとして主に検出)
  • pre-commitフック実装の概要:
    • git diff –staged -U0 で追加行を抽出
    • opf redact –format json に標準入力で渡す
    • jqでspan_countを集計し、合計0ならexit 0
    • 検出ありの場合は先頭2文字を残してマスクして表示し、exit 1
  • 実行パフォーマンスの問題:
    • CSVファイル10行程度: 約5秒
    • Webアプリ数百行の機能実装: 3分近くかかる場合も
    • 対象ファイル種別の絞り込みが実運用では必須
  • 精度: 完璧ではなく、クレジットカード末尾4桁の一部は検出漏れあり