Follow Discord
Sweep 25 Sep 2026 · 19:33Z Build v2.1.283 504 read Stable v2.1.274 Latest v2.1.283 Next v2.1.283 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One change · claude-code

Claude apps gateway configuration changedclaude-apps-gateway-config

Nearest release: v2.1.283, published 3 hours before upstream edited the page. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.

Upstream edited this page at 25 Sep 2026 22:34 UTC, give or take a minute or two: the time comes from Anthropic’s own sitemap rather than from a commit. This site recorded the change at 25 Sep 2026 22:37 UTC.

Upstream edited
Recorded here
Lines+31added
Lines−0removed
From line 877 where the diff opens
First seen 14 Aug 2026 this site's first read of the page
Recorded edits30to this page, all time

#### Add your own labels

The whole hunk

from line 877, old and new numbered
/
lines
from line 877
877877* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`
878878* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`
879879 
880When you [add your own labels](#add-your-own-labels), the gateway also pushes `OTEL_RESOURCE_ATTRIBUTES`.
881 
880882Before Claude Code v2.1.265 on the gateway server, the gateway pushed all three exporter selectors as `otlp`, including for signals no destination opted into.
881883 
882884The pushed endpoint is built from the public URL, so metrics and logs need no OTEL configuration from developers or policies.
from line 895
893895Set it to `1` only in the policies whose groups you want traced. A policy that doesn't set it inherits the value from your `match: {}` catch-all policy if that policy sets one, per the [merge rules](#managed). To keep a group's clients from sending traces even when a developer sets the variable locally, set it to `0` in that group's policy.
894896 
895897Both protobuf and JSON OTLP encodings are relayed, and any OpenTelemetry-compatible backend works as a destination.
898 
899#### Add your own labels
900 
901To put fixed labels such as `service.namespace` or `deployment.environment.name` on the telemetry of sessions signed in through the gateway, set `telemetry.resource_attributes`. Each label is an OpenTelemetry resource attribute, and every destination receives the same labels.
902 
903Sessions get the labels only when you also set `telemetry.forward_to` and `listen.public_url`. This example adds two labels:
904 
905```yaml theme={null}
906telemetry:
907 forward_to:
908 - url: https://otel-collector.internal.example.com
909 resource_attributes:
910 service.namespace: claude
911 deployment.environment.name: prod
912```
913 
914The gateway refuses to start when a label breaks one of these rules, and the startup error names the label:
915 
916* Names use only letters, digits, `.`, `_`, and `-`
917* Names aren't reserved. Compared in any letter case, the reserved names are everything that starts with `user.`, `enduser.`, or `identity.`, plus `service.name`, `service.version`, `claude.deployment_mode`, `host.arch`, `os.type`, `os.version`, and `wsl.version`
918* Values are non-empty printable ASCII with no space and none of `, ; = \ " %`
919* Values are at most 255 characters as the gateway counts them after percent-encoding, so `/`, `:`, and `@` each count as three
920* Values are text, so quote a number, `true`, or `false`
921 
922You need Claude Code v2.1.281 or later on the gateway server to set `telemetry.resource_attributes`. An earlier gateway refuses to start when it finds the key. Upgrade every replica before you add the key, and remove the key before you roll back to an earlier version.
923 
924Terminal sessions signed in through `/login` receive the labels as `OTEL_RESOURCE_ATTRIBUTES`, pushed with the other [telemetry variables](#telemetry). If you set `OTEL_RESOURCE_ATTRIBUTES` in a policy's `env` block, terminal sessions that policy matches get that value instead of the labels. Claude Desktop receives the labels from the gateway alongside `user.email` and the other identity attributes.
925 
926Claude Code also copies each label onto every metric data point, so you can filter metrics by it in a backend that doesn't index resource attributes. To turn that copy off, see [Metrics cardinality control](/docs/en/monitoring-usage#metrics-cardinality-control).
896927 
897928#### Export directly to your collector
898929 
Feedback