Zum Inhalt springen

Anleitungen

Claude Code verbinden

Claude-Code-Sitzungen aus OpenTelemetry-gen_ai-Telemetrie aufnehmen und seine Tool-Calls an einem standardmaessig-ablehnenden Durchsetzungspunkt steuern.

Zuletzt aktualisiert:

Claude Code ist die kanonische kooperative Quelle fuer Olivares AI. Die Plattform tut zwei verschiedene Dinge damit, auf zwei Oberflaechen mit entgegengesetzten Haltungen: Halten Sie sie auseinander, weil eine lesen-zuerst und die andere bewusst im Pfad sitzt.

Fuer das allgemeine Quellmodell siehe Eine Quelle verbinden; fuer den Durchsetzungs-Workflow siehe Steuern und Genehmigen.

Was beobachtet vs was durchgesetzt wird

  • Beobachtung (Lesen-zuerst). Claude Code exportiert OpenTelemetry; der Konnektor betreibt einen OTLP-Empfaenger, der diese Telemetrie in Zugriffskarten-Kanten, Kosten-Samples und Identitaet umwandelt. Dieser Pfad sitzt nie im Anfragepfad des Agenten — er nimmt ausserhalb des Datenpfads auf. Siehe Die Zugriffskarte.
  • Durchsetzung (standardmaessig-ablehnend). Claude Codes native PreToolUse- / PostToolUse-Hooks koennen einen Policy Enforcement Point (PEP) aufrufen, der allow / deny / ask zurueckgibt, bevor das Tool laeuft. Das ist der bewusst zwischengeschaltete Pfad, den Sie einschalten, wenn die Steuerungsebene den Agenten steuern muss, nicht nur beobachten.

Sie koennen die Beobachtung allein betreiben. Die Durchsetzung ist opt-in und additiv.

Beobachtung: OTel-Telemetrie-Aufnahme

Der Konnektor exponiert einen Standard-OTLP-Empfaenger (gRPC und HTTP, auf den ueblichen OpenTelemetry-Ports). Er mappt zwei Vokabulare in dieselbe Pipeline:

  • Claude Codes eigene claude_code.*-Telemetrie — Tool-Calls, Sitzungen, Pro-Anfrage-Modellnutzung und (unter der Tracing-Beta) die Subagent-Hierarchie.
  • Die anbieterunabhaengigen OpenTelemetry-GenAI-Semantikkonventionen (gen_ai.*), sodass jeder OTel-instrumentierte Agent dieselbe Zugriffskarte und FinOps speist, nicht nur Claude Code.

Aus dieser Telemetrie leitet der Konnektor sitzungszugeordnete Zugriffskanten ab (welche Sitzung welche Ressource beruehrt hat, Lesen oder Schreiben), eine Topologiekante fuer jeden MCP-Server, mit dem sich eine Sitzung verbindet, und ein Pro-Anfrage-Kosten-Sample. MCP-Server exponieren readOnlyHint / destructiveHint-Introspektion; das sind ein R/RW-Signal, das die MCP-Spezifikation als nicht vertrauenswuerdig markiert, sodass der Konnektor sie als bestaetigende Evidenz behandelt und eine Kante nie allein auf Basis eines Hints hochstuft.

OLIVARES_SOURCES_CONFIG ist ein JSON-Dokument (vor dem Start der Engine gelesen); kind: "claude" waehlt diesen Konnektor. http_addr bindet standardmaessig Loopback — siehe die Warnung unten.

{
  "sources": [
    {
      "name": "claude",
      "kind": "claude",
      "tenant": "<tenant-ref>",
      "config": {
        "enable_http": "true",
        "http_addr": "127.0.0.1:4318"
      }
    }
  ]
}

Das GenAI-Profil ist opt-in

Die gen_ai.*-Semantikkonventionen haben noch Development-Status, sodass das Mapping auf Kosten und Kanten ein explizites Opt-In ist. Setzen Sie das semconv_opt_in des Konnektors auf den Token der Spezifikation (Spiegelung von OTEL_SEMCONV_STABILITY_OPT_IN); ohne ihn speist ein gen_ai.*-Datensatz weiterhin den Liveness-Watchdog, wird aber nicht bepreist. Das Profil liest sowohl die aktuellen als auch die veralteten Attributnamen, die echte Frameworks noch emittieren, akzeptiert die Daten auf Traces oder Logs und dedupliziert eine Operation, die auf beiden ankommt, sodass FinOps nicht doppelt abgerechnet wird. Nachrichteninhalte werden nie gelesen — Content-Keys werden nur verwendet, um zu erkennen, welchen Dialekt ein Emitter spricht.

Minimale Daten standardmaessig

Der Konnektor behaelt nur strukturelle Telemetrie — Sitzungen, Identitaeten, Tool-Namen, R/RW-Modus, Timing — auch wenn der Client konfiguriert ist, Prompt-Text oder Tool-Bodies zu emittieren. Ein roher Tool-Input wird auf eine redigierte Ressourcenreferenz reduziert, bevor er eine Beobachtung wird. Das Beibehalten einer Content-Kategorie ist ein separates, auditiertes Opt-In. Siehe Erlaubt vs Beobachtet und Genauigkeit dafuer, wie Abdeckung und Zuordnung gestuft sind.

:::caution Der kooperative Empfaenger ist nicht authentifiziert und bindet standardmaessig Loopback. Jeder, der den Socket erreichen kann, kann Telemetrie faelschen, also exponieren Sie ihn nicht in einem geteilten Netzwerk. Off-Host-Agenten gehoeren auf den nicht-kooperativen Kernel-Backstop, nicht auf einen oeffentlichen OTLP-Port. :::

Durchsetzung: Der Hook-PEP

Um zu steuern — nicht nur zu beobachten — verdrahten Sie Claude Codes Hooks mit dem PEP. Der PreToolUse-Hook des Agenten leitet jeden Tool-Call an einen verwalteten Hook-Befehl weiter, der ihn an den PEP weiterleitet und das Urteil zurueckgibt. Der Konnektor besitzt nur das Hook-Wire-Protokoll und die standardmaessig-ablehnenden Defaults; die eigentliche Entscheidung wird durch eine Naht delegiert, die die Steuerungsebene gegen einen Live-PDP (Cedar/ABAC), die Firm-Identitaetsebene, Human-in-the-Loop-Genehmigungen und das manipulationssichere Ledger implementiert.

Claude Code ──PreToolUse hook──▶ managed hook command ──HTTP──▶ governed PEP
   (agent)        (stdin JSON)                                  (loopback)

              allow │ deny │ ask  ◀──── governed decision ──────────┘
            (+ updatedInput rewrite)   deny-closed on any failure

Was der PEP zurueckgeben kann, verifiziert gegen Claude Codes Hook-Vertrag:

  • PreToolUseallow, deny oder ask, mit einem optionalen gesteuerten updatedInput-Rewrite (einen Pfad verengen, --dry-run hinzufuegen, einen Fetch umleiten). Praezedenz ist deny ueber ask ueber allow.
  • PostToolUse — Claude Code hat kein Output-Rewrite-Feld, sodass ein PostToolUse-Hook nur die weitere Verarbeitung bei einem richtliniengeflaggten Ergebnis blockieren kann. Der Konnektor gibt nicht vor, ein Ergebnis umzuschreiben, das das Modell bereits gesehen hat; was er redigiert, ist das, was er behaelt und auditiert.

Standardmaessig-ablehnend ist total

Die Zwischenschaltung im Datenpfad ist asymmetrisches Risiko, daher schliesst jeder Fehlermodus ablehnend, nie offen: ein fehlender Entscheider, ein Entscheidungsfehler (PDP nicht erreichbar, Identitaet unaufgeloest, eine Genehmigung, die nicht geoeffnet werden konnte) oder ein fehlerhafter Hook-Payload geben alle ein sauberes Deny zurueck. Der Null-Wert des Urteils ist selbst ein Deny. Ein ask leitet zu einer gesteuerten Genehmigung; die Genehmigung ist an einen Plan-Hash des exakten Tool-Calls gebunden, sodass sie nicht wiederverwendet werden kann, um einen anderen Call zu autorisieren (Anti-TOCTOU).

In der Produktion wird der Hook in Claude Codes Enterprise-Managed-Settings-Stufe mit managed-hooks-only aktiviert ausgeliefert, sodass ein Entwickler ihn nicht aus einer niedrigerstufigen Settings-Datei deaktivieren oder ersetzen kann. Identitaetshinweise, die auf die Anfrage gestempelt werden, verfeinern die Zuordnung; der autoritative Prinzipal ist der Bearer, den der Entscheider aufloest, und eine Richtlinie, die feste Identitaet erfordert, lehnt alles ab, was sie nur ungefaehr zuordnen kann.

Ein leichterer, lokaler Modus

Der Konnektor unterstuetzt auch eine lokale, In-Process-Durchsetzungsrichtlinie, die auf dem Hot-Path des Hooks ausgewertet wird, ohne Engine-Roundtrip — sodass eine langsame oder nicht erreichbare Steuerungsebene nie einen Tool-Call eines Entwicklers blockiert. Es ist opt-in: Ohne konfigurierte Regeln werden Hooks beobachtet und nie eingeschraenkt. Das ist die kooperativ-als-Standard-Haltung; der oben gesteuerte PEP ist die entgegengesetzte Haltung, zu der Sie wechseln, wenn die Steuerungsebene der Entscheidungstraeger sein muss.

Anti-Evasion

Weil der Beobachtungspfad kooperativ ist, achtet der Konnektor auf eine Sitzung, die aufhoert, OTel zu emittieren, waehrend ihre Hooks weiter feuern — die Signatur eines Agenten, der seinen Exporter mitten in der Sitzung deaktiviert hat, waehrend er weiter handelt. Beachten Sie, was er nicht tut: Ein beendeter Agent wird still, und Stille allein wird nie geflaggt. Ground Truth fuer wirklich nicht-kooperative Aktivitaet ist der Kernel/eBPF-Backstop, nicht diese Heuristik.

Air-Gap: Was zu Hause bleibt und was nicht

Die Steuerungsebene laeuft innerhalb Ihrer eigenen Infrastruktur und kann air-gapped laufen — die Governance- und Beobachtungsdaten (Zugriffskanten, Entscheidungen, Audit, Kosten-Samples) verlassen nie Ihren Perimeter. Der OTLP-Empfaenger und der Hook-PEP sind lokale Sockets; die Engine telefoniert nicht nach Hause.

Ein ehrlicher Hinweis: Claude-Inferenz ist nie air-gapped. Claude Code sendet seine Prompts weiterhin an Anthropics API (direkt oder ueber Bedrock, Vertex oder Foundry), um eine Antwort zu erhalten. Das Air-Gapping der Steuerungsebene haelt die Governance-Daten Ihrer Umgebung zu Hause; es verschiebt das Modell nicht on-prem. Nur wirklich selbst hostbare Modelle (zum Beispiel ueber vLLM/Ollama) laufen vollstaendig offline. Siehe Was ist Olivares AI und Ehrlichkeit und Grenzen.

Naechste Schritte

Dokumentation durchsuchen