# Agenteninstanz-Identität

Trennen Sie die nicht-geheime Installationsbezeichnung für die Herkunftszuordnung vom Berechtigungsnachweis, der Anfragen autorisiert.

- Canonical: https://docs.xmemo.dev/de/docs/concepts/agent-instance-identity
- Locale: de-DE
- Content-Locale: de-DE
- Canonical-Content-Digest: c0db15eaca6541c974e88179495cf7a7f5832695889a2ff2abef284fd7daf337
- Edition-Digest: 7ce6cf8a04db39dc5f1024b2e3105a015cc986a494b94838dd790dbb8f6beb13
- Source-Revision: sha256:af573969af4a97ad87f12425b51f333259b42a829512f8644875a77c1bba2ddb

## Eine Instanz-ID ist kein Berechtigungsnachweis

XMEMO_AGENT_INSTANCE_ID identifiziert eine lokale Client- oder Runner-Instanz; sie autorisiert keine Anfrage. Der API-Schlüssel oder die OAuth-Autorisierung ist der Zugriffsberechtigungsnachweis. Der Server leitet aus dem Instanzwert einen agent_instance_id_hash ab und meldet die Grenzautorität als attribution_only.

- Berechtigungsnachweis: X-API-Key oder die akzeptierte OAuth-Bearer-Autorisierung steuert den Zugriff.
- Instanzbezeichnung: X-Memory-OS-Agent-Instance-ID ermöglicht es dem Server, den schreibenden Runner mit einem späteren Aufrufer zu vergleichen.
- Agentenbezeichnung: X-Memory-OS-Agent-ID identifiziert den logischen Agenten getrennt von einer einzelnen Installation.

## Normalisieren, danach hashen

Die Laufzeitumgebung bereinigt eine Instanz-ID, lehnt leere Werte ab und akzeptiert maximal 256 Zeichen, bevor sie mittels SHA-256 gehasht wird. Ein gespeicherter Hash wird als sha256:<64 Hexadezimalzeichen> normalisiert; fehlerhafte vorab gehashte Werte werden ignoriert und nicht als Berechtigungsnachweise behandelt.

```python
from memory_manager.auth.agent_identity import agent_instance_id_hash

instance_hash = agent_instance_id_hash("codex-local-install")
# sha256:<64 hexadecimal characters>
```

## Einen Wert pro lokaler Installation beibehalten

Speichern Sie einen einzelnen nicht-geheimen Instanzwert außerhalb des Repositoriums dauerhaft und senden Sie ihn mit dem Zugriffsberechtigungsnachweis. Verwenden Sie ihn nach einem Neustart für dieselbe Installation wieder; wählen Sie einen anderen Wert für ein separates lokales Profil.

```http
X-API-Key: <your-assigned-api-key>
X-Memory-OS-Agent-ID: codex
X-Memory-OS-Agent-Instance-ID: <stable-local-instance-id>
```

## Grenzsemantiken sind explizit

memory_agent_boundary vergleicht agent_id und Instanz-Hash des Aufrufers mit den Werten des Datensatzes. Stimmen beide überein, gilt dies als self; eine übereinstimmende agent_id mit einem anderen Hash ergibt same_agent_other_instance; eine fehlende vergleichbare Identität wird als unverified oder unknown gemeldet. Diese Bezeichnungen erläutern die Herkunftszuordnung und ersetzen keine Token-Autorisierung.

```json
{
  "relation": "self",
  "ownership": "current_agent",
  "boundary_authority": "attribution_only",
  "current_agent_trust": "client_asserted"
}
```

## ChatGPT-Benutzer

Geben Sie ChatGPT dauerhaften Zugriff auf Ihre XMemo-Präferenzen, Projektfakten, Entscheidungen und TODOs, ohne Bearer-Token in einen Chat einzufügen.

Verbinden Sie den gehosteten XMemo-MCP-Server über den OAuth-Ablauf der ChatGPT-/OpenAI-App und genehmigen Sie anschließend die Berechtigungen memory:read und memory:write für Ihr XMemo-Konto.

Speichern Sie eine synthetische Präferenz oder Projektnotiz, starten Sie einen neuen Chat und fordern Sie ChatGPT auf, diese vor der Fortsetzung der Arbeit über XMemo abzurufen.

Wenn OAuth fehlschlägt oder Tools nicht angezeigt werden, melden Sie sich in der Host-App vom MCP-Server ab, verbinden Sie die XMemo-Server-URL erneut und versuchen Sie es noch einmal, bevor Sie direkte Token erstellen.

## Copilot- / Codex-Entwickler

Übertragen Sie Repository-Entscheidungen, Programmierkonventionen, Bugfix-Notizen und den Aufgabenverlauf zwischen IDE- und CLI-Agenten.

Verwenden Sie OAuth für VS Code / GitHub Copilot und Gemini CLI, sofern verfügbar. Behalten Sie für Copilot CLI, Codex, Cursor oder andere direkte MCP-Clients XMEMO_KEY in der lokalen Umgebung oder im Secret-Store und setzen Sie eine stabile XMEMO_AGENT_INSTANCE_ID.

Erfassen Sie eine Codebasis-Entscheidung oder einen Bugfix und fordern Sie den nächsten IDE- oder CLI-Agenten auf, den relevanten XMemo-Kontext vor dem Bearbeiten abzurufen.

Wenn Abrufe leer bleiben, überprüfen Sie den ausgewählten MCP-Konfigurationspfad, die Umgebungsvariable XMEMO_KEY für direkte Clients und veraltete OAuth-Anmeldedaten in der Host-App.

## Verantwortlicher für Team- / Enterprise-Pilotprojekte

Evaluieren Sie geteilten Speicher mit Kontokontrollen, Quellenzuordnung, Export-/Lösch-Workflows und prüfersicheren Einrichtungsnachweisen.

Erstellen oder betreten Sie den geschützten XMemo-Arbeitsbereich, laden Sie freigegebene Benutzer ein und verbinden Sie jeden Client über OAuth oder bereichsbezogene direkte Anmeldedaten gemäß den Bereitschafts-Badges.

Lassen Sie ein Mitglied des Pilotprojekts eine synthetische Team-Erinnerung speichern, bestätigen Sie die Quellenzuordnung in XMemo und prüfen Sie anschließend Lösch-/Export- sowie Support-Pfade.

Wenn ein Mitglied keine Verbindung herstellen kann, prüfen Sie Rollenberechtigungen, OAuth-Genehmigung, Client-Bereitschaftsstatus und Support-Hinweise, bevor Sie ein neues Token ausstellen.

## Betreiber autonomer Agenten

Ermöglichen Sie es Headless- oder zeitgesteuerten Agenten, Fortschritte aufzuzeichnen, frühere Entscheidungen abzurufen und eine stabile, nicht-geheime Instanzidentität beizubehalten.

Rufen Sie /api/v1/mcp/config/autonomous-agent ab. Bevorzugen Sie auth_modes.oauth, wenn der Runner OAuth + benutzerdefinierte Header unterstützt; verwenden Sie auth_modes.xmemo_key mit XMEMO_KEY aus einem Secret-Store nur für vollständig autonome Headless-Runner.

Führen Sie eine synthetische Aufgabe aus, die den Fortschritt in XMemo schreibt, starten Sie den Runner neu und bestätigen Sie, dass er diesen Fortschritt unter Verwendung derselben XMEMO_AGENT_INSTANCE_ID abruft.

Wenn sich die Zuordnung ändert oder Abrufe über Instanzen hinweg aufgeteilt werden, speichern Sie XMEMO_AGENT_INSTANCE_ID außerhalb von Git und stellen Sie sicher, dass der Runner diese nicht bei jedem Start neu generiert.
