# センシティブなメモリ

credential、個人データ、高い機密性を持つメモリに適用される実際のsanitizationとretrieval visibilityの制御を理解します。

- Canonical: https://docs.xmemo.dev/ja/docs/concepts/sensitive-memory
- Locale: ja-JP
- Content-Locale: ja-JP
- Canonical-Content-Digest: f4135c91811fc6ab82f0fcbe64bdbe557f8f57024585230ef640f73d09da08fa
- Edition-Digest: 748a22d1907b176d3dbf96abf266c8bb73ac3a4a611ab67004b7bb2ec72e410c
- Source-Revision: sha256:2d80a1534f639a21ed4385df129fd914a3ed4da7b24c261eee0ad18032a0f691

## Sensitiveはmemory typeではなくhandling policyです

メモリcontractのmemory_type enumはepisodic、semantic、procedural、working、identityです。sensitiveという値はありません。Sensitivityは6つ目のmemory typeを作るのではなく、共有redactionとsecurity-envelopeの制御で扱います。

- Credentialのような値は、canonical server sanitizerによって常にredactされます。
- 所有者の個人PIIはデフォルトで保持され、所有者がauto_redact_piiを有効にするとredactされます。
- 高リスクなprivate-keyまたはAWS-secretのcontentを検出すると、agent captureはeventをスキップします。

## content、metadata、provenanceを一緒にsanitizeする

sanitize_server_writeは、memory rowから到達できるすべての文字列に共有rule registryを適用します。content、metadata、provenanceも対象です。Credential label、API key、JWT、URL secretなど登録済みのcredential形式の値は保存前に除去され、redaction後のresult metadataにも元の値は返されません。

```python
from memory_manager.security.redact import sanitize_server_write

result = sanitize_server_write(
    "Deploy with token=not-a-real-secret",
    redact_contact_pii=False,
)
print(result.text)
print(result.applied, result.redactions)
```

## Vault modeならメモリをローカルに保てる

Security envelopeにはsecurity_mode、encryption_state、retrieval_visibility、server_embeddings_enabled、server_content_search_enabledが記録されます。Vault modeはciphertextを保存し、デフォルトでretrieval_visibility=client_local_only、server embeddingsを無効にします。Tenantがsemantic indexingを明示的に選ばない限り、server recallから除外されます。

```json
{
  "security_mode": "vault",
  "encryption_state": "ciphertext",
  "retrieval_visibility": "client_local_only",
  "server_embeddings_enabled": false,
  "server_content_search_enabled": false
}
```

## Recallはenvelopeに従う

Server recall gateはclient_local_onlyまたはnot_retrievableとマークされたrowを除外します。Vault rowも、metadataでvault_semantic_index_opt_inが明示的に選ばれていない限り除外されます。Security envelopeは、server-side semantic indexを許可することがトレードオフになると説明しています。Server recallに入れてはならないcontentにはlocal recallを使います。

```text
client_local_only  -> excluded from server recall
not_retrievable    -> excluded from server recall
vault + opt-in     -> server vector recall allowed
vault without opt-in -> local recall required
```

## ChatGPT ユーザー

bearer token をチャットに貼り付けずに、ChatGPT が XMemo の設定、プロジェクト事実、意思決定、TODO に永続的にアクセスできるようにします。

ChatGPT/OpenAI app の OAuth フローで hosted XMemo MCP server に接続し、XMemo アカウントに memory:read と memory:write の許可を承認します。

合成の設定またはプロジェクトメモを保存し、新しいチャットを開始してから、作業を続ける前に ChatGPT に XMemo 経由でそれを呼び出させます。

OAuth が失敗する、またはツールが表示されない場合は、direct token を作成する前に、ホストアプリで MCP server からサインアウトし、XMemo server URL を再接続して再試行します。

## Copilot / Codex 開発者

リポジトリの判断、コーディング規約、バグ修正メモ、タスク履歴を IDE と CLI エージェント間で持ち運べます。

利用可能な場合は、VS Code / GitHub Copilot および Gemini CLI に OAuth を使用してください。Copilot CLI、Codex、Cursor、またはその他の直接 MCP クライアントの場合は、XMEMO_KEY をローカル環境またはシークレットストアに保持し、安定した XMEMO_AGENT_INSTANCE_ID を設定してください。

コードベースの判断またはバグ修正を記録し、次の IDE または CLI エージェントに、編集前に関連する XMemo コンテキストを呼び出させます。

呼び出し結果が空の場合は、選択した MCP 設定パス、direct client 用の XMEMO_KEY 環境変数、ホストアプリ内の古い OAuth 認証情報を確認します。

## チーム / エンタープライズ pilot owner

アカウント制御、ソース attribution、エクスポート/削除ワークフロー、レビュー担当者向けに安全な設定証跡で共有メモリを評価します。

保護された XMemo workspace を作成または開き、承認済みユーザーを招待してから、readiness badges に従って OAuth またはスコープ付き direct credential で各クライアントを接続します。

pilot メンバーに合成のチームメモリを保存してもらい、XMemo でソース attribution を確認し、削除/エクスポートとサポート経路をレビューします。

メンバーが接続できない場合は、新しい token を発行する前に、ロール権限、OAuth 承認、クライアント readiness 状態、サポートガイダンスを確認します。

## 自律エージェント operator

headless またはスケジュール済みエージェントが進捗を記録し、過去の判断を取得し、安定した非秘密のインスタンス ID を保持できるようにします。

/api/v1/mcp/config/autonomous-agent を取得します。runner が OAuth + custom headers をサポートする場合は auth_modes.oauth を優先し、完全 headless runner の場合のみ secret store の XMEMO_KEY で auth_modes.xmemo_key を使います。

XMemo に進捗を書き込む合成タスクを 1 つ実行し、runner を再起動して、同じ XMEMO_AGENT_INSTANCE_ID でその進捗を呼び出せることを確認します。

attribution が変わる、または呼び出し結果がインスタンス間で分かれる場合は、XMEMO_AGENT_INSTANCE_ID を git の外に永続化し、runner が起動ごとに再生成していないことを確認します。
