notel helps you audit and update telemetry settings across your CLI dev tools.
- Overview
- Requirements
- Install
- Usage
- Example Output
- Supported Tools by Category
- Build
- Feedback or Suggestions
Many popular developer tools collect telemetry by default. This can have benefits for both end users and vendors, but can also be a legitimate privacy concern. I've found it frustrating to have to individually configure each tool to disable telemetry and keep track of which ones have telemetry enabled by default, so I built this tool to:
- Audit which installed dev tool CLIs have telemetry enabled
- Check if you've set the right opt-out environment variables
- Suggest the exact commands to disable telemetry (export env vars for shells or relevant CLI commands)
The initial design goal focuses on environment variable configuration to
keep the scope maintainable. notel does not make any changes to your
environment or run any CLI commands.
- Disabling telemetry exercises your rights to privacy and control over your data and development environments.
- Poorly considered telemetry collection can potentially impact performance or resources.
- Telemetry collection may leak unexpected details (internal project names, dependencies, or build configurations) from private build or CI environments.
- Vendors aren't always up front about telemetry collection practices and details.
- Telemetry signals can provide insight into tool adoption, usage patterns, and crash information that will help vendors improve the product experience.
- Aggregated telemetry signals can help product users understand usage of packages, features, and versions.
- Well-implemented telemetry can have negligible performance impact and can be configured to exclude CI environments.
There is a proposed DO_NOT_TRACK standard which
aims to unambiguously express a user's intent to opt out of:
- Ad tracking
- Usage reporting (anonymous or otherwise)
- Telemetry
- Crash reporting
- Non-essential-to-functionality requests
However, this hasn't been widely adopted yet.
Some interesting open source projects I found on GitHub after scratching my own itch to audit telemetry tools in my environments:
alloydwhitlock/do-not-track-cli: A single.envfile to opt out of telemetry across CLI tools, frameworks, SDKs, and runtimes.beatcracker/toptout: This project collects data about telemetry in applications in machine-readable format and makes it easy to create derivative works such as awesome-lists, configuration scripts, APIs, etc.
- Hacker News (3 May 2026): donottrack.sh
- Go Telemetry (v1.23+): By default, telemetry data is kept only on the local computer, but users may opt in to uploading an approved subset of telemetry data to telemetry.go.dev.
Install from the Homebrew tap:
brew install stennie/notel/notelOr tap the repository first and then install notel:
brew tap stennie/notel
brew install notelIf you manage tools with a Brewfile:
tap "stennie/notel"
brew "notel"The Homebrew formula lives in
stennie/homebrew-notel and
installs release artifacts published from this repository.
notel [command]
| Command | Description |
|---|---|
notel audit |
Show telemetry status for all installed tools |
notel audit --all |
Show status for all tools (including those not installed) |
notel audit --verbose |
Detailed audit with fix hints for all installed tools |
notel audit --verbose --all |
Detailed audit for all tools (including those not installed) |
notel audit --fix / notel audit -f |
Print shell commands (using stdout) to disable telemetry for the current detected shell. Diagnostic messages and errors use stderr so the output is cleanly redirectable. |
notel audit --fix=zsh / notel audit -f=zsh |
Print shell commands for a specific shell (bash, fish, powershell, zsh) |
notel list / notel ls |
List all supported tools and their opt-out variables |
notel version / notel --version |
Show the application version |
notel help |
Show help |
When --fix is combined with --all and/or --verbose, the audit report is
still shown on stderr and the shell commands remain redirect-safe on stdout.
| Command | Screenshot |
|---|---|
notel audit |
![]() |
notel audit --fix |
![]() |
notel audit --verbose |
![]() |
| Tool | Environment Variable | Opt-out Value | Data Collection |
|---|---|---|---|
| Do Not Track | DO_NOT_TRACK |
1 |
Signals a global preference to disable telemetry, analytics, crash reporting, and non-essential tracking. |
| Tool | Environment Variable | Opt-out Value | Data Collection |
|---|---|---|---|
| Algolia CLI | ALGOLIA_CLI_TELEMETRY |
0 |
Command usage, operating system details, CLI version, and local profile metadata. |
| Azure CLI | AZURE_CORE_COLLECT_TELEMETRY |
0 |
Command usage, performance metrics, and error-rate telemetry.
|
| Cloudflare Wrangler CLI | WRANGLER_SEND_METRICS |
false |
Command names, anonymized arguments and flags, anonymized project metadata, API timing, CLI and runtime details, session duration, CI or interactive usage, AI agent usage, sanitized error details, and general machine information.
|
| CockroachDB | COCKROACH_SKIP_ENABLING_DIAGNOSTIC_REPORTING |
true |
Cluster diagnostics, telemetry, and crash reports sent to Cockroach Labs. NOTE: The environment variable only has effect if be set before initialising the first node of the cluster. After a cluster is running update the |
| GitHub CLI | DO_NOT_TRACK / GH_TELEMETRY |
false / 1 |
Command usage, feature usage, and diagnostic telemetry from the GitHub CLI.
|
| Google Cloud SDK | CLOUDSDK_CORE_DISABLE_USAGE_REPORTING |
true |
Anonymized command execution metrics, timing, and error status. NOTE: Unless you opt-in during Google Cloud CLI installation, gcloud CLI software does not collect usage statistics.
|
| Hasura CLI | HASURA_GRAPHQL_ENABLE_TELEMETRY |
false |
Command name, timestamp, error status, server version and UUID, operating system platform and architecture, and CLI version. |
| Hugging Face CLI | DO_NOT_TRACK / HF_HUB_DISABLE_TELEMETRY |
1 / 1 |
By default, some data is collected by HF libraries (transformers, datasets, gradio,..) to monitor usage, debug issues and help prioritize features. Each library defines its own policy (i.e. which usage to monitor) but the core implementation happens in huggingface_hub. |
| Netlify CLI | NETLIFY_TELEMETRY_DISABLED |
1 |
Anonymous CLI usage and diagnostic telemetry.
|
| Railway CLI | DO_NOT_TRACK / RAILWAY_NO_TELEMETRY |
1 / 1 |
Command and subcommand names, duration, success, truncated error message, OS, architecture, CLI version, and whether the command ran in CI. |
| Redocly CLI | REDOCLY_TELEMETRY |
off |
Anonymous usage information about Redocly project feature usage, with additional filtering to avoid sending secrets and other sensitive data. |
| Stripe CLI | STRIPE_CLI_TELEMETRY_OPTOUT |
1 |
Command usage patterns, error rates and types, performance metrics, operating system details, CLI version information, and detected AI coding agent names. |
| Turborepo | TURBO_TELEMETRY_DISABLED |
1 |
Anonymous command usage, host information, and repo or task metrics.
|
| Vercel CLI | VERCEL_TELEMETRY_DISABLED |
1 |
Command usage, arguments, CLI version, and general machine information.
|
| Tool | Environment Variable | Opt-out Value | Data Collection |
|---|---|---|---|
| Angular CLI | NG_CLI_ANALYTICS |
false or ci |
Command usage, selected flags, workspace shape, and local version metadata. `ng analytics [disable |
| Astro | ASTRO_TELEMETRY_DISABLED |
1 |
Anonymous command usage, integration usage, and project metadata.
|
| Expo CLI | EXPO_NO_TELEMETRY |
1 |
Anonymous CLI usage and diagnostics for Expo development workflows. |
| Gatsby | GATSBY_TELEMETRY_DISABLED |
1 |
Anonymous command usage, plugin usage, and machine characteristics.
|
| Next.js | NEXT_TELEMETRY_DISABLED |
1 |
Anonymous command usage, session timing, and project or machine characteristics. `npx @nuxt/telemetry [status |
| Nuxt | NUXT_TELEMETRY_DISABLED |
1 |
Anonymous command usage, module usage, and environment characteristics. |
| Storybook | STORYBOOK_DISABLE_TELEMETRY |
true |
Anonymous framework usage, addon data, and environment metadata.
|
| Tool | Environment Variable | Opt-out Value | Data Collection |
|---|---|---|---|
| CocoaPods | COCOAPODS_DISABLE_STATS |
true |
Anonymous pod install statistics, including hashed project target identifiers, target product types, pod names, and CocoaPods version information. |
| Homebrew | HOMEBREW_NO_ANALYTICS |
1 |
Anonymous install events, command usage, and build error metadata.
|
| Poetry | POETRY_TELEMETRY_ENABLED |
0 |
Anonymous usage statistics and telemetry about Poetry command execution. |
| Yarn (v2+) | YARN_ENABLE_TELEMETRY |
0 |
Anonymous command usage and version information. |
| Tool | Environment Variable | Opt-out Value | Data Collection |
|---|---|---|---|
| Bun | DO_NOT_TRACK |
1 |
Anonymous telemetry and crash-reporting signals from Bun tooling. |
| .NET SDK | DOTNET_CLI_TELEMETRY_OPTOUT |
1 |
CLI command usage, SDK versions, and exception metadata. |
| Flutter | FLUTTER_CLI_CRASH_REPORTING |
false |
CLI crash reports, tool usage signals, and local environment metadata. Note: FLUTTER_CLI_CRASH_REPORTING does not disable the general analytics reporting setting which must be set via the CLI:
|
| Node.js | DISABLE_TELEMETRY / NODE_NO_TELEMETRY |
1 |
Anonymous runtime and CLI telemetry in Node features that support it. |
| Tool | Environment Variable | Opt-out Value | Data Collection |
|---|---|---|---|
| Semgrep | SEMGREP_SEND_METRICS |
off |
Usage metrics about Semgrep runs, registry usage, and login-related activity. `semgrep --metrics auto |
| Sentry CLI | SENTRY_CLI_NO_TELEMETRY |
1 |
Anonymous CLI usage and diagnostic telemetry. |
- Local build:
just build->bin/notel - Cross-platform release artifacts:
just release->dist/ - Full release preflight plus artifacts:
just release-check - Release packaging is shared by local and CI builds via
scripts/release.sh
just release builds archives for:
darwin/amd64darwin/arm64linux/amd64linux/arm64windows/amd64windows/arm64
Release artifacts follow the convention notel_<version>_<os>_<arch>.tar.gz
or .zip, and dist/SHA256SUMS is generated for the packaged archives.
Add an entry to internal/tools/registry.go:
{
Name: "My Tool",
Description: "Description of the tool",
DocumentationURL: "https://example.com/docs/telemetry",
DataCollection: "Anonymous command usage and diagnostic metadata.",
Binary: "mytool", // binary name checked via PATH
Category: "Framework",
EnvChecks: []EnvCheck{
{
Name: "MYTOOL_TELEMETRY_DISABLED",
ValidValues: []string{"1", "true"},
Description: "Disables My Tool telemetry",
},
},
},Keep registry entries sorted alphabetically by Category and then by Name.
notel/
├── main.go
├── cmd/
│ ├── root.go # Cobra root command
│ ├── audit.go # notel audit
│ └── list.go # notel list
└── internal/
├── tools/
│ └── registry.go # Tool definitions (add new tools here)
├── check/
│ └── checker.go # Detection & env-var audit logic
└── output/
└── formatter.go # Lipgloss-styled output
Licensed under the Apache License, Version 2.0. See LICENSE.
Bug reports, feature requests, and questions can be posted in the Issues section on GitHub.


