プライバシーモデル
何が記録され、何が記録されないか。機微なデータをストアに入れないための各層。
Zanei は PC 上での操作を記録します。機微なデータなので既定値は保守的にしてあり、以下の各層は設定なしで効きます。
既定の振る舞い
- 外部送信なし。 データをどこかへ送る機能がありません。すべてローカルの SQLite ファイルに留まります。
- 画面録画なし。 スクリーンショットも画面収録 API も使いません。読むのは OS のアクセシビリティ/イベントのメタデータです。
- キー入力の内容は既定で記録しない。 記録されるのは「この種類のフィールドで入力があった」という事実です。何を打ったかは、opt-in しない限り記録されません。
- capture-time フィルタ。 除外したアプリ・サイトのイベントは、ストアに書き込まれる前に破棄されます。
- 読み出しは read-only。 MCP サーバは読み取り専用のビューです。agent はタイムラインを読めますが、記録対象やフィルタは変更できません。
既定構成で記録されるもの・されないもの
| 記録される | 記録されない |
|---|---|
| どのアプリが前面か、いつ切り替わったか | スクリーンショット・画面録画 |
| ウィンドウタイトルとフォーカスの変化 | キー入力の内容(事実とフィールド種別のみ) |
| UI 操作(クリック・フォーカス移動)の要素メタデータ | パスワード欄(AXSecureTextField)の値。捕捉段階で除外 |
| 入力・スクロール・クリップボード操作の事実 | Chrome シークレットウィンドウの URL・タブ情報。決定的に判定 |
| Chrome の URL とタブタイトル(通常ウィンドウのみ) | 除外アプリ(既定でパスワードマネージャ等)由来のすべて |
内容の記録は opt-in
設定で capture.text_content = true にすると、打鍵した文字(input.key)、フィールドに入力された差分(ui.value.data.text)、クリップボードの中身の記録が有効になります。自由入力フィールドで捕捉するのは、同じアプリ・同じフォーカス要素への打鍵またはペーストから 3 秒以内に増えた差分だけで、表示されている文書やフィールドの全体値ではありません。element.value は自由入力および不明な要素では null のままで、値を持つのは安全と分類した非テキスト要素(ボタン・チェックボックス・スライダー等)だけです。既定はオフです。start と status が opt-in のコマンドを表示しますが、設定が自動で有効になることはありません。有効にした場合:
- パスワード欄は引き続き除外されます(secure field は捕捉段階で破棄)。
- 対応する打鍵またはペーストのない値変化は、テキストを記録しません。
- 不明な UI 要素は
element.valueを記録しません。 - IME 使用中、および入力ソース種別が不明なときの
input.key.textは null です。確定文字列は認可されたui.value.data.textの差分としてのみ捕捉されます。 - 音声入力は打鍵トリガーを伴わないため、そのテキストは記録されません。
- redactor が捕捉値から検出可能な機密(メール・カード番号・トークン)をスクラブします。
自動除外
- パスワード欄 — macOS が secure text field と見なすものは捕捉段階で破棄されます。
- Chrome シークレットウィンドウ — Chromium は AppleScript でウィンドウのモードを決定的に返すため、incognito は URL 捕捉から除外されます。設定項目はありません。
- 組み込みの除外アプリ — パスワードマネージャ・資格情報ストア(
1Password・Keychain Access等)は固定の層で除外され、include_only_appsでも解除できません。config.tomlのexclude_appsに見える編集可能な既定値とは別の層です。
Redaction
捕捉された値についても、redactor が検出可能な機密情報 — メールアドレス・クレジットカード番号・トークン(redactors = ["email", "credit_card", "token"])— をスクラブします。各イベントには redaction フィールドがあり、どのルールが適用されたかを判別できます。
制限
- Chrome 以外のブラウザのウィンドウタイトル。 Safari や Firefox はプライベートウィンドウを確実に判定する手段がないため、URL 捕捉は行いませんが、ウィンドウタイトルは他のアプリ同様に記録されるため、プライベートウィンドウのページタイトルがタイトルとして残り得ます。避けたい場合はブラウザ自体を除外してください:
zanei filter exclude-app。 - Chrome incognito のウィンドウタイトル。 incognito 判定は URL 捕捉側にしかないため、incognito ウィンドウが
browser.navigateイベントを生むことはありませんが、ウィンドウタイトルはアクセシビリティ経由のwindow.titleとして記録され得ます。避けたい場合はブラウザ自体を除外してください:zanei filter exclude-app。 - agent がデータを読んだ後。 MCP サーバも CLI も外部送信はしませんが、タイムラインを読んだ agent は通常それを LLM プロバイダに送ります。そのホップは agent の管轄です。同梱の skill には送信前に範囲を絞るよう書いています。
想定用途
Zanei は自分のマシン上の自分の操作を記録するツールです。他者の監視のためには作られておらず、そうした利用は地域によっては違法です。会社管理のデバイスで使う場合は、所属組織のポリシーに従ってください。