---
title: 設定
description: config.toml のスキーマ — 捕捉ソース・フィルタ・出力・保持期間。
---

設定は単一の TOML ファイルにまとまっています：

```
~/.config/zanei/config.toml
```

グローバルフラグ `--config <path>` で呼び出しごとに上書きできます。ヘルパーコマンド：

```bash
zanei config init   # 設定パスに全項目のコメント付きテンプレートを生成
zanei config path   # 設定ファイルのパスを表示
zanei config show   # 有効設定（既定値マージ後）を表示
zanei config edit   # $EDITOR で開く
zanei config set capture.text_content true
```

`zanei config init` は不足している親ディレクトリを作成し、以下の完全なテンプレートを
書き込みます。既存ファイルは上書きせず、生成先が存在する場合はそのパスを表示して終了コード
1 で終了します。既定以外の場所を初期化するにはグローバル `--config <path>` を使います。

スカラー値の `capture.text_content` と `[output]` の各キーには
[`zanei config set`](/ja/reference/cli#config)を使います。filter リストには
[`zanei filter`](/ja/reference/cli#filter)、その他の配列には `config edit` を使います。

## 全体例（既定値）

```toml config.toml
[capture]
sources = ["app", "window", "ui", "input", "browser"]
text_content = false            # 内容の捕捉は明示的な opt-in

[filter]                        # capture-time フィルタ = プライバシー境界（ストア書込前に適用）
exclude_apps = ["1Password", "Keychain Access"]   # 不許可リスト（bundle_id 推奨）。既定除外を同梱
include_only_apps = []          # 非空で許可リストモードに切替
exclude_websites = []           # browser.* の URL host。ドット境界のサフィックス一致（example.com は api.example.com にも一致）
include_only_websites = []      # URL host の許可リスト
redactors = ["email", "credit_card", "token"]     # 捕捉値のスクラブ（二次防御）

[output]
mode = "both"                   # stream | batch | both
batch_interval_s = 5
store = "sqlite"                # sqlite | jsonl
retention_hours = 48            # 既定で短命保持
```

egress に相当する設定は存在しません — 外部送信は機能として存在しないためです。

## `[capture]`

| キー | 既定値 | 説明 |
| --- | --- | --- |
| `sources` | `["app", "window", "ui", "input", "browser"]` | 捕捉するイベントファミリー。ソースを外すと対応する権限も不要になります（[権限](/ja/guides/permissions)参照） |
| `text_content` | `false` | 入力・フィールド内容（`ui.value`・`input.key`・クリップボードの中身）の捕捉。既定オフ。[プライバシーモデル](/ja/guides/privacy)参照 |

## `[filter]`

capture-time フィルタ — 該当イベントはストアに書き込まれる**前に**破棄されます。セマンティクス・マッチング・優先順位は[フィルタガイド](/ja/guides/filters)を参照。手編集より [`zanei filter`](/ja/reference/cli#filter) での管理を推奨します。

| キー | 既定値 | 説明 |
| --- | --- | --- |
| `exclude_apps` | 既定除外を同梱 | アプリの不許可リスト（`bundle_id` 推奨。表示名も可） |
| `include_only_apps` | `[]` | 許可リスト。非空で許可リストモードに切替 |
| `exclude_websites` | `[]` | `browser.*` の URL host の不許可リスト。Public Suffix List 非対応のドット境界サフィックス一致：`example.com` は `api.example.com` に一致し、`evil-example.com` には一致しません。`com` を指定するとすべての `.com` ホストが除外されます |
| `include_only_websites` | `[]` | URL host の許可リスト |
| `redactors` | `["email", "credit_card", "token"]` | 捕捉値に適用する redaction ルール |

デーモンは設定ファイルを約 2 秒間隔で監視しており、フィルタの変更は数秒以内に反映されます — デーモン再起動は不要です。

## `[output]`

| キー | 既定値 | 説明 |
| --- | --- | --- |
| `mode` | `"both"` | `stream`（発生順に出力）/ `batch`（バッファ書込）/ `both` |
| `batch_interval_s` | `5` | batch モードのフラッシュ間隔 |
| `store` | `"sqlite"` | ストアバックエンド：`sqlite` または `jsonl` |
| `retention_hours` | `48` | これより古いイベントは起動時と定期実行で purge され、読み取り結果からも除外 |

## 変更の反映

- `[filter]` の変更はデーモンの設定監視（約 2 秒間隔）で検知され、数秒以内に反映されます — 再起動は不要です。
- それ以外（`capture.sources`・`[output]` 等）はデーモン再起動後に反映：`zanei stop && zanei start`

## 関連パス

| パス | 用途 | 上書き |
| --- | --- | --- |
| `~/.config/zanei/config.toml` | 設定 | `--config <path>` |
| `~/.local/state/zanei/store.sqlite` | イベントストア | `--store <path>` |
