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
/
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
No line in this hunk matches that.