• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

supabase / cli / 26590894350
64%

Build:
DEFAULT BRANCH: develop
Ran 28 May 2026 05:28PM UTC
Jobs 1
Files 219
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

28 May 2026 05:26PM UTC coverage: 63.766% (+0.007%) from 63.759%
26590894350

push

github

web-flow
fix(cli): skip identity stitch in CI to stop ephemeral-env identify spam (#5366)

## What

Gate the auto-stitch path on `!isCI` so CI runners and other ephemeral
environments stop firing `$identify` / `$create_alias` once per CLI
invocation.

```go
func (s *Service) NeedsIdentityStitch() bool {
    return s != nil && s.state.DistinctID == "" && s.canSend() && !s.isCI
}
```

`canSend()` is unchanged, so `cli_*` capture events still fire from CI.
`login.go` calls `StitchLogin` directly without this guard, so an
explicit `supabase login` still identifies in CI.

## Why

PostHog alert "total identify events increase" fired 2026-05-22 (244.5%
day-over-day). I traced it to the Go CLI's first credentialed production
deploy (#5329 at 2026-05-21 08:24 UTC, the binary that combined #5054's
identity-stitch logic with #5314's credential wiring). Hour-by-hour
change-point matches that deploy within minutes; the spike is 100% from
`$lib = 'posthog-go'`.

The persistence code is correct. `SaveState` writes
`~/.supabase/telemetry.json` synchronously after a successful stitch.
The break is environmental: CI runners, Docker containers, and `npx
supabase` wrappers wipe the home directory between invocations, so every
fresh process re-stitches.

Cohort breakdown over 6 days post-deploy:

| Days active in window | Users | Identifies / user |
| -- | -- | -- |
| 1 day only | 48,387 | 6.5 |
| 6 days (daily) | 1,747 | 95.7 |

Single-day users look like CI runs. The daily, 96-identifies-per-user
cohort looks like engineers whose own CI runs many Supabase workflows.

Daily `posthog-go $identify` volume went from ~15K to 638K/day and was
still growing.

## Why not gate `canSend()` itself

`cli_*` capture events are heavily used:

| Event | CI share |
| -- | -- |
| `cli_stack_started` | 85% |
| `cli_project_linked` | 57% |
| `cli_command_executed` | 31% |
| `cli_login_completed` | 14% |

Six existing PostHog insights consume `cli_command_executed`, including
the Agent-Led Growth ... (continued)

10040 of 15745 relevant lines covered (63.77%)

7.08 hits per line

Coverage Regressions

Lines Coverage ∆ File
7
83.33
0.31% internal/telemetry/service.go
Jobs
ID Job ID Ran Files Coverage
1 26590894350.1 28 May 2026 05:28PM UTC 219
63.77
GitHub Action Run
Source Files on build 26590894350
  • Tree
  • List 219
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26590894350
  • ca47a157 on github
  • Prev Build on develop (#26498495324)
  • Next Build on develop (#26670011697)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc