{"version":"2.1.275","anchor":"otelheadershelper-failures-are-now-typed-and-telemetered","canonical_anchor":"otelheadershelper-failures-are-now-typed-and-telemetered","heading":"otelHeadersHelper failures are now typed and telemetered","tier":"notice","area":"Telemetry","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.275\/e\/otelheadershelper-failures-are-now-typed-and-telemetered","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.275","markdown":"### otelHeadersHelper failures are now typed and telemetered\n\notelHeadersHelper failures now carry a specific error type and are reported to telemetry\n\n**What**\n\nWhen `otelHeadersHelper` (a user-supplied command that generates rotating [OpenTelemetry](\/docs\/en\/monitoring-usage#dynamic-headers) headers) fails, Claude Code now records exactly why. Errors are classified into one of eight kinds: timeout, bad exit code, killed, failed to spawn, empty output, invalid JSON, output that isn't an object, or a non-string value inside it. Each failure is reported through a new event, `tengu_otel_headers_helper_failed`, that includes the failure kind and exit code, and is also broadcast so anything watching can react to it. The helper is now also fetched in the background ahead of time rather than only on demand.\n\n**Why**\n\nThis makes it much easier to diagnose why a custom OpenTelemetry header command isn't working, since the failure is now categorized instead of surfacing as a generic error.\n\n- Area: Telemetry\n- Names: `otelHeadersHelper`\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 1\/5"}