99 99
100### Allgemeine Konfigurationsvariablen100### Allgemeine Konfigurationsvariablen
101 101
102Diese Variablen konfigurieren Exporter, Endpunkte und Exportverhalten für alle Bereitstellungen.102Diese Variablen konfigurieren Exporter, Endpunkte und das Exportverhalten für alle Bereitstellungen.
103 103
104Wenn Sie eine signalspezifische Endpunkt- oder Protokollvariable wie `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` setzen, verwendet Claude Code diese statt der generischen Variable für dieses Signal. Wenn Sie eine signalspezifische Header-Variable wie `OTEL_EXPORTER_OTLP_METRICS_HEADERS` setzen, führt Claude Code diese mit dem generischen `OTEL_EXPORTER_OTLP_HEADERS` für dieses Signal zusammen.104Wenn Sie eine signalspezifische Endpunkt- oder Protokollvariable setzen, etwa `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`, verwendet Claude Code diese anstelle der allgemeinen Variable für das jeweilige Signal. Wenn Sie eine signalspezifische Header-Variable setzen, etwa `OTEL_EXPORTER_OTLP_METRICS_HEADERS`, führt Claude Code sie für dieses Signal mit der allgemeinen `OTEL_EXPORTER_OTLP_HEADERS` zusammen.
105 105
106Auf Maschinen mit verwalteten Einstellungen siehe [Wie verwaltete Einstellungen das OTLP-Ziel sperren](#how-managed-settings-lock-the-otlp-destination), um zu erfahren, was Claude Code entfernt.106Auf Rechnern mit verwalteten Einstellungen finden Sie unter [Wie verwaltete Einstellungen das OTLP-Ziel festlegen](#how-managed-settings-lock-the-otlp-destination), was Claude Code entfernt.
107 107
108| Umgebungsvariable | Beschreibung | Beispielwerte |108| Umgebungsvariable | Beschreibung | Beispielwerte |
109| - | - | - |109| - | - | - |
110| `CLAUDE_CODE_ENABLE_TELEMETRY` | Aktiviert Telemetrieerfassung (erforderlich) | `1` |110| `CLAUDE_CODE_ENABLE_TELEMETRY` | Aktiviert die Erfassung von Telemetriedaten (erforderlich) | `1` |
111| `OTEL_METRICS_EXPORTER` | Metriken-Exporter-Typen, kommagetrennt. Verwenden Sie `none` zum Deaktivieren | `console`, `otlp`, `prometheus`, `none` |111| `OTEL_METRICS_EXPORTER` | Metrik-Exporter-Typen, durch Kommas getrennt. Verwenden Sie `none` zum Deaktivieren | `console`, `otlp`, `prometheus`, `none` |
112| `OTEL_LOGS_EXPORTER` | Protokoll-/Ereignis-Exporter-Typen, kommagetrennt. Verwenden Sie `none` zum Deaktivieren | `console`, `otlp`, `none` |112| `OTEL_LOGS_EXPORTER` | Exporter-Typen für Logs/Events, durch Kommas getrennt. Verwenden Sie `none` zum Deaktivieren | `console`, `otlp`, `none` |
113| `OTEL_EXPORTER_OTLP_PROTOCOL` | Protokoll für OTLP-Exporter, gilt für alle Signale. Claude Code hat kein Standardprotokoll, daher setzen Sie dies oder die signalspezifische Protokollvariable für jeden aktivierten `otlp`-Exporter | `grpc`, `http/json`, `http/protobuf` |113| `OTEL_EXPORTER_OTLP_PROTOCOL` | Protokoll für den OTLP-Exporter, gilt für alle Signale. Claude Code hat kein Standardprotokoll; setzen Sie daher diese oder die signalspezifische Protokollvariable für jeden `otlp`-Exporter, den Sie aktivieren | `grpc`, `http/json`, `http/protobuf` |
114| `OTEL_EXPORTER_OTLP_ENDPOINT` | OTLP-Collector-Endpunkt für alle Signale | `http://localhost:4317` |114| `OTEL_EXPORTER_OTLP_ENDPOINT` | OTLP-Collector-Endpunkt für alle Signale | `http://localhost:4317` |
115| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | Protokoll für Metriken, überschreibt allgemeine Einstellung | `grpc`, `http/json`, `http/protobuf` |115| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | Protokoll für Metriken, überschreibt die allgemeine Einstellung | `grpc`, `http/json`, `http/protobuf` |
116| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | OTLP-Metriken-Endpunkt, überschreibt allgemeine Einstellung | `http://localhost:4318/v1/metrics` |116| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | OTLP-Endpunkt für Metriken, überschreibt die allgemeine Einstellung | `http://localhost:4318/v1/metrics` |
117| `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` | Protokoll für Protokolle, überschreibt allgemeine Einstellung | `grpc`, `http/json`, `http/protobuf` |117| `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` | Protokoll für Logs, überschreibt die allgemeine Einstellung | `grpc`, `http/json`, `http/protobuf` |
118| `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | OTLP-Protokoll-Endpunkt, überschreibt allgemeine Einstellung | `http://localhost:4318/v1/logs` |118| `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | OTLP-Endpunkt für Logs, überschreibt die allgemeine Einstellung | `http://localhost:4318/v1/logs` |
119| `OTEL_EXPORTER_OTLP_HEADERS` | Authentifizierungs-Header für OTLP | `Authorization=Bearer token` |119| `OTEL_EXPORTER_OTLP_HEADERS` | Authentifizierungs-Header für OTLP | `Authorization=Bearer token` |
120| `OTEL_EXPORTER_OTLP_METRICS_HEADERS` | Authentifizierungs-Header für Metriken, zusammengeführt mit den allgemeinen Headern | `Authorization=Bearer token` |120| `OTEL_EXPORTER_OTLP_METRICS_HEADERS` | Authentifizierungs-Header für Metriken, zusammengeführt mit den allgemeinen Headern | `Authorization=Bearer token` |
121| `OTEL_EXPORTER_OTLP_LOGS_HEADERS` | Authentifizierungs-Header für Protokolle, zusammengeführt mit den allgemeinen Headern | `Authorization=Bearer token` |121| `OTEL_EXPORTER_OTLP_LOGS_HEADERS` | Authentifizierungs-Header für Logs, zusammengeführt mit den allgemeinen Headern | `Authorization=Bearer token` |
122| `OTEL_METRIC_EXPORT_INTERVAL` | Exportintervall in Millisekunden (Standard: 60000) | `5000`, `60000` |122| `OTEL_METRIC_EXPORT_INTERVAL` | Exportintervall in Millisekunden (Standard: 60000) | `5000`, `60000` |
123| `OTEL_LOGS_EXPORT_INTERVAL` | Protokoll-Exportintervall in Millisekunden (Standard: 5000) | `1000`, `10000` |123| `OTEL_LOGS_EXPORT_INTERVAL` | Exportintervall für Logs in Millisekunden (Standard: 5000) | `1000`, `10000` |
124| `OTEL_LOG_USER_PROMPTS` | Aktiviert Protokollierung von Benutzer-Prompt-Inhalten (Standard: deaktiviert) | `1` zum Aktivieren |124| `OTEL_LOG_USER_PROMPTS` | Aktiviert das Protokollieren des Inhalts von Benutzer-Prompts (Standard: deaktiviert) | `1` zum Aktivieren |
125| `OTEL_LOG_ASSISTANT_RESPONSES` | Aktiviert Protokollierung von Assistent-Antworttext bei `assistant_response`-Ereignissen (Standard: deaktiviert). Wenn nicht gesetzt, wird auf den Wert von `OTEL_LOG_USER_PROMPTS` zurückgegriffen | `1` zum Aktivieren, `0` zum Beibehalten von Redaktion |125| `OTEL_LOG_ASSISTANT_RESPONSES` | Aktiviert das Protokollieren des Antworttexts des Assistenten in `assistant_response`-Events (Standard: deaktiviert). Wenn nicht gesetzt, wird auf den Wert von `OTEL_LOG_USER_PROMPTS` zurückgegriffen | `1` zum Aktivieren, `0`, um geschwärzt zu belassen |
126| `OTEL_LOG_TOOL_DETAILS` | Aktiviert Protokollierung von Tool-Parametern und Eingabeargumenten in Tool-Ereignissen und Span-Attributen: Bash-Befehle, MCP-Server- und Tool-Namen, Skill-Namen, benutzerdefinierte Workflow-Namen und Tool-Eingabe. Aktiviert auch benutzerdefinierte, Plugin- und MCP-Befehlsnamen bei `user_prompt`-Ereignissen und echte Agent-, Skill-, Plugin- und MCP-Server- und Tool-Namen bei den [Kosten- und Token-Zählern](#cost-counter) (Standard: deaktiviert). Für Claudes integrierte Server in Sitzungen, die Claude Desktop besitzt, geben `mcp_server_name`/`mcp_tool_name` bei `tool_decision`/`tool_result` aus, auch wenn das Flag aus ist. Die Ausnahme erfordert Claude Code v2.1.214 oder später | `1` zum Aktivieren |126| `OTEL_LOG_TOOL_DETAILS` | Aktiviert das Protokollieren von Tool-Parametern und Eingabeargumenten in Tool-Events und Trace-Span-Attributen: Bash-Befehle, Namen von MCP-Servern und Tools, Skill-Namen, Namen benutzerdefinierter Workflows und Tool-Eingaben. Aktiviert außerdem Namen benutzerdefinierter, Plugin- und MCP-Befehle in `user_prompt`-Events sowie die tatsächlichen Namen von Agenten, Skills, Plugins, MCP-Servern und Tools in den [Kosten- und Token-Zählern](#cost-counter) (Standard: deaktiviert). Für die integrierten Server von Claude Desktop werden in Sitzungen, die Claude Desktop gehören, `mcp_server_name`/`mcp_tool_name` auch bei ausgeschaltetem Flag in `tool_decision`/`tool_result` ausgegeben. Diese Ausnahme erfordert Claude Code v2.1.214 oder höher | `1` zum Aktivieren |
127| `OTEL_LOG_TOOL_CONTENT` | Aktiviert Protokollierung von Tool-Inhalten im [`tool.output` Span-Ereignis](#tool-output-span-event) (Standard: deaktiviert). Span-Attribute tragen Tool-Inhalte unter [ihren eigenen Gates](#new-context-gates). Erfordert [Tracing](#traces-beta). Inhalte werden auf das Inhaltslimit gekürzt (Standard 60 KB) | `1` zum Aktivieren |127| `OTEL_LOG_TOOL_CONTENT` | Aktiviert das Protokollieren von Tool-Inhalten im [`tool.output`-Span-Event](#tool-output-span-event) (Standard: deaktiviert). Span-Attribute enthalten Tool-Inhalte unter [eigenen Schaltern](#new-context-gates). Erfordert [Tracing](#traces-beta). Inhalte werden am Inhaltslimit (standardmäßig 60 KB) abgeschnitten | `1` zum Aktivieren |
128| `OTEL_LOG_MANAGED_SETTINGS` | Fügt die redigierten verwalteten Einstellungen und einen SHA-256-Digest der Einstellungen vor Redaktion zu [verwaltete Einstellungen aufgelöst](#managed-settings-resolved-event)-Ereignissen hinzu (Standard: deaktiviert). Ein Wert in Projekt- oder lokalen Einstellungen schaltet dies nicht ein. Erfordert Claude Code v2.1.274 oder später | `1` zum Aktivieren |128| `OTEL_LOG_MANAGED_SETTINGS` | Fügt die geschwärzten verwalteten Einstellungen sowie einen SHA-256-Digest der Einstellungen vor der Schwärzung zu [Managed-Settings-Resolved](#managed-settings-resolved-event)-Events hinzu (Standard: deaktiviert). Ein Wert in Projekt- oder lokalen Einstellungen schaltet dies nicht ein. Erfordert Claude Code v2.1.274 oder höher | `1` zum Aktivieren |
129| `OTEL_LOG_RAW_API_BODIES` | Gibt den vollständigen Anthropic Messages API-Request und Response JSON als `api_request_body` / `api_response_body` Log-Ereignisse aus (Standard: deaktiviert). Bodies enthalten die gesamte Konversationshistorie. Das Aktivieren impliziert Zustimmung zu allem, was `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_DETAILS` und `OTEL_LOG_TOOL_CONTENT` offenbaren würden | `1` für Inline-Bodies gekürzt auf das Inhaltslimit (Standard 60 KB), oder `file:<dir>` für ungekürzte Bodies auf der Festplatte mit einem `body_ref`-Zeiger im Ereignis |129| `OTEL_LOG_RAW_API_BODIES` | Gibt das vollständige Request- und Response-JSON der Anthropic Messages API als `api_request_body`- / `api_response_body`-Log-Events aus (Standard: deaktiviert). Die Bodies enthalten den gesamten Konversationsverlauf. Die Aktivierung impliziert die Zustimmung zu allem, was `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_DETAILS` und `OTEL_LOG_TOOL_CONTENT` offenlegen würden | `1` für Inline-Bodies, die am Inhaltslimit (standardmäßig 60 KB) abgeschnitten werden, oder `file:<dir>` für nicht abgeschnittene Bodies auf der Festplatte mit einem `body_ref`-Verweis im Event |
130| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | Inhaltslimit: die maximale Länge von inhaltstragenden Attributen wie Modellresponses, Tool-Inhalten, Systemprompts und Raw API Bodies, Kürzungsmarker eingeschlossen, in UTF-16-Codeeinheiten (Standard: 61440, d.h. 60 KB). Der Standard ist für Backends ausgelegt, die Attributwerte auf 64 KB begrenzen; erhöhen Sie ihn nur, wenn Ihr Backend größere Werte akzeptiert, oder senken Sie ihn, um das Telemetrievolumen zu reduzieren. Wenn ein OpenTelemetry SDK-Attributlimit, `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` oder eine seiner Logrecord- und Span-Varianten, auf einen niedrigeren Wert gesetzt ist, kürzt Claude Code auf diesen kleineren Wert, damit der `[TRUNCATED ...]`-Marker innerhalb des SDK-Limits bleibt | `262144` |130| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | Inhaltslimit: die maximale Länge inhaltstragender Attribute wie Modellantworten, Tool-Inhalte, System-Prompts und Roh-API-Bodies, einschließlich Kürzungsmarkierung, in UTF-16-Codeeinheiten (Standard: 61440, d. h. 60 KB). Der Standardwert ist auf Backends ausgelegt, die Attributwerte auf 64 KB begrenzen; erhöhen Sie ihn nur, wenn Ihr Backend größere Werte akzeptiert, oder senken Sie ihn, um das Telemetrievolumen zu reduzieren. Wenn ein Attributlimit des OpenTelemetry SDK, `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` oder eine seiner Logrecord- und Span-Varianten, niedriger gesetzt ist, kürzt Claude Code auf diesen kleineren Wert, sodass die Markierung `[TRUNCATED ...]` innerhalb des SDK-Limits bleibt | `262144` |
131| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | Metriken-Temporalitätspräferenz (Standard: `delta`). Setzen Sie auf `cumulative`, wenn Ihr Backend kumulative Temporalität erwartet | `delta`, `cumulative` |131| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | Bevorzugte Temporalität für Metriken (Standard: `delta`). Setzen Sie den Wert auf `cumulative`, wenn Ihr Backend kumulative Temporalität erwartet | `delta`, `cumulative` |
132| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervall zum Aktualisieren dynamischer Header (Standard: 1740000ms / 29 Minuten) | `900000` |132| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervall für die Aktualisierung dynamischer Header (Standard: 1740000 ms / 29 Minuten) | `900000` |
133 133
134Für die Protokolle `http/protobuf` und `http/json` sendet Claude Code jede Exportanfrage mit einem `Content-Length`-Header.134Bei den Protokollen `http/protobuf` und `http/json` sendet Claude Code jede Exportanfrage mit einem `Content-Length`-Header.
135 135
136### mTLS-Authentifizierung136### mTLS-Authentifizierung
137 137
138Wie Sie Client-Zertifikate für den OTLP-Exporter konfigurieren, hängt vom OTLP-Protokoll ab, das für dieses Signal verwendet wird, gesetzt über `OTEL_EXPORTER_OTLP_PROTOCOL` oder die signalspezifische Überschreibung. Die gleiche Konfiguration gilt für Metriken, Protokolle und Traces.138Wie Sie Client-Zertifikate für den OTLP-Exporter konfigurieren, hängt vom OTLP-Protokoll ab, das für das jeweilige Signal verwendet wird und über `OTEL_EXPORTER_OTLP_PROTOCOL` oder die signalspezifische Überschreibung festgelegt ist. Dieselbe Konfiguration gilt für Metriken, Logs und Traces.
139 139
140| Protokoll | Client-Zertifikatvariablen | Vertrauen Sie dem Collector-CA mit |140| Protokoll | Variablen für Client-Zertifikate | CA des Collectors vertrauen mit |
141| :- | :- | :- |141| :- | :- | :- |
142| `http/protobuf`, `http/json` | `CLAUDE_CODE_CLIENT_CERT`, `CLAUDE_CODE_CLIENT_KEY` und optional `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE`. Siehe [Netzwerkkonfiguration](https://code.claude.com/docs/de/network-config.md#mtls-authentication) | `NODE_EXTRA_CA_CERTS` |142| `http/protobuf`, `http/json` | `CLAUDE_CODE_CLIENT_CERT`, `CLAUDE_CODE_CLIENT_KEY` und optional `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE`. Siehe [Netzwerkkonfiguration](https://code.claude.com/docs/de/network-config.md#mtls-authentication) | `NODE_EXTRA_CA_CERTS` |
143| `grpc` | `OTEL_EXPORTER_OTLP_CLIENT_KEY` und `OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE`, oder die signalspezifischen Varianten wie `OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY`, um ein anderes Zertifikat pro Signal zu verwenden | `OTEL_EXPORTER_OTLP_CERTIFICATE` |143| `grpc` | `OTEL_EXPORTER_OTLP_CLIENT_KEY` und `OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE` oder die signalspezifischen Varianten wie `OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY`, um pro Signal ein anderes Zertifikat zu verwenden | `OTEL_EXPORTER_OTLP_CERTIFICATE` |
144 144
145Für `grpc` liest das OpenTelemetry SDK die Standard-OTLP-Variablen direkt, daher funktionieren bestehende Konfigurationen, die die signalspezifischen Metriken-Variablen setzen, weiterhin. Auf Maschinen mit verwalteten Einstellungen kann Claude Code [entwickler-gesetzte signalspezifische Anmeldedaten und Endpunkte beim Start entfernen](#how-managed-settings-lock-the-otlp-destination).145Bei `grpc` liest das OpenTelemetry SDK die Standard-OTLP-Variablen direkt, sodass bestehende Konfigurationen, die die signalspezifischen Metrikvariablen setzen, weiterhin funktionieren. Auf Rechnern mit verwalteten Einstellungen [entfernt Claude Code beim Start möglicherweise von Entwicklern gesetzte signalspezifische Anmeldedaten und Endpunkte](#how-managed-settings-lock-the-otlp-destination).
146 146
147### Metriken-Kardinalitätskontrolle147### Steuerung der Metrik-Kardinalität
148 148
149Die folgenden Umgebungsvariablen steuern, welche Attribute in Metriken enthalten sind, um die Kardinalität zu verwalten:149Die folgenden Umgebungsvariablen steuern, welche Attribute in Metriken enthalten sind, um die Kardinalität zu steuern:
150 150
151| Umgebungsvariable | Beschreibung | Standardwert | Beispiel zum Deaktivieren |151| Umgebungsvariable | Beschreibung | Standardwert | Beispiel zum Deaktivieren |
152| - | - | - | - |152| - | - | - | - |
153| `OTEL_METRICS_INCLUDE_SESSION_ID` | Schließt session.id und bei Cloud-Sitzungen ccr.session.id-Attribute in Metriken ein | `true` | `false` |153| `OTEL_METRICS_INCLUDE_SESSION_ID` | session.id- und bei Cloud-Sitzungen ccr.session.id-Attribute in Metriken aufnehmen | `true` | `false` |
154| `OTEL_METRICS_INCLUDE_VERSION` | Schließt app.version-Attribut in Metriken ein | `false` | `true` |154| `OTEL_METRICS_INCLUDE_VERSION` | app.version-Attribut in Metriken aufnehmen | `false` | `true` |
155| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Schließt user.account\_uuid und user.account\_id-Attribute in Metriken ein | `true` | `false` |155| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | user.account\_uuid- und user.account\_id-Attribute in Metriken aufnehmen | `true` | `false` |
156| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Schließt app.entrypoint-Attribut in Metriken ein | `false` | `true` |156| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | app.entrypoint-Attribut in Metriken aufnehmen | `false` | `true` |
157| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | Schließt Schlüssel aus `OTEL_RESOURCE_ATTRIBUTES` als Attribute auf Metrik-Datenpunkten ein | `true` | `false` |157| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | Schlüssel aus `OTEL_RESOURCE_ATTRIBUTES` als Attribute an Metrik-Datenpunkten aufnehmen | `true` | `false` |
158| `OTEL_METRICS_INCLUDE_REPOSITORY` | Schließt `vcs.*` [Repository-Identitätsattribute](#repository-attributes) auf Metriken und Ereignissen ein. Erfordert Claude Code v2.1.269 oder später | `false` | `true` |158| `OTEL_METRICS_INCLUDE_REPOSITORY` | `vcs.*`-[Attribute zur Repository-Identität](#repository-attributes) in Metriken und Events aufnehmen. Erfordert Claude Code v2.1.269 oder höher | `false` | `true` |
159 159
160Niedrigere Kardinalität bedeutet im Allgemeinen bessere Leistung und niedrigere Speicherkosten, aber weniger granulare Daten für die Analyse.160Eine geringere Kardinalität bedeutet in der Regel bessere Performance und niedrigere Speicherkosten, aber weniger granulare Daten für die Analyse.
161 161
162### Traces (Beta)162### Traces (Beta)
163 163
164Verteiltes Tracing exportiert Spans, die jeden Benutzer-Prompt mit den API-Anfragen und Tool-Ausführungen verknüpfen, die er auslöst, damit Sie eine vollständige Anfrage als einzelnen Trace in Ihrem Tracing-Backend anzeigen können.164Verteiltes Tracing exportiert Spans, die jeden Benutzer-Prompt mit den API-Anfragen und Tool-Ausführungen verknüpfen, die er auslöst, sodass Sie eine vollständige Anfrage als einzelnen Trace in Ihrem Tracing-Backend betrachten können.
165 165
166Tracing ist standardmäßig deaktiviert. Um es zu aktivieren, setzen Sie sowohl `CLAUDE_CODE_ENABLE_TELEMETRY=1` als auch `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1`, dann setzen Sie `OTEL_TRACES_EXPORTER`, um zu wählen, wohin Spans gesendet werden. Traces verwenden die [allgemeine OTLP-Konfiguration](#common-configuration-variables) für Endpunkt, Protokoll, Header und [mTLS](#mtls-authentication) wieder. Auf Maschinen mit verwalteten Einstellungen kann Claude Code [entwickler-gesetzte signalspezifische Anmeldedaten und Endpunkte beim Start entfernen](#how-managed-settings-lock-the-otlp-destination).166Tracing ist standardmäßig deaktiviert. Um es zu aktivieren, setzen Sie sowohl `CLAUDE_CODE_ENABLE_TELEMETRY=1` als auch `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` und setzen dann `OTEL_TRACES_EXPORTER`, um festzulegen, wohin Spans gesendet werden. Traces verwenden die [allgemeine OTLP-Konfiguration](#common-configuration-variables) für Endpunkt, Protokoll, Header und [mTLS](#mtls-authentication). Auf Rechnern mit verwalteten Einstellungen [entfernt Claude Code beim Start möglicherweise von Entwicklern gesetzte signalspezifische Anmeldedaten und Endpunkte](#how-managed-settings-lock-the-otlp-destination).
167 167
168| Umgebungsvariable | Beschreibung | Beispielwerte |168| Umgebungsvariable | Beschreibung | Beispielwerte |
169| - | - | - |169| - | - | - |
170| `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` | Aktiviert Span-Tracing (erforderlich). `ENABLE_ENHANCED_TELEMETRY_BETA` wird auch akzeptiert | `1` |170| `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` | Aktiviert Span-Tracing (erforderlich). `ENABLE_ENHANCED_TELEMETRY_BETA` wird ebenfalls akzeptiert | `1` |
171| `OTEL_TRACES_EXPORTER` | Traces-Exporter-Typen, kommagetrennt. Verwenden Sie `none` zum Deaktivieren | `console`, `otlp`, `none` |171| `OTEL_TRACES_EXPORTER` | Trace-Exporter-Typen, durch Kommas getrennt. Verwenden Sie `none` zum Deaktivieren | `console`, `otlp`, `none` |
172| `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` | Protokoll für Traces, überschreibt `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc`, `http/json`, `http/protobuf` |172| `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` | Protokoll für Traces, überschreibt `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc`, `http/json`, `http/protobuf` |
173| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | OTLP-Traces-Endpunkt, überschreibt `OTEL_EXPORTER_OTLP_ENDPOINT` | `http://localhost:4318/v1/traces` |173| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | OTLP-Endpunkt für Traces, überschreibt `OTEL_EXPORTER_OTLP_ENDPOINT` | `http://localhost:4318/v1/traces` |
174| `OTEL_EXPORTER_OTLP_TRACES_HEADERS` | Authentifizierungs-Header für Traces, zusammengeführt mit `OTEL_EXPORTER_OTLP_HEADERS` | `Authorization=Bearer token` |174| `OTEL_EXPORTER_OTLP_TRACES_HEADERS` | Authentifizierungs-Header für Traces, zusammengeführt mit `OTEL_EXPORTER_OTLP_HEADERS` | `Authorization=Bearer token` |
175| `OTEL_TRACES_EXPORT_INTERVAL` | Span-Batch-Exportintervall in Millisekunden (Standard: 5000) | `1000`, `10000` |175| `OTEL_TRACES_EXPORT_INTERVAL` | Exportintervall für Span-Batches in Millisekunden (Standard: 5000) | `1000`, `10000` |
176 176
177Spans redigieren standardmäßig Benutzer-Prompt-Text, Tool-Eingabedetails und Tool-Inhalte. Setzen Sie `OTEL_LOG_USER_PROMPTS=1`, `OTEL_LOG_TOOL_DETAILS=1` und `OTEL_LOG_TOOL_CONTENT=1`, um diese einzuschließen.177Spans schwärzen standardmäßig den Text von Benutzer-Prompts, Details zu Tool-Eingaben und Tool-Inhalte. Setzen Sie `OTEL_LOG_USER_PROMPTS=1`, `OTEL_LOG_TOOL_DETAILS=1` und `OTEL_LOG_TOOL_CONTENT=1`, um diese aufzunehmen.
178 178
179Wenn Tracing aktiv ist, erben Bash- und PowerShell-Subprozesse automatisch eine `TRACEPARENT`-Umgebungsvariable, die den W3C-Trace-Kontext des aktiven Tool-Ausführungs-Spans enthält. Dies ermöglicht jedem Subprozess, der `TRACEPARENT` liest, seine eigenen Spans unter demselben Trace zu platzieren, was End-to-End-verteiltes Tracing durch Scripts und Befehle ermöglicht, die Claude ausführt.179Wenn Tracing aktiv ist, erben Bash- und PowerShell-Unterprozesse automatisch eine Umgebungsvariable `TRACEPARENT`, die den W3C-Trace-Kontext des aktiven Tool-Ausführungs-Spans enthält. Dadurch kann jeder Unterprozess, der `TRACEPARENT` liest, seine eigenen Spans unter demselben Trace einhängen, was durchgängiges verteiltes Tracing durch Skripte und Befehle ermöglicht, die Claude ausführt.
180 180
181Wenn Tracing aktiv ist und Claude Code direkt mit der Anthropic API verbunden ist, trägt jede Modellanfrage einen W3C-`traceparent`-Header, der auf den Kontext des `claude_code.llm_request`-Spans gesetzt ist, und der `traceresponse`-Header der API wird als Span-Link aufgezeichnet. Zusammen verbinden diese Claude Codes clientseitige Spans mit dem serverseitigen Trace durch jeden konformen Vermittler. Ausgehende HTTP-MCP-Anfragen tragen `traceparent` auf die gleiche Weise. Der Header wird nicht an Drittanbieter gesendet.181Wenn Tracing aktiv ist und Claude Code direkt mit der Anthropic API verbunden ist, enthält jede Modellanfrage einen W3C-`traceparent`-Header, der auf den Kontext des `claude_code.llm_request`-Spans gesetzt ist, und der `traceresponse`-Header der API wird als Span-Link erfasst. Zusammen verbinden diese die clientseitigen Spans von Claude Code über jeden konformen Vermittler mit dem serverseitigen Trace. Ausgehende HTTP-MCP-Anfragen enthalten `traceparent` auf dieselbe Weise. Der Header wird nicht an Drittanbieter gesendet.
182 182
183Standardmäßig wird der `traceparent`-Header bei Modell- und HTTP-MCP-Anfragen nur gesendet, wenn `ANTHROPIC_BASE_URL` nicht gesetzt ist oder auf die Anthropic API verweist, da einige Proxys unbekannte Header ablehnen. Die Subprocess-`TRACEPARENT`-Variable wird aus Konsistenzgründen durch denselben Schalter gesteuert. Wenn Sie Claude Code durch einen benutzerdefinierten `ANTHROPIC_BASE_URL`-Proxy ausführen und Trace-Kontext propagieren möchten, setzen Sie `CLAUDE_CODE_PROPAGATE_TRACEPARENT=1`.183Standardmäßig wird der `traceparent`-Header bei Modell- und HTTP-MCP-Anfragen nur gesendet, wenn `ANTHROPIC_BASE_URL` nicht gesetzt ist oder auf die Anthropic API verweist, da manche Proxys unbekannte Header ablehnen. Die Unterprozess-Variable `TRACEPARENT` wird aus Konsistenzgründen über denselben Schalter gesteuert. Wenn Sie Claude Code über einen benutzerdefinierten `ANTHROPIC_BASE_URL`-Proxy betreiben und möchten, dass der Trace-Kontext weitergegeben wird, setzen Sie `CLAUDE_CODE_PROPAGATE_TRACEPARENT=1`.
184 184
185In Agent SDK und nicht-interaktiven Sitzungen, die mit `-p` gestartet werden, liest Claude Code auch `TRACEPARENT` und `TRACESTATE` aus seiner eigenen Umgebung, wenn es jeden Interaktions-Span startet. Dies ermöglicht einem Einbettungsprozess, seinen aktiven W3C-Trace-Kontext in den Subprozess zu übergeben, damit Claude Codes Spans als Kinder des Aufrufers verteilter Trace erscheinen. Interaktive Sitzungen ignorieren eingehende `TRACEPARENT`, um zu vermeiden, dass versehentlich Umgebungswerte von CI oder Container-Umgebungen geerbt werden.185In Agent-SDK- und nicht-interaktiven Sitzungen, die mit `-p` gestartet werden, liest Claude Code beim Start jedes Interaktions-Spans außerdem `TRACEPARENT` und `TRACESTATE` aus seiner eigenen Umgebung. Dadurch kann ein einbettender Prozess seinen aktiven W3C-Trace-Kontext an den Unterprozess übergeben, sodass die Spans von Claude Code als Kinder des verteilten Traces des Aufrufers erscheinen. Interaktive Sitzungen ignorieren eingehende `TRACEPARENT`-Werte, um zu vermeiden, dass versehentlich Umgebungswerte aus CI- oder Container-Umgebungen übernommen werden.
186 186
187Der eingehende Trace-Kontext gilt auch für [Ereignisse](#events). In Agent SDK und `-p`-Sitzungen mit gesetztem `TRACEPARENT` trägt jeder OTLP-Ereignis-Log-Record `trace_id` und `span_id`-Werte, die ihn mit Ihrem Anwendungs-Trace verbinden, auch wenn der Traces-Exporter nicht konfiguriert ist, damit Ihr Logging-Backend Ereignisse mit dem Rest des Traces korrelieren kann.187Der eingehende Trace-Kontext gilt auch für [Events](#events). In Agent-SDK- und `-p`-Sitzungen mit gesetztem `TRACEPARENT` enthält jeder OTLP-Event-Log-Eintrag `trace_id`- und `span_id`-Werte, die ihn mit dem Trace Ihrer Anwendung verbinden, auch wenn der Trace-Exporter nicht konfiguriert ist, sodass Ihr Logging-Backend Events mit dem Rest des Traces korrelieren kann.
188 188
189Ein Record, der ausgegeben wird, während eine Interaktion aktiv ist, trägt die IDs des Interaktions-Spans, auch wenn Claude Code ihn außerhalb des asynchronen Kontexts des Spans ausgibt, z.B. in einem Berechtigungsprompt-Callback oder für einen Record, der während des Starts gepuffert und später exportiert wird. Ein Record, der ohne aktiven Interaktions-Span ausgegeben wird, trägt die eingehenden `TRACEPARENT`-IDs direkt.189Ein Eintrag, der ausgegeben wird, während eine Interaktion aktiv ist, enthält die IDs des Interaktions-Spans, selbst wenn Claude Code ihn außerhalb des asynchronen Kontexts des Spans ausgibt, etwa in einem Callback einer Berechtigungsabfrage oder bei einem Eintrag, der während des Starts gepuffert und später exportiert wird. Ein Eintrag, der ohne aktiven Interaktions-Span ausgegeben wird, enthält direkt die IDs aus dem eingehenden `TRACEPARENT`.
190 190
191#### Span-Hierarchie191#### Span-Hierarchie
192 192
193Jeder Benutzer-Prompt startet einen `claude_code.interaction`-Root-Span. API-Aufrufe, Tool-Aufrufe und Hook-Ausführungen werden als seine Kinder aufgezeichnet. Tool-Spans haben zwei untergeordnete Spans: einen für die Zeit, die auf eine Berechtigungsentscheidung gewartet wird, und einen für die Ausführung selbst. Wenn das Agent-Tool oder das Legacy-Task-Tool einen Subagenten spawnt, verschachteln sich die API- und Tool-Spans des Subagenten unter dem `claude_code.tool`-Span des Elternteils.193Jeder Benutzer-Prompt startet einen Root-Span `claude_code.interaction`. API-Aufrufe, Tool-Aufrufe und Hook-Ausführungen werden als dessen Kinder erfasst. Tool-Spans haben ihrerseits zwei Kind-Spans: einen für die Wartezeit auf eine Berechtigungsentscheidung und einen für die eigentliche Ausführung. Wenn das Agent-Tool oder das ältere Task-Tool einen Subagenten startet, werden die API- und Tool-Spans des Subagenten unter dem `claude_code.tool`-Span des übergeordneten Agenten verschachtelt.
194 194
195```text theme={null}195```text theme={null}
196claude_code.interaction196claude_code.interaction
202 └── (Agent tool) subagent claude_code.llm_request / claude_code.tool spans202 └── (Agent tool) subagent claude_code.llm_request / claude_code.tool spans
203```203```
204 204
205In Agent SDK und `claude -p`-Sitzungen wird `claude_code.interaction` selbst ein Kind des Aufrufers-Spans, wenn `TRACEPARENT` in der Umgebung gesetzt ist.205In Agent-SDK- und `claude -p`-Sitzungen wird `claude_code.interaction` selbst zum Kind des Spans des Aufrufers, wenn `TRACEPARENT` in der Umgebung gesetzt ist.
206 206
207Wenn ein `PreToolUse`-Hook [einen Tool-Aufruf aufschiebt](https://code.claude.com/docs/de/hooks.md#defer-a-tool-call-for-later), speichert Claude Code den Trace-Kontext des Turns, der ihn aufgeschoben hat. Wenn Sie die Sitzung fortsetzen und das Tool erneut ausgeführt wird, verbinden sich die Spans des Tools mit dem früheren Turn-Trace als Kinder des `claude_code.interaction`-Spans des Turns.207Wenn ein `PreToolUse`-Hook [einen Tool-Aufruf zurückstellt](https://code.claude.com/docs/de/hooks.md#defer-a-tool-call-for-later), speichert Claude Code den Trace-Kontext des Turns, der ihn zurückgestellt hat. Wenn Sie die Sitzung fortsetzen und das Tool erneut ausgeführt wird, werden die Spans des Tools als Kinder des `claude_code.interaction`-Spans dieses früheren Turns in dessen Trace eingefügt.
208 208
209#### Span-Attribute209#### Span-Attribute
210 210
211Jeder Span trägt die [Standard-Attribute](#standard-attributes) plus ein `span.type`-Attribut, das seinem Namen entspricht. Die folgenden Tabellen listen die zusätzlichen Attribute auf, die auf jedem Span gesetzt sind. Die `llm_request`-, `tool.execution`- und `hook`-Spans setzen OpenTelemetry-Status `ERROR`, wenn sie einen Fehler aufzeichnen; die anderen Spans enden immer mit Status `UNSET`.211Jeder Span enthält die [Standardattribute](#standard-attributes) sowie ein `span.type`-Attribut, das seinem Namen entspricht. Die folgenden Tabellen listen die zusätzlichen Attribute auf, die für jeden Span gesetzt werden. Die Spans `llm_request`, `tool.execution` und `hook` setzen den OpenTelemetry-Status `ERROR`, wenn sie einen Fehler erfassen; die anderen Spans enden immer mit dem Status `UNSET`.
212 212
213**`claude_code.interaction`**213**`claude_code.interaction`**
214 214
215| Attribut | Beschreibung | Gated by |215| Attribut | Beschreibung | Geschaltet durch |
216| - | - | - |216| - | - | - |
217| `user_prompt` | Prompt-Text. Der Wert ist `<REDACTED>`, es sei denn, das Gate ist gesetzt | `OTEL_LOG_USER_PROMPTS` |217| `user_prompt` | Prompt-Text. Der Wert ist `<REDACTED>`, sofern der Schalter nicht gesetzt ist | `OTEL_LOG_USER_PROMPTS` |
218| `user_prompt_length` | Prompt-Länge in Zeichen | |218| `user_prompt_length` | Prompt-Länge in Zeichen | |
219| `interaction.sequence` | 1-basierter Zähler von Interaktionen, gezählt pro Claude Code-Prozess statt pro Sitzung, wie für [`event.sequence`](#event-correlation-attributes) beschrieben | |219| `interaction.sequence` | 1-basierter Zähler der Interaktionen, gezählt pro Claude-Code-Prozess statt pro Sitzung, wie für [`event.sequence`](#event-correlation-attributes) beschrieben | |
220| `parent.source` | Wie der Span seinen Trace-Parent bekam: `env`, wenn er unter einem eingehenden `TRACEPARENT` übergeordnet war, `none`, wenn er seine eigene Trace startete. Erfordert Claude Code v2.1.268 oder später | |220| `parent.source` | Wie der Span seinen Trace-Parent erhalten hat: `env`, wenn er unter einem eingehenden `TRACEPARENT` eingehängt wurde, `none`, wenn er einen eigenen Trace gestartet hat. Erfordert Claude Code v2.1.268 oder höher | |
221| `interaction.duration_ms` | Wanduhr-Dauer des Turns | |221| `interaction.duration_ms` | Tatsächliche Dauer des Turns | |
222 222
223**`claude_code.llm_request`**223**`claude_code.llm_request`**
224 224
225| Attribut | Beschreibung | Gated by |225| Attribut | Beschreibung | Geschaltet durch |
226| - | - | - |226| - | - | - |
227| `model` | Modellkennung | |227| `model` | Modellbezeichner | |
228| `gen_ai.system` | Immer `anthropic`. OpenTelemetry GenAI-Semantik-Konvention | |228| `gen_ai.system` | Immer `anthropic`. Semantische Konvention von OpenTelemetry GenAI | |
229| `gen_ai.request.model` | Gleicher Wert wie `model`. OpenTelemetry GenAI-Semantik-Konvention | |229| `gen_ai.request.model` | Gleicher Wert wie `model`. Semantische Konvention von OpenTelemetry GenAI | |
230| `query_source` | Subsystem, das die Anfrage ausgestellt hat, z.B. `repl_main_thread` oder ein Subagenten-Name | `ENABLE_BETA_TRACING_DETAILED` |230| `query_source` | Subsystem, das die Anfrage ausgelöst hat, etwa `repl_main_thread` oder ein Subagentenname | `ENABLE_BETA_TRACING_DETAILED` |
231| `query_source_safe` | Begrenzte Form von `query_source`, ausgegeben, ob detailliertes Beta-Tracing aktiv ist oder nicht, mit Werten wie `repl_main_thread` oder `agent.builtin.general-purpose`. `:` wird zu `.` und benutzerdefinierte Agenten erscheinen als `agent.custom`. Erfordert Claude Code v2.1.268 oder später | |231| `query_source_safe` | Begrenzte Form von `query_source`, die unabhängig davon ausgegeben wird, ob detailliertes Beta-Tracing aktiv ist, mit Werten wie `repl_main_thread` oder `agent.builtin.general-purpose`. `:` wird zu `.`, und vom Benutzer benannte Agenten erscheinen als `agent.custom`. Erfordert Claude Code v2.1.268 oder höher | |
232| `agent_id` | Kennung des Subagenten oder Teamkollegen, der die Anfrage ausgestellt hat. Fehlt bei der Hauptsitzung | |232| `agent_id` | Bezeichner des Subagenten oder Teammitglieds, das die Anfrage ausgelöst hat. Fehlt in der Hauptsitzung | |
233| `parent_agent_id` | Kennung des Agenten, der diesen spawnt hat. Fehlt bei der Hauptsitzung und für Agenten, die direkt von ihr spawnt wurden | |233| `parent_agent_id` | Bezeichner des Agenten, der diesen gestartet hat. Fehlt bei der Hauptsitzung und bei Agenten, die direkt von ihr gestartet wurden | |
234| `workflow.run_id` | Run-Kennung des [Workflow](https://code.claude.com/docs/de/workflows.md)-Tool-Runs, der diesen Agenten spawnt hat, mit Präfix `wf_`. Fehlt für Agenten, die nicht von einem Workflow spawnt wurden | |234| `workflow.run_id` | Ausführungsbezeichner des [Workflow](https://code.claude.com/docs/de/workflows.md)-Tool-Laufs, der diesen Agenten gestartet hat, mit dem Präfix `wf_`. Fehlt bei Agenten, die nicht von einem Workflow gestartet wurden | |
235| `workflow.name` | Name des Workflows, der diesen Agenten spawnt hat. Benutzerdefinierte Namen werden durch `custom` ersetzt, es sei denn, das Gate ist gesetzt | `OTEL_LOG_TOOL_DETAILS` |235| `workflow.name` | Name des Workflows, der diesen Agenten gestartet hat. Benutzerdefinierte Namen werden durch `custom` ersetzt, sofern der Schalter nicht gesetzt ist | `OTEL_LOG_TOOL_DETAILS` |
236| `speed` | `fast` oder `normal` | |236| `speed` | `fast` oder `normal` | |
237| `effort` | [Anstrengungsstufe](https://code.claude.com/docs/de/model-config.md#adjust-effort-level), die auf die Anfrage angewendet wird: `low`, `medium`, `high`, `xhigh` oder `max`. Fehlt, wenn Claude Code keine Anstrengungsstufe sendet, z.B. bei einem Modell, das Anstrengung nicht unterstützt. Erfordert Claude Code v2.1.274 oder später | |237| `effort` | Auf die Anfrage angewendete [Effort-Stufe](https://code.claude.com/docs/de/model-config.md#adjust-effort-level): `low`, `medium`, `high`, `xhigh` oder `max`. Fehlt, wenn Claude Code keine Effort-Stufe sendet, zum Beispiel bei einem Modell, das Effort nicht unterstützt. Erfordert Claude Code v2.1.274 oder höher | |
238| `llm_request.context` | `interaction`, `tool` oder `standalone` je nach übergeordnetem Span | |238| `llm_request.context` | `interaction`, `tool` oder `standalone`, je nach übergeordnetem Span | |
239| `duration_ms` | Wanduhr-Dauer einschließlich Wiederholungen | |239| `duration_ms` | Tatsächliche Dauer einschließlich Wiederholungsversuchen | |
240| `ttft_ms` | Zeit bis zum ersten Token in Millisekunden | |240| `ttft_ms` | Zeit bis zum ersten Token in Millisekunden | |
241| `first_content_ms` | Zeit vom Anfrageanfang bis zum ersten Inhaltsblock des erfolgreichen Versuchs in Millisekunden. Fehlt bei Anfragen, die auf den nicht-Streaming-Pfad zurückfielen. Erfordert Claude Code v2.1.268 oder später | |241| `first_content_ms` | Zeit vom Start der Anfrage bis zum ersten Inhaltsblock des erfolgreichen Versuchs, in Millisekunden. Fehlt bei Anfragen, die auf den Nicht-Streaming-Pfad zurückgefallen sind. Erfordert Claude Code v2.1.268 oder höher | |
242| `input_tokens` | Eingabe-Token-Anzahl aus dem API-Nutzungsblock. Schließt Token aus, die aus dem Prompt-Cache gelesen oder in ihn geschrieben wurden; diese werden in `cache_read_tokens` und `cache_creation_tokens` gemeldet | |242| `input_tokens` | Anzahl der Eingabe-Token aus dem Usage-Block der API. Schließt Token aus, die aus dem Prompt-Cache gelesen oder in ihn geschrieben wurden; diese werden in `cache_read_tokens` und `cache_creation_tokens` angegeben | |
243| `output_tokens` | Ausgabe-Token-Anzahl | |243| `output_tokens` | Anzahl der Ausgabe-Token | |
244| `cache_read_tokens` | Aus Prompt-Cache gelesene Tokens | |244| `cache_read_tokens` | Aus dem Prompt-Cache gelesene Token | |
245| `cache_creation_tokens` | In Prompt-Cache geschriebene Tokens | |245| `cache_creation_tokens` | In den Prompt-Cache geschriebene Token | |
246| `request_id` | API-Request-ID. Gleicher Wert wie das `request_id` [Ereignis-Korrelationsattribut](#event-correlation-attributes) | |246| `request_id` | API-Anfrage-ID. Gleicher Wert wie das [Event-Korrelationsattribut](#event-correlation-attributes) `request_id` | |
247| `gen_ai.response.id` | Gleicher Wert wie `request_id`. OpenTelemetry GenAI-Semantik-Konvention | |247| `gen_ai.response.id` | Gleicher Wert wie `request_id`. Semantische Konvention von OpenTelemetry GenAI | |
248| `client_request_id` | Client-generierte `x-client-request-id` des letzten Versuchs | |248| `client_request_id` | Vom Client generierte `x-client-request-id` des letzten Versuchs | |
249| `attempt` | Gesamtzahl der Versuche für diese Anfrage | |249| `attempt` | Gesamtzahl der Versuche für diese Anfrage | |
250| `success` | `true` oder `false` | |250| `success` | `true` oder `false` | |
251| `status_code` | HTTP-Statuscode, wenn die Anfrage fehlgeschlagen ist | |251| `status_code` | HTTP-Statuscode, wenn die Anfrage fehlgeschlagen ist | |
252| `error` | Fehlermeldung, wenn die Anfrage fehlgeschlagen ist | |252| `error` | Fehlermeldung, wenn die Anfrage fehlgeschlagen ist | |
253| `error_class` | Kurzes Fehlerklassen-Token, wenn die Anfrage fehlgeschlagen ist, z.B. `api_timeout` oder `server_overload`. Erfordert Claude Code v2.1.268 oder später | |253| `error_class` | Kurzes Fehlerklassen-Token, wenn die Anfrage fehlgeschlagen ist, etwa `api_timeout` oder `server_overload`. Erfordert Claude Code v2.1.268 oder höher | |
254| `response.has_tool_call` | `true`, wenn die Response Tool-Use-Blöcke enthielt | |254| `response.has_tool_call` | `true`, wenn die Antwort Tool-Use-Blöcke enthielt | |
255| `stop_reason` | API-Response `stop_reason`, z.B. `end_turn`, `tool_use`, `max_tokens`, `stop_sequence`, `pause_turn` oder `refusal` | |255| `stop_reason` | `stop_reason` der API-Antwort, etwa `end_turn`, `tool_use`, `max_tokens`, `stop_sequence`, `pause_turn` oder `refusal` | |
256| `gen_ai.response.finish_reasons` | Gleicher Wert wie `stop_reason`, in einem String-Array verpackt. OpenTelemetry GenAI-Semantik-Konvention | |256| `gen_ai.response.finish_reasons` | Gleicher Wert wie `stop_reason`, in ein String-Array verpackt. Semantische Konvention von OpenTelemetry GenAI | |
257 257
258Jeder Wiederholungsversuch wird auch als `gen_ai.request.attempt` Span-Ereignis mit `attempt` und `client_request_id`-Attributen aufgezeichnet.258Jeder Wiederholungsversuch wird außerdem als Span-Event `gen_ai.request.attempt` mit den Attributen `attempt` und `client_request_id` erfasst.
259 259
260**`claude_code.tool`**260**`claude_code.tool`**
261 261
262| Attribut | Beschreibung | Gated by |262| Attribut | Beschreibung | Geschaltet durch |
263| - | - | - |263| - | - | - |
264| `tool_name` | Tool-Name | |264| `tool_name` | Tool-Name | |
265| `tool_name_safe` | Form von `tool_name`, die keine benutzerdefinierte Namen trägt. Integrierte Tool-Namen werden wörtlich weitergegeben. MCP-Tool-Namen erscheinen als `mcp_other`, außer Tool-Namen, die bestimmte feste Formen entsprechen, wie `playwright`-Tools mit Namen `browser_*`, die wörtlich weitergegeben werden. Erfordert Claude Code v2.1.268 oder später | |265| `tool_name_safe` | Form von `tool_name`, die keine vom Benutzer gewählten Namen enthält. Namen integrierter Tools werden unverändert übernommen. MCP-Tool-Namen erscheinen als `mcp_other`, außer Tool-Namen, die einigen festen Mustern entsprechen, etwa `playwright`-Tools mit dem Namen `browser_*`, die unverändert übernommen werden. Erfordert Claude Code v2.1.268 oder höher | |
266| `bash_command_class` | Für das Bash-Tool: Kategorie des ersten Programms des Befehls aus einer festen Liste, z.B. `vcs` oder `package_manager`. `other` für ein Programm außerhalb der Liste, `unparsed`, wenn die Zeile nicht geparst werden kann. Erfordert Claude Code v2.1.268 oder später | |266| `bash_command_class` | Für das Bash-Tool: Kategorie des ersten Programms des Befehls aus einer festen Liste, etwa `vcs` oder `package_manager`. `other` für ein Programm außerhalb der Liste, `unparsed`, wenn die Zeile nicht geparst werden kann. Erfordert Claude Code v2.1.268 oder höher | |
267| `bash_argv0` | Für das Bash-Tool: das erste Programm des Befehls, wenn es auf der gleichen festen Liste ist, z.B. `git` oder `npm`. `other` für jedes Programm außerhalb der Liste. Erfordert Claude Code v2.1.268 oder später | |267| `bash_argv0` | Für das Bash-Tool: das erste Programm des Befehls, wenn es auf derselben festen Liste steht, etwa `git` oder `npm`. `other` für jedes Programm außerhalb der Liste. Erfordert Claude Code v2.1.268 oder höher | |
268| `duration_ms` | Wanduhr-Dauer einschließlich Berechtigungswartung und Ausführung | |268| `duration_ms` | Tatsächliche Dauer einschließlich Wartezeit auf Berechtigung und Ausführung | |
269| `result_tokens` | Ungefähre Token-Größe des Tool-Ergebnisses | |269| `result_tokens` | Ungefähre Token-Größe des Tool-Ergebnisses | |
270| `agent_id` | Kennung des Subagenten oder Teamkollegen, der das Tool ausgeführt hat. Fehlt bei der Hauptsitzung | |270| `agent_id` | Bezeichner des Subagenten oder Teammitglieds, das das Tool ausgeführt hat. Fehlt in der Hauptsitzung | |
271| `parent_agent_id` | Kennung des Agenten, der diesen spawnt hat. Fehlt bei der Hauptsitzung und für Agenten, die direkt von ihr spawnt wurden | |271| `parent_agent_id` | Bezeichner des Agenten, der diesen gestartet hat. Fehlt bei der Hauptsitzung und bei Agenten, die direkt von ihr gestartet wurden | |
272| `workflow.run_id` | Run-Kennung des Workflow-Tool-Runs, der diesen Agenten spawnt hat, mit Präfix `wf_`. Fehlt für Agenten, die nicht von einem Workflow spawnt wurden | |272| `workflow.run_id` | Ausführungsbezeichner des Workflow-Tool-Laufs, der diesen Agenten gestartet hat, mit dem Präfix `wf_`. Fehlt bei Agenten, die nicht von einem Workflow gestartet wurden | |
273| `workflow.name` | Name des Workflows, der diesen Agenten spawnt hat. Benutzerdefinierte Namen werden durch `custom` ersetzt, es sei denn, das Gate ist gesetzt | `OTEL_LOG_TOOL_DETAILS` |273| `workflow.name` | Name des Workflows, der diesen Agenten gestartet hat. Benutzerdefinierte Namen werden durch `custom` ersetzt, sofern der Schalter nicht gesetzt ist | `OTEL_LOG_TOOL_DETAILS` |
274| `tool_use_id` | Die Modell-`tool_use`-Block-ID für diesen Aufruf. Entspricht der `tool_use_id` bei den [tool\_result](#tool-result-event) und [tool\_decision](#tool-decision-event)-Ereignissen und in Hook-Payloads, damit Sie den Span mit diesen Records verbinden können | |274| `tool_use_id` | Die `tool_use`-Block-ID des Modells für diesen Aufruf. Entspricht der `tool_use_id` in den Events [tool\_result](#tool-result-event) und [tool\_decision](#tool-decision-event) sowie in Hook-Payloads, sodass Sie den Span mit diesen Einträgen verknüpfen können | |
275| `gen_ai.tool.call.id` | Gleicher Wert wie `tool_use_id`. OpenTelemetry GenAI-Semantik-Konvention | |275| `gen_ai.tool.call.id` | Gleicher Wert wie `tool_use_id`. Semantische Konvention von OpenTelemetry GenAI | |
276| `file_path` | Zieldateipfad für Read-, Edit- und Write-Tools | `OTEL_LOG_TOOL_DETAILS` |276| `file_path` | Zieldateipfad für die Tools Read, Edit und Write | `OTEL_LOG_TOOL_DETAILS` |
277| `full_command` | Befehlsstring für das Bash-Tool | `OTEL_LOG_TOOL_DETAILS` |277| `full_command` | Befehlszeichenfolge für das Bash-Tool | `OTEL_LOG_TOOL_DETAILS` |
278| `skill_name` | Skill-Name für das Skill-Tool | `OTEL_LOG_TOOL_DETAILS` |278| `skill_name` | Skill-Name für das Skill-Tool | `OTEL_LOG_TOOL_DETAILS` |
279| `subagent_type` | Subagenten-Typ für das Agent-Tool oder Legacy-Task-Tool | `OTEL_LOG_TOOL_DETAILS` |279| `subagent_type` | Subagententyp für das Agent-Tool oder das ältere Task-Tool | `OTEL_LOG_TOOL_DETAILS` |
280 280
281**`tool.output` Span-Ereignis auf `claude_code.tool`**281**Span-Event `tool.output` auf `claude_code.tool`**
282 282
283Wenn Sie `OTEL_LOG_TOOL_CONTENT=1` setzen, können Read- und Bash-Aufrufe ein `tool.output` Span-Ereignis auf dem `claude_code.tool` Span aufzeichnen. Edit- und Write-Aufrufe zeichnen eines nur auf, wenn Sie auch `OTEL_LOG_TOOL_DETAILS=1` setzen. Diese Variable ist nicht auf diese beiden Tools beschränkt, daher überprüfen Sie ihre [Zeile in der Konfigurationstabelle](#common-configuration-variables) für die Argumente, die sie an anderer Stelle hinzufügt.283Wenn Sie `OTEL_LOG_TOOL_CONTENT=1` setzen, können Read- und Bash-Aufrufe ein Span-Event `tool.output` auf dem `claude_code.tool`-Span erfassen. Edit- und Write-Aufrufe erfassen eines nur, wenn Sie zusätzlich `OTEL_LOG_TOOL_DETAILS=1` setzen. Diese Variable ist nicht auf diese beiden Tools beschränkt; prüfen Sie daher ihre [Zeile in der Konfigurationstabelle](#common-configuration-variables) auf die Argumente, die sie an anderer Stelle hinzufügt.
284 284
285MCP-Tools, WebFetch und WebSearch zeichnen dieses Ereignis auch auf, auf Claude Code v2.1.283 oder später.285MCP-Tools, WebFetch und WebSearch erfassen dieses Event ab Claude Code v2.1.283 ebenfalls.
286 286
287Claude Code schreibt dieses Ereignis aus einer erfolgreichen Rückkehr eines Tool-Aufrufs, daher zeichnet ein Aufruf, der einen Fehler auslöst, nichts auf, unabhängig vom Tool. Unter den Aufrufen, die zurückkehren, zeichnet es kein `tool.output`-Ereignis auf für:287Claude Code schreibt dieses Event aus der erfolgreichen Rückgabe eines Tool-Aufrufs, sodass ein Aufruf, der einen Fehler auslöst, unabhängig vom Tool nichts erfasst. Unter den Aufrufen, die zurückkehren, wird kein `tool.output`-Event erfasst für:
288 288
289* Ein Aufruf an ein anderes Tool als Read, Edit, Write, Bash, WebFetch, WebSearch und MCP-Tools289* Einen Aufruf eines anderen Tools als Read, Edit, Write, Bash, WebFetch, WebSearch und MCP-Tools
290* Ein Read, das etwas anderes als Dateitext zurückgibt, z.B. ein Bild, ein PDF oder ein erneutes Lesen einer Datei, deren Inhalte sich nicht geändert haben290* Einen Read-Aufruf, der etwas anderes als Dateitext zurückgibt, etwa ein Bild, ein PDF oder ein erneutes Lesen einer Datei, deren Inhalt sich nicht geändert hat
291* Ein Edit- oder Write-Aufruf, es sei denn, Sie setzen auch `OTEL_LOG_TOOL_DETAILS=1`291* Einen Edit- oder Write-Aufruf, sofern Sie nicht zusätzlich `OTEL_LOG_TOOL_DETAILS=1` setzen
292* Einen WebFetch- oder WebSearch-Aufruf, den Claude Code während seiner Ausführung in den Hintergrund verschoben hat, damit eine wartende Nachricht Claude erreichen konnte. Das später eintreffende Ergebnis wird ebenfalls nicht aufgezeichnet. Wann Claude Code einen Aufruf verschiebt, erfahren Sie unter [Wann Claude Code sendet, was Sie in die Warteschlange gestellt haben](https://code.claude.com/docs/de/interactive-mode.md#when-claude-code-sends-what-you-queued) für das Terminal und beim [`priority`-Feld](https://code.claude.com/docs/de/agent-sdk/typescript#sdkusermessage) für Agent SDK-Sitzungen292* Einen WebFetch- oder WebSearch-Aufruf, den Claude Code während der Ausführung in den Hintergrund verschoben hat, damit eine wartende Nachricht Claude erreichen konnte. Das später eintreffende Ergebnis wird ebenfalls nicht erfasst. Wann Claude Code einen Aufruf verschiebt, erfahren Sie unter [Wann Claude Code das sendet, was Sie in die Warteschlange gestellt haben](https://code.claude.com/docs/de/interactive-mode.md#when-claude-code-sends-what-you-queued) für das Terminal und im [`priority`-Feld](https://code.claude.com/docs/de/agent-sdk/typescript#sdkusermessage) für Agent-SDK-Sitzungen
293 293
294Das Ereignis trägt diese Attribute, jeweils gekürzt auf das Inhaltslimit (Standard 60 KB). `Gated by` nennt die Variable, die ein Attribut zusätzlich zu `OTEL_LOG_TOOL_CONTENT=1` benötigt, und für Edit und Write gated diese Variable das Ereignis selbst statt des Attributs.294Das Event enthält diese Attribute, die jeweils am Inhaltslimit (standardmäßig 60 KB) abgeschnitten werden. `Geschaltet durch` nennt die Variable, die ein Attribut zusätzlich zu `OTEL_LOG_TOOL_CONTENT=1` benötigt; bei Edit und Write schaltet diese Variable das Event selbst statt des Attributs.
295 295
296| Attribut | Beschreibung | Gated by |296| Attribut | Beschreibung | Geschaltet durch |
297| - | - | - |297| - | - | - |
298| `content` | Text, den das Read-Tool zurückgegeben hat, oder Text, den ein Write-Aufruf aufgefordert wurde zu schreiben | `OTEL_LOG_TOOL_DETAILS` für das Write-Tool |298| `content` | Vom Read-Tool zurückgegebener Text oder der Text, den ein Write-Aufruf schreiben sollte | `OTEL_LOG_TOOL_DETAILS` für das Write-Tool |
299| `output` | Für das Bash-Tool die kombinierte Ausgabe des Befehls mit Stderr in Stdout verschachtelt. Für ein MCP-Tool, WebFetch oder WebSearch das Ergebnis, das das Tool zurückgegeben hat: Text-Blöcke durch Zeilenumbrüche verbunden, mit einem Bild oder Dokument ersetzt durch einen Platzhalter wie `[image]` | |299| `output` | Beim Bash-Tool die kombinierte Ausgabe des Befehls, wobei stderr in stdout eingeflochten ist. Bei einem MCP-Tool, WebFetch oder WebSearch das vom Tool zurückgegebene Ergebnis: Textblöcke, durch Zeilenumbrüche verbunden, wobei ein Bild oder Dokument durch einen Platzhalter wie `[image]` ersetzt wird | |
300| `diff` | Strukturierter Patch, den das Edit-Tool angewendet hat | `OTEL_LOG_TOOL_DETAILS` |300| `diff` | Vom Edit-Tool angewendeter strukturierter Patch | `OTEL_LOG_TOOL_DETAILS` |
301| `file_path` | Zieldateipfad für die Read-, Edit- und Write-Tools, wiederholend das Span-Attribut mit gleichem Namen | `OTEL_LOG_TOOL_DETAILS` |301| `file_path` | Zieldateipfad für die Tools Read, Edit und Write, wiederholt das gleichnamige Span-Attribut | `OTEL_LOG_TOOL_DETAILS` |
302| `bash_command` | Befehlsstring für das Bash-Tool | `OTEL_LOG_TOOL_DETAILS` |302| `bash_command` | Befehlszeichenfolge für das Bash-Tool | `OTEL_LOG_TOOL_DETAILS` |
303 303
304Das `tool_name`-Attribut des übergeordneten Spans sagt Ihnen, von welchem Tool ein Ereignis kam. Ein Attribut, das auf das Inhaltslimit gekürzt ist, wird von `<attribute>_truncated` und `<attribute>_original_length` begleitet.304Das Attribut `tool_name` des übergeordneten Spans zeigt Ihnen, von welchem Tool ein Event stammt. Ein am Inhaltslimit abgeschnittenes Attribut wird von `<attribute>_truncated` und `<attribute>_original_length` begleitet.
305 305
306**`claude_code.tool.blocked_on_user`**306**`claude_code.tool.blocked_on_user`**
307 307
308| Attribut | Beschreibung | Gated by |308| Attribut | Beschreibung | Geschaltet durch |
309| - | - | - |309| - | - | - |
310| `duration_ms` | Zeit, die auf die Berechtigungsentscheidung gewartet wurde | |310| `duration_ms` | Wartezeit auf die Berechtigungsentscheidung | |
311| `decision` | `accept`, `reject` oder `cancelled`, wobei `cancelled` bedeutet, dass Claude Code nicht mehr auf eine Berechtigungsentscheidung für den Tool-Aufruf gewartet und ihn nicht ausgeführt hat | |311| `decision` | `accept`, `reject` oder `cancelled`, wobei `cancelled` bedeutet, dass Claude Code das Warten auf eine Berechtigungsentscheidung für den Tool-Aufruf beendet und ihn nicht ausgeführt hat | |
312| `source` | Bei `accept` oder `reject` die Herkunft der Entscheidung, z.B. `config`, `hook` oder `user_temporary`, mit den unter [Tool-Entscheidungs-Ereignis](#tool-decision-event) angegebenen Bedeutungen. Bei `cancelled` das, was das Warten beendet hat, bevor eine Entscheidung getroffen wurde, z.B. `user_abort` | |312| `source` | Bei `accept` oder `reject` die Herkunft der Entscheidung, etwa `config`, `hook` oder `user_temporary`, mit den unter [Tool-Decision-Event](#tool-decision-event) angegebenen Bedeutungen. Bei `cancelled`, was das Warten beendet hat, bevor eine Entscheidung getroffen wurde, etwa `user_abort` | |
313 313
314Eine `cancelled`-Entscheidung mit `source` `user_abort` bedeutet, dass eine Nachricht, die sofort zugestellt werden musste, den Turn unterbrochen hat, während die Berechtigungsabfrage oder die [Auto-Modus](https://code.claude.com/docs/de/permission-modes.md#eliminate-prompts-with-auto-mode)-Prüfung noch ausstand. Zum Beispiel hatte der Benutzer während einer Auto-Modus-Prüfung eine Nachricht in der Warteschlange und [hat sie sofort gesendet](https://code.claude.com/docs/de/interactive-mode.md#when-claude-code-sends-what-you-queued).314Eine `cancelled`-Entscheidung mit `source` `user_abort` bedeutet, dass eine Nachricht, die sofort zugestellt werden musste, den Turn unterbrochen hat, während die Berechtigungsabfrage oder die Prüfung im [Auto-Modus](https://code.claude.com/docs/de/permission-modes.md#eliminate-prompts-with-auto-mode) ausstand. Zum Beispiel hatte der Benutzer während einer Prüfung im Auto-Modus eine Nachricht in der Warteschlange und [hat sie sofort gesendet](https://code.claude.com/docs/de/interactive-mode.md#when-claude-code-sends-what-you-queued).
315 315
316**`claude_code.tool.execution`**316**`claude_code.tool.execution`**
317 317
318| Attribut | Beschreibung | Gated by |318| Attribut | Beschreibung | Geschaltet durch |
319| - | - | - |319| - | - | - |
320| `duration_ms` | Zeit, die zum Ausführen des Tool-Body aufgewendet wurde | |320| `duration_ms` | Zeit für die Ausführung des Tool-Körpers | |
321| `tool_use_id` | Gleicher Wert wie auf dem übergeordneten `claude_code.tool` Span | |321| `tool_use_id` | Gleicher Wert wie auf dem übergeordneten `claude_code.tool`-Span | |
322| `gen_ai.tool.call.id` | Gleicher Wert wie `tool_use_id`. OpenTelemetry GenAI-Semantik-Konvention | |322| `gen_ai.tool.call.id` | Gleicher Wert wie `tool_use_id`. Semantische Konvention von OpenTelemetry GenAI | |
323| `success` | `true` oder `false` | |323| `success` | `true` oder `false` | |
324| `error` | Fehler-Kategorie-String, wenn die Ausführung fehlgeschlagen ist, z.B. `Error:ENOENT` oder `ShellError`. Enthält die vollständige Fehlermeldung statt, wenn das Gate gesetzt ist | `OTEL_LOG_TOOL_DETAILS` |324| `error` | Zeichenfolge der Fehlerkategorie, wenn die Ausführung fehlgeschlagen ist, etwa `Error:ENOENT` oder `ShellError`. Enthält stattdessen die vollständige Fehlermeldung, wenn der Schalter gesetzt ist | `OTEL_LOG_TOOL_DETAILS` |
325| `error_class` | Die Fehler-Kategorie in Identifikator-Form, mit Zeichen außerhalb von Buchstaben, Ziffern und Unterstrichen ersetzt durch `_`, z.B. `Error_ENOENT` oder `ShellError`. Trägt die Kategorie auch, wenn `error` die vollständige Meldung trägt. Erfordert Claude Code v2.1.268 oder später | |325| `error_class` | Die Fehlerkategorie in Bezeichnerform, wobei Zeichen außer Buchstaben, Ziffern und Unterstrichen durch `_` ersetzt werden, etwa `Error_ENOENT` oder `ShellError`. Enthält die Kategorie auch dann, wenn `error` die vollständige Meldung enthält. Erfordert Claude Code v2.1.268 oder höher | |
326 326
327**`claude_code.hook`**327**`claude_code.hook`**
328 328
329Dieser Span erscheint nur, wenn detailliertes Beta-Tracing aktiv ist, was `ENABLE_BETA_TRACING_DETAILED=1` und `BETA_TRACING_ENDPOINT` erfordert, ein Paar, das auch [ändert, wohin Ihre Protokolle und Traces gehen](https://code.claude.com/docs/de/env-vars.md#variables). Setzen Sie das Paar in Ihrer Shell, Benutzereinstellungen oder verwalteten Einstellungen; beide Variablen werden in [Projekt- und lokalen Einstellungen](https://code.claude.com/docs/de/settings-reference.md#variables-claude-code-ignores-in-env) ignoriert. `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` allein produziert es nicht.329Dieser Span erscheint nur, wenn detailliertes Beta-Tracing aktiv ist. Dafür sind `ENABLE_BETA_TRACING_DETAILED=1` und `BETA_TRACING_ENDPOINT` erforderlich, ein Paar, das auch [ändert, wohin Ihre Logs und Traces gehen](https://code.claude.com/docs/de/env-vars.md#variables). Setzen Sie das Paar in Ihrer Shell, Ihren Benutzereinstellungen oder den verwalteten Einstellungen; beide Variablen werden in [Projekt- und lokalen Einstellungen](https://code.claude.com/docs/de/settings-reference.md#variables-claude-code-ignores-in-env) ignoriert. `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` allein erzeugt ihn nicht.
330 330
331In interaktiven CLI-Sitzungen erfordert detailliertes Beta-Tracing auch, dass Ihre Organisation für die Funktion auf die Whitelist gesetzt ist. Agent SDK und nicht-interaktive `-p`-Sitzungen erfordern keine Whitelist.331In interaktiven CLI-Sitzungen erfordert detailliertes Beta-Tracing außerdem, dass Ihre Organisation für die Funktion freigeschaltet ist. Agent-SDK- und nicht-interaktive `-p`-Sitzungen erfordern keine Freischaltung.
332 332
333| Attribut | Beschreibung | Gated by |333> [!WARNING]
334>
335> Setzen Sie `ENABLE_BETA_TRACING_DETAILED` nur für das Debugging, nicht in der Produktion. Detailliertes Beta-Tracing hat ein hohes Exportvolumen, und seine [Inhaltsattribute](#new-context-gates) sind nicht Teil des stabilen Span-Schemas.
336
337| Attribut | Beschreibung | Geschaltet durch |
334| - | - | - |338| - | - | - |
335| `hook_event` | Hook-Ereignistyp, z.B. `PreToolUse` | |339| `hook_event` | Hook-Event-Typ, etwa `PreToolUse` | |
336| `hook_name` | Vollständiger Hook-Name, z.B. `PreToolUse:Write` | |340| `hook_name` | Vollständiger Hook-Name, etwa `PreToolUse:Write` | |
337| `num_hooks` | Anzahl der ausgeführten übereinstimmenden Hook-Befehle | |341| `num_hooks` | Anzahl der ausgeführten passenden Hook-Befehle | |
338| `hook_definitions` | JSON-serialisierte Hook-Konfiguration | `OTEL_LOG_TOOL_DETAILS` |342| `hook_definitions` | JSON-serialisierte Hook-Konfiguration | `OTEL_LOG_TOOL_DETAILS` |
339| `duration_ms` | Wanduhr-Dauer aller übereinstimmenden Hooks | |343| `duration_ms` | Tatsächliche Dauer aller passenden Hooks | |
340| `num_success` | Anzahl der Hooks, die erfolgreich abgeschlossen wurden | |344| `num_success` | Anzahl der erfolgreich abgeschlossenen Hooks | |
341| `num_blocking` | Anzahl der Hooks, die eine Blockierungsentscheidung zurückgegeben haben | |345| `num_blocking` | Anzahl der Hooks, die eine blockierende Entscheidung zurückgegeben haben | |
342| `num_non_blocking_error` | Anzahl der Hooks, die ohne Blockierung fehlgeschlagen sind | |346| `num_non_blocking_error` | Anzahl der Hooks, die ohne Blockierung fehlgeschlagen sind | |
343| `num_cancelled` | Anzahl der Hooks, die vor Abschluss abgebrochen wurden | |347| `num_cancelled` | Anzahl der Hooks, die vor Abschluss abgebrochen wurden | |
344 348
348>352>
349> Zusätzliche inhaltstragende Attribute wie `new_context`, `system_reminders`, `system_prompt_preview`, `user_system_prompt`, `tool_input` und `response.model_output` werden nur ausgegeben, wenn detailliertes Beta-Tracing aktiv ist. Sie sind nicht Teil des stabilen Span-Schemas.353> Zusätzliche inhaltstragende Attribute wie `new_context`, `system_reminders`, `system_prompt_preview`, `user_system_prompt`, `tool_input` und `response.model_output` werden nur ausgegeben, wenn detailliertes Beta-Tracing aktiv ist. Sie sind nicht Teil des stabilen Span-Schemas.
350 354
351Diese Attribute erscheinen auf den unten aufgeführten Spans, und `Gated by` nennt die Variable, die ein Attribut zusätzlich zum detaillierten Beta-Tracing benötigt. Werte, die länger als das Inhaltslimit (Standard 60 KB) sind, werden gekürzt.355Diese Attribute erscheinen auf den unten aufgeführten Spans, und `Geschaltet durch` nennt die Variable, die ein Attribut zusätzlich zum detaillierten Beta-Tracing benötigt. Werte, die länger als das Inhaltslimit (standardmäßig 60 KB) sind, werden abgeschnitten.
352 356
353| Attribut | Span | Beschreibung | Gated by |357| Attribut | Span | Beschreibung | Geschaltet durch |
354| - | - | - | - |358| - | - | - | - |
355| `new_context` | `claude_code.interaction` | Der Benutzer-Prompt | `OTEL_LOG_USER_PROMPTS` |359| `new_context` | `claude_code.interaction` | Der Benutzer-Prompt | `OTEL_LOG_USER_PROMPTS` |
356| `new_context` | `claude_code.llm_request` | Die neuen Benutzer-Nachrichten und Tool-Ergebnisse, die mit der Anfrage gesendet werden | `OTEL_LOG_USER_PROMPTS` |360| `new_context` | `claude_code.llm_request` | Die neuen Benutzernachrichten und Tool-Ergebnisse, die mit der Anfrage gesendet wurden | `OTEL_LOG_USER_PROMPTS` |
357| `system_reminders` | `claude_code.llm_request` | Der Text der [System-Erinnerungen](https://code.claude.com/docs/de/glossary.md#system-reminder) unter den neuen Nachrichten der Anfrage | `OTEL_LOG_USER_PROMPTS` |361| `system_reminders` | `claude_code.llm_request` | Der Text der [System-Erinnerungen](https://code.claude.com/docs/de/glossary.md#system-reminder) unter den neuen Nachrichten der Anfrage | `OTEL_LOG_USER_PROMPTS` |
358| `system_prompt_preview` | `claude_code.llm_request` | Die ersten 500 Zeichen des vollständigen System-Prompts, der mit der Anfrage gesendet wird | `OTEL_LOG_USER_PROMPTS` |362| `system_prompt_preview` | `claude_code.llm_request` | Die ersten 500 Zeichen des vollständigen System-Prompts, der mit der Anfrage gesendet wurde | `OTEL_LOG_USER_PROMPTS` |
359| `user_system_prompt` | `claude_code.llm_request` | Nur der System-Prompt-Text, den Sie über die `systemPrompt` SDK-Option oder die Flags `--system-prompt` und `--append-system-prompt` bereitstellen. Wird einmal pro Sitzung statt pro Anfrage ausgegeben | `OTEL_LOG_USER_PROMPTS` |363| `user_system_prompt` | `claude_code.llm_request` | Nur der System-Prompt-Text, den Sie über die SDK-Option `systemPrompt` oder die Flags `--system-prompt` und `--append-system-prompt` bereitstellen. Wird einmal pro Sitzung statt pro Anfrage ausgegeben | `OTEL_LOG_USER_PROMPTS` |
360| `response.model_output` | `claude_code.llm_request` | Text der Antwort des Modells auf die Anfrage | `OTEL_LOG_USER_PROMPTS` |364| `response.model_output` | `claude_code.llm_request` | Text der Antwort des Modells auf die Anfrage | `OTEL_LOG_USER_PROMPTS` |
361| `new_context` | `claude_code.tool` | Das Ergebnis des Tool-Aufrufs, unabhängig vom Tool | `OTEL_LOG_TOOL_CONTENT` |365| `new_context` | `claude_code.tool` | Das Ergebnis des Tool-Aufrufs, unabhängig vom Tool | `OTEL_LOG_TOOL_CONTENT` |
362| `tool_input` | `claude_code.tool` | Die serialisierte Eingabe des Tool-Aufrufs | `OTEL_LOG_TOOL_DETAILS` |366| `tool_input` | `claude_code.tool` | Die serialisierte Eingabe des Tool-Aufrufs | `OTEL_LOG_TOOL_DETAILS` |
363 367
364Unter detailliertem Beta-Tracing mit `OTEL_LOG_USER_PROMPTS=1` gibt Claude Code außerdem ein `claude_code.system_prompt`-Ereignis aus, das den vollständigen System-Prompt enthält, gekürzt auf das Inhaltslimit. Es wird jeweils beim ersten Senden eines bestimmten System-Prompts in einer Sitzung ausgegeben und erneut nach einer Komprimierung.368Unter detailliertem Beta-Tracing mit `OTEL_LOG_USER_PROMPTS=1` gibt Claude Code außerdem ein `claude_code.system_prompt`-Event aus, das den vollständigen System-Prompt enthält, abgeschnitten am Inhaltslimit. Es wird jeweils beim ersten Senden eines bestimmten System-Prompts in einer Sitzung ausgegeben und erneut nach einer Komprimierung.
365 369
366### Dynamische Header370### Dynamische Header
367 371
368Für Unternehmensumgebungen, die dynamische Authentifizierung erfordern, können Sie ein Script konfigurieren, um Header dynamisch zu generieren. Dynamische Header gelten nur für die Protokolle `http/protobuf` und `http/json`. Mit dem `grpc`-Protokoll verwendet Claude Code nur die statischen Header-Variablen, `OTEL_EXPORTER_OTLP_HEADERS` und ihre signalspezifischen Varianten.372Für Unternehmensumgebungen, die eine dynamische Authentifizierung erfordern, können Sie ein Skript konfigurieren, das Header dynamisch generiert. Dynamische Header gelten nur für die Protokolle `http/protobuf` und `http/json`. Beim Protokoll `grpc` verwendet Claude Code nur die statischen Header-Variablen, `OTEL_EXPORTER_OTLP_HEADERS` und deren signalspezifische Varianten.
369 373
370#### Einstellungskonfiguration374#### Konfiguration der Einstellungen
371 375
372Fügen Sie zu Ihrer `.claude/settings.json` hinzu, ersetzen Sie den Pfad durch Ihren eigenen Script:376Fügen Sie Folgendes zu Ihrer `.claude/settings.json` hinzu und ersetzen Sie den Pfad durch Ihr eigenes Skript:
373 377
374```json theme={null}378```json theme={null}
375{379{
377}381}
378```382```
379 383
380Der Wert kann der Pfad zu einer ausführbaren Datei sein, einschließlich eines Pfads, der Leerzeichen enthält, oder eine Shell-Befehlszeile mit Argumenten. Unter Windows wird der Wert immer durch die Shell ausgeführt, daher setzen Sie einen Pfad, der Leerzeichen enthält, in Anführungszeichen innerhalb des JSON-Werts.384Der Wert kann der Pfad zu einer ausführbaren Datei sein, einschließlich eines Pfads mit Leerzeichen, oder eine Shell-Befehlszeile mit Argumenten. Unter Windows wird der Wert immer über die Shell ausgeführt; setzen Sie daher einen Pfad mit Leerzeichen innerhalb des JSON-Werts in Anführungszeichen.
381 385
382#### Script-Anforderungen386#### Anforderungen an das Skript
383 387
384Das Script muss gültiges JSON mit String-Schlüssel-Wert-Paaren ausgeben, die HTTP-Header darstellen:388Das Skript muss gültiges JSON mit String-Schlüssel-Wert-Paaren ausgeben, die HTTP-Header darstellen:
385 389
386```bash theme={null}390```bash theme={null}
387#!/bin/bash391#!/bin/bash
388# Beispiel: Mehrere Header392# Example: Multiple headers
389echo "{\"Authorization\": \"Bearer $(get-token.sh)\", \"X-API-Key\": \"$(get-api-key.sh)\"}"393echo "{\"Authorization\": \"Bearer $(get-token.sh)\", \"X-API-Key\": \"$(get-api-key.sh)\"}"
390```394```
391 395
392Wenn der Helper fehlschlägt oder Ausgabe druckt, die diese Anforderungen nicht erfüllt, schlagen Exporte fehl und Ihr Telemetrie-Backend erhält nichts aus der Sitzung, bis der Helper wieder funktioniert. Claude Code meldet den Fehler in:396Wenn der Helper fehlschlägt oder eine Ausgabe erzeugt, die diese Anforderungen nicht erfüllt, schlagen Exporte fehl, und Ihr Telemetrie-Backend erhält aus der Sitzung nichts, bis der Helper wieder funktioniert. Claude Code meldet den Fehler:
393 397
394* Eine Warnbenachrichtigung in interaktiven Sitzungen, [`otelHeadersHelper failed; telemetry is not being exported`](https://code.claude.com/docs/de/errors#otelheadershelper-failed), einmal pro Sitzung angezeigt, wenn der Helper zuerst fehlschlägt398* In einer Warnmeldung in interaktiven Sitzungen, [`otelHeadersHelper failed; telemetry is not being exported`](https://code.claude.com/docs/de/errors#otelheadershelper-failed), die einmal pro Sitzung beim ersten Fehlschlagen des Helpers angezeigt wird
395* `/status`-Ausgabe399* In der Ausgabe von `/status`
396* Das Debug-Protokoll, wenn mit [`--debug`](https://code.claude.com/docs/de/cli-reference#cli-flags) ausgeführt oder nach Ausführung von `/debug` in der Sitzung400* Im Debug-Log, wenn Sie mit [`--debug`](https://code.claude.com/docs/de/cli-reference#cli-flags) arbeiten oder in der Sitzung `/debug` ausgeführt haben
397* stderr, in nicht-interaktiven Sitzungen, die mit `-p` gestartet werden401* Auf stderr in nicht-interaktiven Sitzungen, die mit `-p` gestartet wurden
398 402
399#### Aktualisierungsverhalten403#### Aktualisierungsverhalten
400 404
401Das Headers-Helper-Script wird beim Start und danach regelmäßig ausgeführt, um Token-Aktualisierung zu unterstützen. Standardmäßig wird das Script alle 29 Minuten ausgeführt. Passen Sie das Intervall mit der Umgebungsvariable `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` an.405Das Header-Helper-Skript wird beim Start und danach regelmäßig ausgeführt, um die Token-Aktualisierung zu unterstützen. Standardmäßig wird das Skript alle 29 Minuten ausgeführt. Passen Sie das Intervall mit der Umgebungsvariable `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` an.
402 406
403### Multi-Team-Organisationsunterstützung407### Unterstützung für Organisationen mit mehreren Teams
404 408
405Organisationen mit mehreren Teams oder Abteilungen können benutzerdefinierte Attribute hinzufügen, um zwischen verschiedenen Gruppen zu unterscheiden, indem sie die Umgebungsvariable `OTEL_RESOURCE_ATTRIBUTES` verwenden:409Organisationen mit mehreren Teams oder Abteilungen können mit der Umgebungsvariable `OTEL_RESOURCE_ATTRIBUTES` benutzerdefinierte Attribute hinzufügen, um zwischen verschiedenen Gruppen zu unterscheiden:
406 410
407```bash theme={null}411```bash theme={null}
408# Fügen Sie benutzerdefinierte Attribute für Team-Identifikation hinzu412# Add custom attributes for team identification
409export OTEL_RESOURCE_ATTRIBUTES="department=engineering,team.id=platform,cost_center=eng-123"413export OTEL_RESOURCE_ATTRIBUTES="department=engineering,team.id=platform,cost_center=eng-123"
410```414```
411 415
412Diese benutzerdefinierten Attribute sind in allen Metriken und Ereignissen enthalten, sodass Sie:416Diese benutzerdefinierten Attribute sind in allen Metriken und Events enthalten, sodass Sie:
413 417
414* Metriken nach Team oder Abteilung filtern können418* Metriken nach Team oder Abteilung filtern
415* Kosten pro Kostenstelle verfolgen können419* Kosten pro Kostenstelle nachverfolgen
416* Team-spezifische Dashboards erstellen können420* Teamspezifische Dashboards erstellen
417* Warnungen für bestimmte Teams einrichten können421* Benachrichtigungen für bestimmte Teams einrichten
418 422
419Claude Code fügt diese Werte als Attribute auf jedem Metrik-Datenpunkt und Ereignis-Record an, zusätzlich zum Senden im OTLP-Ressourcenblock. Da die meisten Metriken-Backends Datenpunkt-Attribute als abfragbare Labels verfügbar machen, können Sie Metriken direkt nach Ihren benutzerdefinierten Schlüsseln gruppieren und filtern. Mit Ausnahme der `vcs.*` [Repository-Attribute](#repository-attributes) überschreiben benutzerdefinierte Schlüssel niemals die [Standard-Attribute](#standard-attributes) wie `user.id` oder `session.id`: wenn ein Schlüssel kollidiert, behält Claude Code den integrierten Wert.423Claude Code hängt diese Werte als Attribute an jeden Metrik-Datenpunkt und jeden Event-Eintrag an und sendet sie zusätzlich im OTLP-Ressourcenblock. Da die meisten Metrik-Backends Datenpunkt-Attribute als abfragbare Labels bereitstellen, können Sie Metriken direkt nach Ihren benutzerdefinierten Schlüsseln gruppieren und filtern. Mit Ausnahme der `vcs.*`-[Repository-Attribute](#repository-attributes) überschreiben benutzerdefinierte Schlüssel niemals die [Standardattribute](#standard-attributes) wie `user.id` oder `session.id`: Bei einer Kollision behält Claude Code den integrierten Wert.
420 424
421Jeder benutzerdefinierte Schlüssel wird zu einem Label auf jeder Metrik-Serie, daher erhöhen hochkardinalitäts-Werte die Speicherkosten in Ihrem Metriken-Backend. Um benutzerdefinierte Attribute nur im Ressourcenblock zu senden und sie von Datenpunkt-Labels auszulassen, setzen Sie `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false`. Siehe [Metriken-Kardinalitätskontrolle](#metrics-cardinality-control).425Jeder benutzerdefinierte Schlüssel wird zu einem Label an jeder Metrikreihe, sodass Werte mit hoher Kardinalität die Speicherkosten in Ihrem Metrik-Backend erhöhen. Um benutzerdefinierte Attribute nur im Ressourcenblock zu senden und sie aus den Datenpunkt-Labels auszulassen, setzen Sie `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false`. Siehe [Steuerung der Metrik-Kardinalität](#metrics-cardinality-control).
422 426
423> [!WARNING]427> [!WARNING]
424>428>
425> Die Umgebungsvariable `OTEL_RESOURCE_ATTRIBUTES` verwendet kommagetrennte Schlüssel=Wert-Paare mit strikten Formatierungsanforderungen:429> Die Umgebungsvariable `OTEL_RESOURCE_ATTRIBUTES` verwendet durch Kommas getrennte key=value-Paare mit strengen Formatierungsanforderungen:
426>430>
427> * **Keine Leerzeichen erlaubt**: Werte können keine Leerzeichen enthalten. Zum Beispiel ist `user.organizationName=My Company` ungültig431> * **Keine Leerzeichen erlaubt**: Werte dürfen keine Leerzeichen enthalten. Zum Beispiel ist `user.organizationName=My Company` ungültig
428> * **Format**: muss kommagetrennte Schlüssel=Wert-Paare sein: `key1=value1,key2=value2`432> * **Format**: Es müssen durch Kommas getrennte key=value-Paare sein: `key1=value1,key2=value2`
429> * **Erlaubte Zeichen**: nur US-ASCII-Zeichen ohne Steuerzeichen, Leerzeichen, doppelte Anführungszeichen, Kommas, Semikola und Backslashes433> * **Erlaubte Zeichen**: Nur US-ASCII-Zeichen mit Ausnahme von Steuerzeichen, Leerraum, doppelten Anführungszeichen, Kommas, Semikolons und Backslashes
430> * **Sonderzeichen**: Zeichen außerhalb des erlaubten Bereichs müssen prozentcodiert sein434> * **Sonderzeichen**: Zeichen außerhalb des erlaubten Bereichs müssen prozentkodiert werden
431>435>
432> Für einen Wert, der ein Leerzeichen benötigen würde, verwenden Sie stattdessen Unterstriche oder camelCase. Die folgenden Beispiele setzen `org.name` mit jeder Form:436> Verwenden Sie für einen Wert, der ein Leerzeichen benötigen würde, stattdessen Unterstriche oder camelCase. Die folgenden Beispiele setzen `org.name` in jeder der beiden Formen:
433>437>
434> ```bash theme={null}438> ```bash theme={null}
435> export OTEL_RESOURCE_ATTRIBUTES="org.name=Johns_Organization"439> export OTEL_RESOURCE_ATTRIBUTES="org.name=Johns_Organization"
436> export OTEL_RESOURCE_ATTRIBUTES="org.name=JohnsOrganization"440> export OTEL_RESOURCE_ATTRIBUTES="org.name=JohnsOrganization"
437> ```441> ```
438>442>
439> Sie können jedes Zeichen prozentcodieren, nicht nur die ausgeschlossenen. Dieses Beispiel codiert sowohl das Leerzeichen als auch den Apostroph:443> Sie können jedes Zeichen prozentkodieren, nicht nur die ausgeschlossenen. Dieses Beispiel kodiert sowohl das Leerzeichen als auch den Apostroph:
440>444>
441> ```bash theme={null}445> ```bash theme={null}
442> export OTEL_RESOURCE_ATTRIBUTES="org.name=John%27s%20Organization"446> export OTEL_RESOURCE_ATTRIBUTES="org.name=John%27s%20Organization"
443> ```447> ```
444>448>
445> Das Umhüllen von Werten in Anführungszeichen entgeht nicht Leerzeichen. Zum Beispiel führt `org.name="My Company"` zum Literalwert `"My Company"` mit den Anführungszeichen enthalten, nicht `My Company`.449> Das Einschließen von Werten in Anführungszeichen maskiert keine Leerzeichen. Zum Beispiel ergibt `org.name="My Company"` den literalen Wert `"My Company"` einschließlich der Anführungszeichen, nicht `My Company`.
446 450
447### Telemetrie Desktop-SSH-Sitzungen zuordnen451### Telemetrie Desktop-SSH-Sitzungen zuordnen
448 452
449Um zu sehen, auf welchem Remote-Rechner eine [Desktop-SSH-Sitzung](https://code.claude.com/docs/de/desktop.md#ssh-sessions) lief, benennen Sie jeden Rechner in einem benutzerdefinierten Attribut. Metriken und Ereignisse nennen den Rechner nicht, auf dem eine Sitzung lief.453Um zu sehen, auf welchem entfernten Rechner eine [Desktop-SSH-Sitzung](https://code.claude.com/docs/de/desktop.md#ssh-sessions) lief, benennen Sie jeden Rechner in einem benutzerdefinierten Attribut. Metriken und Events nennen den Rechner, auf dem eine Sitzung lief, nicht.
450 454
451Fügen Sie auf jedem Remote-Rechner [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) dem `env`-Block hinzu, der die Telemetrie einschaltet, und zwar in der [Datei mit verwalteten Einstellungen, die die Sitzung liest](https://code.claude.com/docs/de/desktop.md#managed-settings). Schreiben Sie den Namen in der Datei jedes Rechners aus. Claude Code expandiert den Wert nicht, daher kommt `host.name=$(hostname)` als genau diese Zeichen an.455Fügen Sie auf jedem entfernten Rechner [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) zum `env`-Block hinzu, der die Telemetrie einschaltet, und zwar in der [Datei mit verwalteten Einstellungen, die die Sitzung liest](https://code.claude.com/docs/de/desktop.md#managed-settings). Schreiben Sie den Namen in der Datei jedes Rechners aus. Claude Code expandiert den Wert nicht, sodass `host.name=$(hostname)` genau als diese Zeichen ankommt.
452 456
453Das folgende Beispiel benennt den Rechner `build-7`:457Das folgende Beispiel benennt den Rechner `build-7`:
454 458
465}469}
466```470```
467 471
468Wenn nichts anderes die Variable setzt, kommt `host.name` im Ressourcenblock an, in Desktop-SSH-Sitzungen und in der CLI auf diesem Rechner. Wo benutzerdefinierte Attribute sonst noch erscheinen, erfahren Sie unter [Multi-Team-Organisationsunterstützung](#multi-team-organization-support).472Wenn nichts anderes die Variable setzt, kommt `host.name` im Ressourcenblock an, sowohl in Desktop-SSH-Sitzungen als auch in der CLI auf diesem Rechner. Wo benutzerdefinierte Attribute sonst noch erscheinen, erfahren Sie unter [Unterstützung für Organisationen mit mehreren Teams](#multi-team-organization-support).
469 473
470Wenn der Name nicht ankommt, prüfen Sie, ob eine dieser Ursachen vorliegt:474Wenn der Name nicht ankommt, prüfen Sie, ob eine dieser Ursachen vorliegt:
471 475
472* **Sie haben ihn auf dem Computer gesetzt, auf dem Desktop läuft**: Desktop gibt einen dort gesetzten Wert nicht an die SSH-Sitzung weiter476* **Sie haben ihn auf dem Computer gesetzt, auf dem Desktop läuft**: Desktop gibt einen dort gesetzten Wert nicht an die SSH-Sitzung weiter
473* **Sie haben ihn in `/etc/profile` oder einer anderen Datei exportiert, die nur Login-Shells lesen**: Der Name kommt an, wenn Sie `claude` aus einer Login-Shell ausführen, aber nicht in einer Desktop-SSH-Sitzung. Desktop startet Claude Code nicht über eine Login-Shell. Setzen Sie die Variable stattdessen unter `env` in der [Datei mit verwalteten Einstellungen](https://code.claude.com/docs/de/desktop.md#managed-settings) auf dem Remote-Rechner.477* **Sie haben ihn in `/etc/profile` oder einer anderen Datei exportiert, die nur Login-Shells lesen**: Der Name kommt an, wenn Sie `claude` aus einer Login-Shell ausführen, aber nicht in einer Desktop-SSH-Sitzung. Desktop startet Claude Code nicht über eine Login-Shell. Setzen Sie die Variable stattdessen unter `env` in der [Datei mit verwalteten Einstellungen](https://code.claude.com/docs/de/desktop.md#managed-settings) auf dem entfernten Rechner.
474* **Ein Wert enthält ein Leerzeichen**: Claude Code kopiert dann keinen der Schlüssel auf Ereignisse oder Datenpunkte und meldet keinen Fehler. [Entfernen Sie das Leerzeichen aus dem Wert](#multi-team-organization-support).478* **Ein Wert enthält ein Leerzeichen**: Claude Code kopiert dann keinen der Schlüssel auf Events oder Datenpunkte und meldet keinen Fehler. [Entfernen Sie das Leerzeichen aus dem Wert](#multi-team-organization-support).
475* **Etwas anderes setzt die Variable bereits**: In einer Sitzung, die die Desktop-App startet, hat eine bereits in der Startumgebung gesetzte Variable [Vorrang vor Einstellungsdateien](https://code.claude.com/docs/de/settings-reference.md#how-env-values-interact-with-your-shell). Das [Debug-Log](https://code.claude.com/docs/de/debug-your-config.md) nennt jede ignorierte Variable. Wenn eine Desktop-Bereitstellung eines Drittanbieters in der von ihr bereitgestellten Umgebung [einen OTLP-Endpunkt angibt](#how-managed-settings-lock-the-otlp-destination), enthält diese Umgebung das eigene `OTEL_RESOURCE_ATTRIBUTES` von Desktop.479* **Etwas anderes setzt die Variable bereits**: In einer Sitzung, die die Desktop-App startet, hat eine bereits in der Startumgebung gesetzte Variable [Vorrang vor Einstellungsdateien](https://code.claude.com/docs/de/settings-reference.md#how-env-values-interact-with-your-shell). Das [Debug-Log](https://code.claude.com/docs/de/debug-your-config.md) nennt jede ignorierte Variable. Wenn eine Desktop-Bereitstellung eines Drittanbieters [einen OTLP-Endpunkt](#how-managed-settings-lock-the-otlp-destination) in der von ihr bereitgestellten Umgebung angibt, enthält diese Umgebung die eigene `OTEL_RESOURCE_ATTRIBUTES` von Desktop.
476 480
477### Beispielkonfigurationen481### Beispielkonfigurationen
478 482
479Setzen Sie diese Umgebungsvariablen vor dem Ausführen von `claude`. Jedes Szenario unten zeigt eine vollständige Konfiguration, und jede Variable wird unter [Allgemeine Konfigurationsvariablen](#common-configuration-variables) beschrieben. Um zu bestätigen, dass eine Konfiguration wirksam wurde, überprüfen Sie Ihr Backend auf die `claude_code.session.count`-Metrik nach dem Starten einer Sitzung; der [Schnellstart](#quick-start) behandelt Protokoll-only-Verifizierung und was zu überprüfen ist, wenn nichts ankommt.483Setzen Sie diese Umgebungsvariablen, bevor Sie `claude` ausführen. Jedes der folgenden Szenarien zeigt eine vollständige Konfiguration, und jede Variable ist unter [Allgemeine Konfigurationsvariablen](#common-configuration-variables) beschrieben. Um zu bestätigen, dass eine Konfiguration wirksam geworden ist, prüfen Sie nach dem Start einer Sitzung Ihr Backend auf die Metrik `claude_code.session.count`; der [Schnellstart](#quick-start) behandelt die Überprüfung nur für Logs und was zu prüfen ist, wenn nichts ankommt.
480 484
481Für Console-Debugging mit 1-Sekunden-Exportintervall:485Für das Debugging über die Konsole mit einem Exportintervall von 1 Sekunde:
482 486
483```bash theme={null}487```bash theme={null}
484export CLAUDE_CODE_ENABLE_TELEMETRY=1488export CLAUDE_CODE_ENABLE_TELEMETRY=1
495export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317499export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
496```500```
497 501
498Für Prometheus, gescraped von `http://localhost:9464/metrics`:502Für Prometheus, abgerufen von `http://localhost:9464/metrics`:
499 503
500```bash theme={null}504```bash theme={null}
501export CLAUDE_CODE_ENABLE_TELEMETRY=1505export CLAUDE_CODE_ENABLE_TELEMETRY=1
502export OTEL_METRICS_EXPORTER=prometheus506export OTEL_METRICS_EXPORTER=prometheus
503```507```
504 508
505In einer [selbstgehosteten Umgebung](https://code.claude.com/docs/de/self-hosted-environments-reference.md#pass-through-session-child-metrics) bindet die Sitzung Port 9464 nur bei der Standard-Kapazität des Runners von eins. Bei höherer Kapazität stellt der Runner Sitzungszähler und Gauges stattdessen auf seinem eigenen `/metrics`-Endpunkt erneut bereit.509In einer [selbst gehosteten Umgebung](https://code.claude.com/docs/de/self-hosted-environments-reference.md#pass-through-session-child-metrics) bindet die Sitzung Port 9464 nur bei der Standardkapazität des Runners von eins. Bei höherer Kapazität stellt der Runner Zähler und Gauges der Sitzungen stattdessen über seinen eigenen `/metrics`-Endpunkt bereit.
506 510
507Um Metriken an mehrere Exporter zu senden:511Um Metriken an mehrere Exporter zu senden:
508 512
512export OTEL_EXPORTER_OTLP_PROTOCOL=http/json516export OTEL_EXPORTER_OTLP_PROTOCOL=http/json
513```517```
514 518
515Um Metriken und Protokolle an verschiedene Endpunkte oder Backends zu senden:519Um Metriken und Logs an unterschiedliche Endpunkte oder Backends zu senden:
516 520
517```bash theme={null}521```bash theme={null}
518export CLAUDE_CODE_ENABLE_TELEMETRY=1522export CLAUDE_CODE_ENABLE_TELEMETRY=1
524export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://logs.example.com:4317528export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://logs.example.com:4317
525```529```
526 530
527Um nur Metriken zu exportieren, ohne Ereignisse oder Protokolle:531Um nur Metriken ohne Events oder Logs zu exportieren:
528 532
529```bash theme={null}533```bash theme={null}
530export CLAUDE_CODE_ENABLE_TELEMETRY=1534export CLAUDE_CODE_ENABLE_TELEMETRY=1
533export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317537export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
534```538```
535 539
536Um nur Ereignisse und Protokolle zu exportieren, ohne Metriken:540Um nur Events und Logs ohne Metriken zu exportieren:
537 541
538```bash theme={null}542```bash theme={null}
539export CLAUDE_CODE_ENABLE_TELEMETRY=1543export CLAUDE_CODE_ENABLE_TELEMETRY=1