Telemetry consent text says 'no repo names ever sent' but omits that they're recorded locally
- Dominant language
- TypeScript
- Stars
- 133k
- Forks
- 19.9k
- Avg merge
- 18h 46m
- Merged PRs (30d)
- 26
Description
## Summary
The telemetry consent prompt and README privacy section both say:
> No code, file paths, or repo names are ever sent.
That claim is accurate for **remote transmission** — \`gstack-telemetry-sync\` correctly strips \`_repo_slug\` and \`_branch\` before POSTing to Supabase. But \`gstack-telemetry-log\` writes both fields into the local JSONL at \`~/.gstack/analytics/skill-usage.jsonl\` on **every skill run**, regardless of telemetry tier — including when the user sets \`telemetry: off\`.
A user reading "no repo names are ever sent" would reasonably conclude no repo names are recorded anywhere. That's not what happens.
## Affected locations
| File | Line | Current text |
|------|------|--------------|
| \`scripts/resolvers/preamble/generate-telemetry-prompt.ts\` | 9 | `No code, file paths, or repo names are ever sent.` |
| \`README.md\` | ~378 | `What's never sent: code, file paths, repo names, branch names, ...` |
| \`SKILL.md\` (generated) | ~190 | same as generate-telemetry-prompt.ts |
## Root cause
\`gstack-telemetry-log\` constructs a JSON record with a \`_repo_slug\` field (and the older format uses \`repo\`) to signal "local-only":
```bash
printf '... "_repo_slug":"%s","_branch":"%s" ...' "$REPO_SLUG" "$BRANCH" >> "$JSONL_FILE"
```
The sync script strips them before transmitting. The consent copy was written with transmission in mind, not local storage.
## Reproducer
1. Set \`telemetry: off\` in \`~/.gstack/config.yaml\`
2. Run any gstack skill
3. \`cat ~/.gstack/analytics/skill-usage.jsonl | grep repo\`
You will see \`_repo_slug\` / \`repo\` entries despite telemetry being off.
## Proposed fix
Change consent text from:
> No code, file paths, or repo names are ever sent.
To something like:
> No code, file paths, or repo names are ever **transmitted**. Your repo name and branch are stored locally in \`~/.gstack/analytics/\` for session tracking but never leave your machine.
The data stays local and that's fine — the phrasing just needs to match what the code actually does.
Contributor guide
Assessment
This issue has not been assessed yet.