Telemetry
The Invariant desktop app, the workspace and the invariant command send anonymous usage data, so we can see how the free product is used and make it better. This page lists all of it.
In short
- It is on by default. You see a one-line notice the first time you run a command in a terminal, and on the desktop app's Welcome page.
- It is anonymous. Events are grouped under a random installation id created on your machine. The id is not derived from your hardware, and you can replace it at any time.
- It never contains your work: no names, paths, text, emails or error messages. The full list is below.
- You can turn it off in one command, one checkbox or one environment variable.
Turn it off
Any one of these is enough:
invariant telemetry disable
- Desktop app: Invariant › Settings…, then under Privacy, untick Share anonymous usage data.
- Workspace: Settings › Server & data, then untick Share anonymous usage data.
- Environment: set
DO_NOT_TRACK=1orINVARIANT_TELEMETRY=0. Telemetry is also off whenever aCIvariable is set.
Turning it off deletes the events still waiting on your machine. Nothing is sent afterwards, not even a message saying you turned it off. Turning it back on sends one event that says so.
When the environment turns telemetry off, the checkboxes show it and cannot change it.
Other commands:
| Command | What it does |
|---|---|
invariant telemetry status | Whether telemetry is on, why, your installation id, and how many events are waiting |
invariant telemetry enable | Turns it back on |
invariant telemetry reset | Creates a new installation id and deletes the events waiting on your machine |
invariant telemetry flush | Sends the events waiting on your machine now |
What is never sent
- File and folder paths, project names, session, review and plan titles or text
- Git remotes, branches and commit data
- Your computer's name, your user name, your email address
- What you type in a search box
- Error messages and stack traces
- Names of local or private packages
- Your IP address. It is used for a moment to limit abuse and is not stored.
Every event and every value is declared in advance in a closed list, and there is no field that could hold free text. The CLI checks events before sending them, and our server checks them again and drops anything that is not on the list.
When a session, a review or a project is mentioned, it is identified by a code computed on your machine from its id with a secret that never leaves your machine. We can tell that the same session moved from planned to done. We cannot tell which session it was.
How it works
The desktop app and the workspace do not send anything themselves. They hand events to the invariant command on your machine, which keeps them in ~/.invariant/telemetry/. While the local service runs, it sends them in small batches about once a minute; otherwise a command sends them at most once an hour. If you were offline, they wait and go later. The local queue is capped (5,000 events or 2 MB, oldest dropped first), so it never grows large.
Each batch also says, once: the CLI and app versions, your operating system and processor type, your language and time zone settings, how Invariant was installed and which release channel you follow, whether this machine is signed in, and whether the desktop app is installed. Our hosting provider may add the country the request came from.
What is sent
Installation and start-up. The app was installed or launched, how long it took to start, each first-run step and whether it worked, the CLI was installed (and how) or uninstalled, how long the app stayed open.
Using the product. Which page of the workspace you open, which command palette action you used, which CLI command ran (only its name, for example session status), whether it succeeded, how long it took, and whether a person or an agent such as Claude Code ran it. That an execute line was copied, and for which agent. That a skills search ran, with a rough count of its results. Which kind of link you opened (documentation, changelog, download, pricing, sign-up). Once a day: rough counts of projects, sessions per status, reviews and packages (for example "2-5"), which agent tools are configured, and which integrations are connected.
Sessions and reviews. A session was created, changed status, had its plan approved or sent back, completed a step, asked or answered interview questions, checked in during its build, wrote its summary, or was archived or deleted. A review was created, a finding was accepted or discarded, changes were planned or published. A project was added, initialized or moved (only whether it went to This machine or an organisation), a package was installed or removed, a codebase scan finished, an integration was connected or an issue linked.
Settings. Which settings section you open (for example Appearance or Plans) and how you got there (its row, a link, the command palette or the filter). When a setting changes: which one, whether it was set, reset, added or removed, and for settings with a fixed set of choices the old and new choice (for example the theme going from Indigo to Paper, or the build mode from straight through to TDD), and whether it was changed in the workspace or from the terminal. A change to a project's settings names the project the way sessions are named above: by a code computed on your machine, so we can tell two changes were made to the same project, never which project. Settings you type yourself — templates, names, prefixes, branches, folders — only ever say whether they are now your own or back to the default, never what they say.
Buttons that lead to an account. When Sign in, Create an account, Add an organisation, a Pro feature, a plan or Upgrade is shown and when it is pressed, and where on screen it was; the same for Invite members, Manage members, and taking over or releasing a shared session. Sign-in started, finished, failed or was cancelled; sign-out. Switching between This machine and an organisation (only which kind each side is, never which organisation). A Pro page was shown or left.
Problems. An error code shown in the workspace (the code only, such as SESSION_CONFLICT), the local service failing to start or restarting, an update installed or failed.
Signing in
If you sign in on a machine while telemetry is on, the installation id is sent along with the sign-in, so we can understand which free usage leads people to sign up. From then on, that installation's usage data is linked to your account and is personal data under our privacy policy. Usage events themselves never contain your account. If telemetry is off when you sign in, the id is not sent.
Keeping and deleting
Usage data is kept with no fixed end date, so that usage over long periods can be compared. To have the data of an installation deleted, run invariant telemetry status, copy your installation id and contact us. Deleting your account also deletes the usage data linked to it.
Bug reports
Report a problem in the workspace (the button at the bottom of the left rail, !, or the command palette), or Help › Report an Issue… in the desktop app, sends a bug report. It is separate from telemetry: nothing is sent until you press Send report, and it is sent whether or not usage data is on.
The same dialog can send a suggestion instead: switch it to Suggestion, or choose Send a suggestion… in the command palette. A suggestion is sent the same way, with the same details, but never with a screenshot.
A bug report contains what you choose to put in it:
- Your description of the problem.
- A screenshot of the screen you were on, if you keep it. It can show your project's plans, code or session text, so you can black out any part of it first, or leave it out. Blacked-out parts are painted over on your machine, before the picture is sent.
- Your email, only if you are signed out and choose to give it so we can reply. If your machine is signed in, the report is linked to your account instead.
It also contains the same machine details as a telemetry batch (versions, operating system, processor type, language and time zone, how Invariant was installed), plus your operating system's version, the Node.js version, the workspace page you were on, your window size, theme and browser. The dialog lists all of it under What is sent before you send.
Like telemetry, the report goes through the invariant CLI on your machine. If it cannot be sent, the dialog tells you and keeps what you wrote. Reports are kept until we delete them. To have yours deleted, contact us from the email address you gave, or from your account's address.