-
-
Notifications
You must be signed in to change notification settings - Fork 79.1k
diagnostics.otel.captureContent.* is non-functional — runtime broadcast emits sanitized paramsSummary only #77391
Copy link
Copy link
Open
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Summary
diagnostics.otel.captureContent.{inputMessages,outputMessages,toolInputs,toolOutputs}is documented but does nothing. The runtime emits only sanitizedparamsSummaryon the broadcast stream that bundleddiagnostics-otelconsumes — rawinputMessages,toolInput, andtoolResultcontent never appear in OTel span attributes. Confirmed empirically against pre-bug traces from 2026-05-03 through 2026-05-04 withcaptureContent: {enabled: true, inputMessages: true, outputMessages: true, toolInputs: true, toolOutputs: true}: zeroopenclaw.content.*attributes on any span.Environment
2026.5.3-1(also confirmed on2026.5.3and earlier 5.2 releases)Reproduction
Observed
Spans reach the OTLP endpoint with
openclaw.run,model_call,tool.executionnames, but noopenclaw.content.*,openclaw.input.*, oropenclaw.output.*attributes are populated. Tool spans carry onlyparamsSummary(a hash + length, no actual values).Expected
Per docs (
/gateway/opentelemetry),captureContent: trueshould populate raw input/output content as span attributes (size-capped, optionally redacted).Working approach (for reference)
We bypassed this by writing a separate plugin that subscribes to public hooks (
api.on("before_tool_call", ...),api.on("llm_input", ...), etc.) — the hook arguments contain full unsanitized content because the runtime calls hook handlers with the real data, not the sanitized broadcast. Code: https://github.com/mjunaidca/tutorclaw/tree/main/plugins/tutorclaw-tracingThis works, but it means every operator who wants content visibility has to ship their own plugin. The bundled
diagnostics-otel's configuration knob is the natural seam — it just doesn't work today.Suggested fix
Either:
captureContent.*flags through to actual content-emission paths so the documented config does what it claims; ORcaptureContentas deprecated/no-op and point operators at the public-hook plugin pattern as the recommended approach.Related
Related to #77390 (bundled-only origin gate) — even if
captureContentworked, externally-installeddiagnostics-otelcouldn't receive the events to attach attributes to.