The Sentry exception reporting integration sets environment from the deployment type — prod / dev / preview — and the docs state it can't be overridden. Since dev and staging deployments are both prod-type, every deployment we run reports environment: prod. A search for environment:dev returns nothing, ever.
That's a problem because environment isn't just any tag in Sentry — it's a first-class dimension that alert rules, saved searches, dashboards and release health are all built on. Every one of those is silently wrong for Convex while looking right. The only thing that separates our deployments today is server_name, so an alert rule that means "production only" has to hardcode a deployment name, which breaks the day a deployment is recreated.
Your own PostHog integration already models this correctly: it reports the deployment type as convexdeploymenttype and leaves environment alone. We're asking for the same treatment in Sentry. Any of these would resolve it:
Let a custom tag named environment win over the built-in one, or Rename the built-in tag to convexdeploymenttype, matching the PostHog integration, or Add an explicit "environment" field next to the DSN in Deployment Settings → Integrations. Our workaround is one Sentry project per deployment, so the project selector answers "which environment" instead of the tag. It works, but it means three projects to keep in sync — every filter, alert rule and saved search maintained in triplicate — for what should be one tag value.