# 出所と帰属

メモリの出所を保ちながら、source metadataをauthorizationやownershipと混同しないようにします。

- Canonical: https://docs.xmemo.dev/ja/docs/concepts/provenance-attribution
- Locale: ja-JP
- Content-Locale: ja-JP
- Canonical-Content-Digest: 019b1c6aab84d15e8b791ec3f9b7ecd3d545865415ceba204e14301dea665c6a
- Edition-Digest: c3536e475c24d2f30458eda3b04681ff844b51ee1c304dbad383fa7672300348
- Source-Revision: sha256:3922476e09ce20617ab30ead32aa1ccd8f95082d0f395b172b3eadd0d8fd2d45

## Provenanceは公開メモリレコードの一部です

メモリのcontractはcontent、path、source_identity、agent_id、agent_instance_id_hash、agent_instance_sourceとともにprovenanceを公開します。Provenanceはレコードがどのように生成されたかを示す構造化された証拠であり、bearer tokenではなく、呼び出し元のアクセス範囲を広げることもありません。

- source_identityは、writeとaudit pathで使う簡潔なcaller/source labelです。
- provenanceは、source、adapter、eventなどの証拠フィールドを持つJSON objectです。
- agent_instance_id_hashは、インストールをプライバシーに配慮して帰属させる値です。

## Agent eventは出所を持ち運ぶ

AgentEvent.to_memory_candidateは、source=agent_integration、adapter=<event source>、event_idを含むprovenanceを持つMemoryCandidateを作成します。candidate metadataには、共有sanitizerの実行後もevent type、time、agent id、task id、tool name、command、file path、statusが保持されます。

```json
{
  "provenance": {
    "source": "agent_integration",
    "adapter": "codex",
    "event_id": "evt_<stable-event-id>"
  },
  "metadata": {
    "agent_event": {
      "event_type": "decision_made",
      "task_id": "<task-id>"
    }
  }
}
```

## メモリと一緒に帰属を書き込む

公開のrememberおよびstore request modelはsourceとprovenanceを受け付けます。capture時に安定した秘密ではないラベルを渡し、アクセスcredentialはheaderまたはenvironmentに保持します。サーバーがcontent、metadata、provenanceを保存前にsanitizationします。

```http
POST /v1/remember
X-API-Key: <your-assigned-api-key>
Content-Type: application/json

{
  "content": "The deployment decision was verified.",
  "path": "projects/memory-os/decisions",
  "source": "codex",
  "provenance": {
    "source": "agent_integration",
    "adapter": "codex",
    "event_id": "evt_<stable-event-id>"
  }
}
```

## Sanitizationはlineageを消去しない

永続化sanitizerはcontent、metadata、provenanceを構造的に走査します。credentialのような値は除去され、redactionが行われた場合、サーバーはprivacy.server_write_sanitizerのaudit metadataを記録しつつ、安全なprovenance fieldを保持します。結果のレコードは未加工のevent archiveではなく、sanitized evidenceとして扱ってください。

## 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 が起動ごとに再生成していないことを確認します。
