l4 telemetry
l4 telemetry controls whether the CLI sends panic stack traces and the failing command name to LevelFour. It is off by default. You opt in once with l4 telemetry enable and the setting is remembered across upgrades.
l4 telemetry enable
l4 telemetry disable
l4 telemetry statusWhat gets sent
When telemetry is enabled and the CLI crashes:
- The panic stack trace
- The Cobra command name that triggered the panic (e.g.
recommendations list) - The CLI version and platform string
That's it. No flag values, no arguments, no environment, no file paths beyond what the stack trace itself contains.
What gets scrubbed before transport
A scrubber runs over every event before it leaves the process:
- Home directory paths are rewritten to
~ - AWS access key IDs and secret access keys are redacted
- Known token environment variables (
LEVELFOUR_TOKEN,GITHUB_TOKEN, etc.) are redacted from event tags - All HTTP request headers and cookies are stripped
Where the setting lives
The opt-in flag is stored in your CLI config alongside settings managed by l4 config. It is not exported by l4 config list; use l4 telemetry status to read it.
When telemetry is silently a no-op
Crash reports only flow when both conditions hold:
- You ran
l4 telemetry enable, and - The binary was built with a Sentry DSN baked in via release-time
-ldflags.
Binaries built locally with go install or go build have an empty DSN and will never send anything, even if you opt in. Only the official release builds (from Homebrew, GitHub Releases, or go install's package proxy at a tagged version) carry the DSN.
Examples
Check the current state in a script:
if l4 telemetry status | grep -q enabled; then
echo "Telemetry is on"
fiDisable telemetry on a shared CI runner where you previously opted in on a personal laptop:
l4 telemetry disableRelated
- Authentication: nothing related to telemetry, but governs the other CLI state file
l4 config: adjacent settings (default provider, default format, etc.)