Telemetry Pro
Privacy-respecting usage metrics for AI-assisted development
PairCoder includes a telemetry system that helps you understand how you use AI assistance and improve your workflows over time. It also provides anonymized usage data during license validation for product health monitoring and abuse prevention.
Telemetry data is anonymized before transmission. No source code, file paths, task descriptions, or conversation content is ever sent. Data is used exclusively for license validation, product health, and abuse prevention — it is never shared with third parties or sold.
Overview
The telemetry system collects metrics about task completions:
- Token usage (input/output)
- Task duration
- Task types and outcomes
- Human interventions during sessions
Detailed telemetry is stored locally in .paircoder/telemetry/. During periodic license validation, a small anonymized usage snapshot is transmitted to BPS servers. This is standard practice for licensed software.
Privacy Levels
You can control the level of detail collected and shared. Choose from three privacy levels:
| Level | Local Collection | Shared During License Validation | User Choice |
|---|---|---|---|
| minimal | Core session metrics | Token counts, sessions, tasks, hours, environment info | Always active (mandatory) |
| standard | + Feature usage, performance | + Command frequencies, error rates | Opt-in |
| full | + Estimation accuracy, workflows | + Calibration data, model stats | Opt-in |
Privacy Level Details
- minimal (default, always active): Collects aggregate metrics. Task IDs and repository names are redacted. During license validation, anonymized counts (tokens, sessions, tasks, hours) and basic environment info (OS, CLI version) are shared. This level cannot be disabled — it provides the minimum data needed for license validation and product health monitoring.
- standard: Additionally collects and shares anonymized command frequencies and error rates. Opt in to help improve PairCoder.
- full: Additionally collects and shares calibration data and model routing statistics. Opt in for maximum contribution to product improvement.
Regardless of your privacy level, PairCoder never transmits: source code, file paths, directory structures, task descriptions, plan content, conversation transcripts, or repository names. You can verify this yourself using bpsai-pair telemetry export --anonymize.
What Data Is Transmitted
During periodic license validation, PairCoder attaches a small anonymized usage snapshot to the existing validation request. No additional network calls are made.
Always sent (MINIMAL)
- Aggregate counts: total tokens, sessions, tasks completed, hours active
- Error count and estimation accuracy (improves calibration for all users)
- Environment: OS, Python version, CLI version
- Audit hash (integrity verification, not content)
- Snapshot timestamp
Additionally sent if STANDARD (default)
- Feature usage: top 15 most-used CLI commands (names only, no arguments)
- Cache hit rate
Additionally sent if FULL (opt-in)
- Model routing statistics
- Workflow patterns
Data Use Policy
All transmitted data is:
- Anonymized — no code, file paths, task descriptions, or conversation content is ever sent
- Used exclusively for license validation, product health monitoring, and abuse prevention
- Never shared with third parties
- Never sold under any circumstances
CLI Commands
Check Status
bpsai-pair telemetry status
bpsai-pair telemetry status --json
Shows current privacy level, retention period, total records, token usage, success rate, breakdown by task type, and audit log health.
Configure Settings
# View current configuration
bpsai-pair telemetry config
# Set privacy level
bpsai-pair telemetry config --privacy minimal
bpsai-pair telemetry config --privacy standard
bpsai-pair telemetry config --privacy full
# Set retention period (days, 0 = forever)
bpsai-pair telemetry config --retention 90
# Combine options
bpsai-pair telemetry config --privacy standard --retention 30
Export Data
# Export as JSON (default)
bpsai-pair telemetry export
# Export as CSV or JSONL
bpsai-pair telemetry export --format csv
bpsai-pair telemetry export --format jsonl
# Save to file
bpsai-pair telemetry export --output telemetry-backup.json
# Filter by date range or task type
bpsai-pair telemetry export --since 2026-01-01 --until 2026-02-01
bpsai-pair telemetry export --task-type feature
# See what would be transmitted during validation
bpsai-pair telemetry export --anonymize
The --anonymize option shows exactly the same data that would be transmitted during license validation.
Data Storage
.paircoder/telemetry/
├── telemetry.jsonl # Telemetry records
├── audit.jsonl # Tamper-evident audit log
└── config.yaml # Your settings
Audit Log
Every telemetry operation is logged to a hash-chained audit trail. This ensures you can see what data was collected and when, and that data hasn't been tampered with. Check audit chain integrity via bpsai-pair telemetry status — look for "Chain Valid: ✓" in the output.
Automatic Collection
When you complete a task using bpsai-pair ttask done, telemetry is automatically collected from your Claude session.
The collection process:
- Finds the most recent Claude Code session for your project
- Parses session data to extract metrics
- Applies your privacy level filtering
- Stores the filtered record locally
- Updates the audit log
Collection never blocks task completion — if anything fails, the task is still marked complete.
FAQ
Can I delete my local telemetry data?
Yes. Delete the files in .paircoder/telemetry/.
Can I opt out of telemetry entirely?
Baseline telemetry at the MINIMAL level is always collected during license validation. This includes aggregate counts, error count, and estimation accuracy — the minimum data needed for product health monitoring and calibration improvement. This is standard practice for licensed software.
The default privacy level is standard, which adds feature usage and cache hit rate. You can opt down to minimal or opt up to full:
bpsai-pair telemetry config --privacy standard
What is the transmitted data used for?
The anonymized usage data is used exclusively for:
- License validation — verifying active licenses during periodic checks
- Product health — monitoring error rates, version adoption, and system stability
- Abuse prevention — detecting refund abuse and license misuse
This data is never shared with third parties and never sold.
What happens to old data?
If you set a retention period (e.g., --retention 90), records older than that are cleaned up during normal operations. Set --retention 0 to keep data forever.