Privacy Policy
Your commands never leave your Mac.
Easy Complete's autocomplete engine runs entirely on-device: parsing your command line, generating suggestions, and rendering the overlay all happen locally, with no account and no cloud calls. Separately from that, the app collects a small set of anonymous usage statistics so we know how many people use it and whether completions are useful. This page lists exactly what is sent, what is never sent, and how to turn it off.
What we collect
Every event carries the app version, macOS version, your login shell name (e.g. zsh), the terminal app name when detectable, and a random device ID — a UUID generated on first launch that is not derived from your hardware, username, or anything identifying, and resets if you reinstall.
| Event | When | Extra data |
|---|---|---|
| app_installed / app_updated | First launch after a fresh install or an upgrade | Previous version (on update) |
| app_opened | Each time the desktop app starts | Whether it was a login-item launch or a manual open |
| daily_heartbeat | At most once every 24 hours while the app is running | Daily totals of how many times completions were shown and accepted — numbers only |
| integration_installed | When a shell/terminal integration is installed via the CLI | Which integration (dotfiles, ssh, input-method) |
| app_uninstalled | When the uninstall script runs | — |
Completion usage is aggregated locally into plain counters and reported once per day as totals. A heartbeat event looks like this — this is the complete payload, not an excerpt:
{
"event": "daily_heartbeat",
"distinct_id": "fa7ebf5b-....-....", // random UUID, no identity
"timestamp": "2026-07-08T06:53:08Z",
"properties": {
"app_name": "Easy Complete",
"app_version": "2.0.41",
"os_version": "macOS 26.5.1",
"shell": "zsh",
"terminal": "ghostty",
"count_autocomplete_shown": 142, // daily totals only
"count_autocomplete_accepted": 37
}
}What we never collect
- The commands you type, their arguments, or their output — command content has no code path into telemetry
- Completion suggestions shown to you, or which one you picked
- File paths, directory names, or environment variables
- Your username, hostname, email, or any account identifier
Where the data goes
Events are sent over HTTPS to our own analytics proxy and stored in PostHog. PostHog derives a coarse location (country/city) from the request IP at ingestion; the IP address itself is not stored on events. Data is used solely to understand aggregate usage of Easy Complete and is never sold or shared.
Turning it off
Telemetry is on by default and can be disabled at any time with a single command — the setting is respected by every event, including install and uninstall reporting:
ec telemetry disable # turn off ec telemetry status # check current state
Questions
The telemetry implementation is open source — you can audit exactly what is sent in the fig_telemetry crate. For anything else, open an issue on GitHub.
Last updated: July 2026 · Applies to Easy Complete v2.0.41 and later
