We’re thinking of switching to the Enterprise Plan for the new OpenTelemetry export and hit an identity-resolution gap I’d love guidance on.
Per the Wire Reference, every metric/log carries a cursor.user.id resource attribute- a numeric, “opaque team-scoped user id.” I dont know if the export carries email/login/name, and I don’t see any mechanism to add custom resource attributes to it.
To attach a human identity to that numeric id, we can join against an Admin/Org API- but the APIs disagree on id format:GET /teams/members and POST /teams/spend return a “user_…” -prefixed string id.
So the numeric id in the OTel export wouldn’t resolve to users.
Questions:
- What is the supported way to resolve the OTel numeric cursor.user.id to an email/name?
- Since the export runs server-side, does Cursor pick up a client-supplied resource attribute (e.g. OTEL_RESOURCE_ATTRIBUTES set in a developer’s shell) into the export?
- Is there any admin/managed mechanism to add a custom resource attribute (e.g. the developer’s email) to the exported telemetry?
- Any plans to emit an email or user_… id attribute on the OTel export directly?
Hey @Noaa_Kurlender, thanks for the detailed questions!
- Use the Organization Admin API’s members endpoint (
GET /organizations/members) - it returns each member’s numeric user id (the same value the export emits as cursor.user.id) plus their email and name, so you can build the mapping from there: Organization API | Cursor Docs
The /teams/members and /teams/spend endpoints return an encoded user_… form of that same id, which is why they don’t line up with the export. Note this needs an Organization, which is part of Enterprise - your account team can set one up (single-team setups included) during onboarding.
-
No - the export is generated entirely server-side, so a developer’s local OTEL_RESOURCE_ATTRIBUTES isn’t picked up.
-
Not today - destination config is just the endpoint URL, auth headers, and event-family toggles. To add identity, point the export at your own OpenTelemetry Export | Cursor Docs and enrich there (join cursor.user.id → email via a periodic pull from the members endpoint).
-
No committed plans for that right now - the numeric id plus the members endpoint is the intended path today. Happy to pass the request along.