一行一語のテキスト、または既存台帳のCSV列を使う。
USER JOURNEY / v0.1.0
公開前に、自分の情報を
ローカルで止める。
doxguard は、氏名・顧客名・社内ホスト名などを「あなたのPCだけにある監視語リスト」と照合し、 Gitコミット直前に漏えいを止めるRust製ゲートです。
リポジトリ外の names.txt または CSV に書きます。doxguard.config.json には、実語ではなくそのファイルへの環境変数参照だけを書きます。
設定・高速なpre-commit・構造検査CIをまとめて用意。
PASSなら続行。検出時だけファイルと行を示して停止。
まず全体像:初回だけ6ステップ
オレンジがユーザーの操作、緑がdoxguardの自動処理です。
監視語は「秘密の別ファイル」に置く
ここが最重要です。設定JSONに本名や社名を直接書きません。
# 1行に1つ。# はコメント Northwind Harbor Contoso Works internal-host-fixture
id,display_name,kind 1,Northwind Harbor,customer 2,internal-host-fixture,host
答え:追加・削除したい監視語は names.txt または指定したCSV列で管理します。設定JSONは「どのファイルの、どの列を読むか」だけを担当します。
インストール:試すか、常用するか
日常利用ではグローバルインストール後に doxguard init を1回実行します。
インストールを残さない
既存リポジトリを一度だけ確認したいとき。
npx doxguard scan --all-tracked
一度入れて、commitに組み込む
ネイティブバイナリを直接起動する高速な日常動線。
npm install --global doxguard doxguard init
接続:環境変数を1本通す
リポジトリには抽象的な参照だけ。実際の保存場所はPC側で決めます。
地図であって
名簿ではない。
実語は外部ファイルに置き、JSONは読み込み元と検査方針だけを宣言します。
$env:DOXGUARD_WATCHLIST_DIR = "D:/private/watchlists"
これは現在のターミナル用です。常用するならOSのユーザー環境変数やシェル設定へ保存します。
設定JSONには「読み方」を書く
TXTはファイル全体、CSVは対象列を指定できます。以下に実在の監視語は含まれていません。
{
"watchlists": [
{
"type": "lines",
"path": "${DOXGUARD_WATCHLIST_DIR}/names.txt",
"label": "private names"
},
{
"type": "csv",
"path": "${DOXGUARD_WATCHLIST_DIR}/systems.csv",
"column": "display_name",
"label": "internal systems",
"parenVariants": true
}
],
"structural": {
"windowsPath": true,
"posixHome": true,
"privateIp": true,
"email": true,
"custom": []
}
}設定JSONだけGit管理
チームで検査方針を共有しつつ、各自が自分の監視語を接続します。
- Git:
doxguard.config.json - ローカル:
names.txt/ CSV - JSON内のパス:
${ENV_VAR}/...
設定JSONもリポジトリ外
監視元の構成すら公開したくない場合は、未追跡ファイルを明示します。
$env:DOXGUARD_CONFIG = "D:/private/doxguard/config.json" doxguard scan --all-tracked --dry-run
日常UX:いつも通りcommitするだけ
スキャン操作を思い出す必要はありません。pre-commitが自動で実行します。
検出0件なら、そのままコミットが完了します。
対象ファイル・行・種類・修正提案が表示されます。
// doxguard: allow Public のように、その行だけ例外化できます。
ローカルとCIは、守る範囲が違う
秘密の監視語はCIへ送らず、CIは「形で分かる危険」だけを検査します。
PC ローカル pre-commit
あなた固有のデータまで照合する、本命の防御。
- names.txt / CSV の監視語
- Windows・POSIXの個人パス
- プライベートIP・非公開メール
- カスタム正規表現
CI GitHub Actions
秘密を受け取らず、公開コードだけで成立する防御。
- 個人パスらしい文字列
- プライベートIP
- allow外のメール
- 個人のwatchlistは送信しない
迷ったら、この4つだけ。
監視語は外に置く。init でつなぐ。最初に全体スキャンする。その後は普通にコミットする。
doxguard v0.1.0 user journey / synthetic examples only / 2026-07-16