diff --git a/.openclaw-sync/source.json b/.openclaw-sync/source.json index 38f4711bc..33c715d52 100644 --- a/.openclaw-sync/source.json +++ b/.openclaw-sync/source.json @@ -1,5 +1,5 @@ { "repository": "openclaw/openclaw", - "sha": "5e8fda4c644137266e300d213787341751e53682", - "syncedAt": "2026-04-26T07:22:30.091Z" + "sha": "a77996dc56380c81a84e20e3f796e1cbbb0d7477", + "syncedAt": "2026-04-26T07:26:14.846Z" } diff --git a/docs/gateway/opentelemetry.md b/docs/gateway/opentelemetry.md index 26d185abd..7a6611621 100644 --- a/docs/gateway/opentelemetry.md +++ b/docs/gateway/opentelemetry.md @@ -19,6 +19,9 @@ works without code changes. For local file logs and how to read them, see and exec. - **`diagnostics-otel` plugin** subscribes to those events and exports them as OpenTelemetry **metrics**, **traces**, and **logs** over OTLP/HTTP. +- **Provider calls** receive a W3C `traceparent` header from OpenClaw's + trusted model-call span context when the provider transport accepts custom + headers. Plugin-emitted trace context is not propagated. - Exporters only attach when both the diagnostics surface and the plugin are enabled, so the in-process cost stays near zero by default. @@ -121,6 +124,11 @@ identifiers (channel, provider, model, error category, hash-only request ids) and never include prompt text, response text, tool inputs, tool outputs, or session keys. +Outbound model requests may include a W3C `traceparent` header. That header is +generated only from OpenClaw-owned diagnostic trace context for the active model +call. Existing caller-supplied `traceparent` headers are replaced, so plugins or +custom provider options cannot spoof cross-service trace ancestry. + Set `diagnostics.otel.captureContent.*` to `true` only when your collector and retention policy are approved for prompt, response, tool, or system-prompt text. Each subkey is opt-in independently: