---
title: プライバシーモデル
description: 何が記録され、何が記録されないか。機微なデータをストアに入れないための各層。
---

Zanei は PC 上での操作を記録します。機微なデータなので既定値は保守的にしてあり、以下の各層は設定なしで効きます。

## 既定の振る舞い

1. **外部送信なし。** データをどこかへ送る機能がありません。すべてローカルの SQLite ファイルに留まります。
2. **画面録画なし。** スクリーンショットも画面収録 API も使いません。読むのは OS のアクセシビリティ／イベントのメタデータです。
3. **キー入力の内容は既定で記録しない。** 記録されるのは「この種類のフィールドで入力があった」という事実です。何を打ったかは、opt-in しない限り記録されません。
4. **capture-time フィルタ。** 除外したアプリ・サイトのイベントは、ストアに書き込まれる前に破棄されます。
5. **読み出しは read-only。** [MCP サーバ](/ja/reference/mcp)は読み取り専用のビューです。agent はタイムラインを読めますが、記録対象やフィルタは変更できません。

## 既定構成で記録されるもの・されないもの

| 記録される | 記録されない |
| --- | --- |
| どのアプリが前面か、いつ切り替わったか | スクリーンショット・画面録画 |
| ウィンドウタイトルとフォーカスの変化 | キー入力の内容（事実とフィールド種別のみ） |
| UI 操作（クリック・フォーカス移動）の要素メタデータ | パスワード欄（`AXSecureTextField`）の値。捕捉段階で除外 |
| 入力・スクロール・クリップボード操作の事実 | Chrome シークレットウィンドウの URL・タブ情報。決定的に判定 |
| Chrome の URL とタブタイトル（通常ウィンドウのみ） | 除外アプリ（既定でパスワードマネージャ等）由来のすべて |

## 内容の記録は opt-in

[設定](/ja/reference/config)で `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](#redaction) が捕捉値から検出可能な機密（メール・カード番号・トークン）をスクラブします。

:::danger
`text_content` を有効にすると、入力内容が保持期間のあいだローカルストアに残ります。[フィルタ](/ja/guides/filters)と短い `retention_hours` を併用してください。
:::

## 自動除外

- **パスワード欄** — 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 は自分のマシン上の自分の操作を記録するツールです。他者の監視のためには作られておらず、そうした利用は地域によっては違法です。会社管理のデバイスで使う場合は、所属組織のポリシーに従ってください。
