Skip to content
Jack

Telemetry

Effective date: 22 October 2026

Jack reports how it is used, so we can help you when something goes wrong and keep it working as the AI engines it drives change, often weekly. This page lists everything it sends. Nothing else leaves your machine for us.

What it never sends

Whatever the event: prompts, replies and chat text; file names and paths; the names you give repositories, projects, agents and teammates; the wording of hard limits; your documents; command lines and environment variables; your email address.

The product holds the list of events and properties in its code and drops anything not on it.

How we tell installs apart

Events carry your account ID, which is the user ID from our sign-in service, so a support request can be matched to what happened. Your email address never travels in an event.

How much it sends

The desktop app counts use per day, not per click: ten thousand clicks on one screen make one event, with a count. An install sends at most 60 events a day; anything past that is dropped, and the next daily snapshot says how many.

Our servers send one event per account action, such as signing up or changing plan, never one per request. The hosted relay sends one total an hour for the tools it forwarded, never one event per call, and the total carries no arguments, message bodies or tokens.

Properties on every event

PropertyWhat it is
user_idYour account ID. Your email address never travels in an event.
company_domainYour email's domain when it belongs to a company rather than a free email service, so we can count teams.
ai_levelThe AI experience level you picked in the app.
productWhich product sent the event: runtime or work.
surfaceWhere it happened: desktop (the desktop app), platform (our servers for accounts and billing) or relay (the hosted relay). Events from our servers carry only product, surface, schema_version and, where known, plan.
app_versionThe version you run.
os, archYour operating system and processor architecture.
planYour plan: Free, Pro, Team or Enterprise.
schema_versionThe version of this list of events.
country, regionWorked out from your IP address when the event arrives. The IP address itself is then discarded, never stored.

Properties on some events

PropertyWhat it is
kindOn feature_used: screen, action or setting.
featureOn feature_used: the key of the screen, control or setting in the app's text catalogue, never anything you typed or named.
countOn feature_used, error_shown and tool_forwarded: how many times it happened in the day or hour.
first_seen_hour, day, hourOn the daily and hourly totals: the UTC hour of first use, the UTC day and the UTC hour the total covers.
valueOn feature_used for a setting: the new value, only when it is a fixed choice.
error, screenOn error_shown and paywall_viewed: the key in the text catalogue of the error, or of the screen where the upgrade prompt appeared.
engine, engines_installed, engines_logged_inAI engines, always by product name.
sessions, groups, projects, agents, routines, skills, hard_limits, dropped_eventsOn install_snapshot: counts of what you have, and of events the app dropped to stay within its daily limit.
previous_plan, new_plan, intervalOn plan and subscription events: the plan before and after, and the billing interval.
reason, may_contactOn churn_reason_submitted: the reason you picked and whether we may contact you. Never the comment.
stateOn telemetry_preference_changed: on or off.
tool, client, outcomeOn tool_forwarded: the tool, the cloud client by product name or other, and whether the call succeeded.
runtime_versionOn runtime_connected: the version of your Jack Runtime.

Events

EventWhen it is sent, and what it carries
app_startedsurface: desktopThe app launches.Nothing beyond the common properties.
feature_usedsurface: desktopA day's use of one screen, action or setting ends. The app counts use per day, not per click: ten thousand clicks make one event, and there is one per feature per day.Whether it is a screen, an action or a setting, its key in the app's text catalogue, how many times you used it, the hour you first used it that day and the day. For a setting, the new value only when it is a fixed choice, never text you typed.
error_shownsurface: desktopA day's errors of one kind end: the app shows you an error, counted per day.The error's key in the text catalogue, how many times it was shown and the day.
signed_insurface: desktop, platformYou sign in. Our servers send it at most once per account a day.Nothing beyond the common properties.
ai_level_chosensurface: desktopYou pick your AI experience level.The level.
engine_limit_reachedsurface: desktopAn AI engine reports that you reached its usage limit.The engine, by product name.
paywall_viewedsurface: desktopYou see an upgrade prompt.The key of the screen where it appeared.
trial_startedsurface: desktop, platformYou start a trial.The plan.
plan_changedsurface: desktopYour plan changes.The previous and the new plan.
churn_reason_submittedsurface: desktopYou continue from the cancellation step.The reason you picked and whether you agreed to be contacted. Never the comment you may have written.
telemetry_preference_changedsurface: desktopAn Enterprise policy turns telemetry on or off.The new state. It is the last event sent when telemetry turns off.
install_snapshotsurface: desktopOnce a day.Which AI engines are installed and logged in, by product name, and how many sessions, groups, projects, agents, routines, skills and hard limits you have, and how many events the app had to drop. Counts only, never names.
sign_upsurface: platformYou create an account.Nothing beyond the common properties.
checkout_startedsurface: platformYou start paying for a plan.The plan and the billing interval.
subscription_changedsurface: platformYour subscription changes to another plan.The new plan and the previous plan.
subscription_cancelledsurface: platformYour subscription is cancelled.The plan.
tool_forwardedsurface: relayOnce an hour, for the tools the hosted relay forwarded between your Jack Runtime and a cloud AI client. It is one hourly total, never one event per call.The tool, the cloud client by product name (or other), the outcome, how many calls and the hour. No arguments, bodies or tokens.
runtime_connectedsurface: relayYour Jack Runtime connects to the hosted relay, at most once per Jack Runtime an hour.The Jack Runtime's version.
runtime_registeredsurface: relayYour Jack Runtime is registered with the hosted relay, once.Nothing beyond the common properties.
tool_calledA harness or app calls one of Jack Runtime's MCP tools.The tool, the calling harness or MCP client by product name, the outcome, any error code and how long it took.
session_state_changedA worker session changes state, such as from working to waiting.The old and new state, the worker's harness, the orchestrating harness, whether Jack Runtime started or attached to the session, and how deep it sits under other workers.
turn_completedA worker finishes a turn.The harness, how many events of each type the turn had, token counts and how long it waited for permission. Never what was said.
update_checkedThe product checks for a new version.The update channel and the version it found.
update_installedA new version is installed.The old and new version and the channel.

Crash reports

When Jack hits an internal error, it sends a crash report to Sentry: the error, the stack trace, the version, your operating system and the same account ID. Stack traces show paths inside Jack, not your own files, wherever the build allows. Sentry does not store your IP address.

When you first run it

The first time you use Jack, it tells you once that telemetry is on, what it collects and how to object, with a link to this page.

Turning it off

Telemetry stays on in the Free, Pro and Team plans, because it is how we support you. Enterprise organisations can have telemetry turned off for the organisation. There is no switch for it in the app.

You can object at any time under GDPR Article 21(1). Email [email protected] with the reasons that apply to your situation. We review your objection and reply by email. We delete what we hold under your account if you ask.

Where it goes and how long we keep it

Events from the app travel through a relay on our own domain to PostHog, and crash reports to Sentry, both in their EU regions. Events from our servers go straight to PostHog's EU region. Your IP address is used only to work out your country and region, then discarded. We keep usage events for one year and crash reports for 90 days. We never sell this data, share it for advertising or use it for anything but the purposes on the legitimate interest assessment.

Legal basis

Our legitimate interest in supporting you and keeping Jack working (GDPR Article 6(1)(f)). The legitimate interest assessment weighs that interest against yours. Who we are, and the rest of how we handle personal data, is in the privacy policy.

Your rights

You can ask for a copy of what we hold, and to correct, delete or restrict it. Email [email protected] and we will answer within one month. You can also complain to the Norwegian Data Protection Authority,Datatilsynet, or the authority where you live.

Changes

A new event or property appears on this page before a version sends it, and the date above changes. Every event carries schema_version, so old and new versions are told apart.