microsoft / microsoft/vscode

github-authentication: education.github.com telemetry call fires on every window launch and is unnecessary for EMU accounts

Open
#327,377 0 comments 0 reactions 1 assignee Claimed by @TylerLeonhardt View on GitHub
Dominant language
TypeScript
Stars
193k
Forks
42.4k
PR merge metrics
PR metrics pending

Description

Does this issue occur when all extensions are disabled?: Yes (built-in extension)

- VS Code Version: [`1.130.0`](https://github.com/microsoft/vscode/releases/tag/1.130.0)
- OS Version:
```text
ProductName: macOS
ProductVersion: 26.5.2
BuildVersion: 25F84
```

### Summary

The built-in `github-authentication` extension calls `https://education.github.com/api/user` to enrich a telemetry event with student/faculty status. This was previously raised in #173645 (2023), where the GitHub Education team reported ~85k calls/hour and noted the data is telemetry-only. The call still exists today in `extensions/github-authentication/src/githubServer.ts` (`checkUserDetails`).

Two aspects make it heavier than intended:

1. **It fires once per account on every window launch.** The dedup guard (`_accountsSeen` in `src/github.ts`, `afterSessionLoad`) is an in-memory `Set`, so it resets whenever the extension host restarts.

2. **For Enterprise Managed Users (EMUs) the call is guaranteed useless.** EMU accounts cannot be GitHub Education students/faculty. The method already detects EMUs — but only *after* the fetch, purely to populate the `isManaged` telemetry property:

```ts
// Apparently, this is how you tell if a user is an EMU...
isManaged: session.account.label.includes('_') ? 'true' : 'false'
```

### Real-world impact

Large enterprises commonly route all developer traffic through a single NAT egress IP. At start of business hours, thousands of developers launching VS Code produce a burst of these requests from one IP. education.github.com appears to treat them as anonymous traffic and applies IP-based rate limiting — and GitHub support has attributed enterprise-wide 429s on github.com web properties to this traffic pattern. The end-user symptom is sporadic rate-limit pages on github.com during peak hours for users who never visited education.github.com themselves.

### Proposed fix

Minimal change in `checkUserDetails`:

- Evaluate the EMU heuristic (`session.account.label.includes('_')`) before any network call.
- If EMU, skip the education.github.com fetch and report `isEdu: 'none'`.
- Telemetry event name and properties are unchanged, so no GDPR annotation changes are needed.

Possible follow-up (separate change): persist the edu result in `globalState` keyed by account id, making the check once-per-machine rather than once-per-launch for non-EMU users as well.

> [!note]
> I have a PR ready implementing the minimal fix and am happy to adjust the approach based on feedback.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.