Privacy Policy

Effective date: 3 October 2026

Taras Trishchuk built Rekey as a free application. This app is provided at no cost and is intended for use as is.

This page informs you about our policies regarding the collection, use, and disclosure of personal information when you use Rekey.

The one thing that matters most

Nothing you type ever leaves your Mac. Rekey reads every keystroke — that is how it notices you typed in the wrong layout — and all of that processing happens on your device. No keystroke, no word, no fragment of text, and nothing derived from your text is ever transmitted anywhere. This is enforced in the code, not just promised here: the paths that can reach the network accept numbers and fixed labels only — plus, if you choose to give it, the email address you typed yourself — and never anything drawn from what you write. Automated tests fail the build if that ever stops being true.

What Rekey does send

Rekey is not a program that reports on you as you work. It talks to the network in four situations, and only these four:

  • Once, when you set it up. A single anonymous request when you close the welcome window — then never again for the life of that installation.
  • To check for a new version, about once a day. This is the only recurring request, and it exists so updates can reach you.
  • When something breaks, if crash reporting is on.
  • If you choose to give us your email address during setup. Only if you type one in and tick a box.

That is the entire list. Rekey does not send anything while you type, does not send anything on a schedule other than the update check, and has no account and no login. Unless you gave us your address, there is no server-side record of you for anything to be attached to.

1. Checking for updates

Rekey asks trishchuk.com whether a newer version exists, about once a day. This request is what makes automatic updates possible, and it carries the version you are running.

We count these checks to know roughly how many installations are still out there. We do not store your IP address to do it. The address is turned into a short scrambled value using a key that changes every day, and only that value is kept: it cannot be turned back into an address, and the same Mac produces a different value tomorrow, so the checks cannot be strung together into a history of one machine. We do not build a profile from them and we do not combine them with anything else.

The update check sends no system profile. Sparkle can optionally attach your Mac model, processor, memory and language to this request; Rekey leaves that turned off.

2. One anonymous setup signal

When you finish (or close) the welcome window, Rekey sends a single request recording that an installation was set up. It happens once per installation and never again. It contains:

  • the Rekey and macOS version
  • the interface language
  • how many keyboard layouts are installed, and which of the languages Rekey supports they cover (for example English and Ukrainian) — never the layouts themselves. Versions before 1.0.0-beta.8 send the number only.
  • whether Accessibility and Input Monitoring were granted, and whether auto-switching and launch-at-login were turned on
  • which step of the welcome window you were on

It contains no identifier of any kind — no account, no device id, no random installation id, nothing derived from your hardware. Two installations are indistinguishable from one another. We do not store the IP address of this request at all. We use it to learn where people get stuck during setup.

This is on by default and disclosed in the welcome window before it can be sent. You can turn it off there, or in Settings → Diagnostics. If you turn it off before closing the welcome window, nothing is sent.

3. Crash and freeze reports (optional)

Rekey can send crash and freeze reports through Sentry, a third-party error-reporting service. These reports contain error information, timing measurements, and the bundle identifier of the app you were using — never the text you typed.

Whether it starts switched on depends on which build you are running, and the difference is deliberate:

  • Normal (stable) releases: off. Nothing reaches Sentry unless you switch it on yourself.
  • Beta and alpha builds: on by default. Those builds exist to find crashes and freezes, and a tester who has to discover a setting first reports nothing. You are told this on the last step of the welcome window — which is shown again when an installation moves from a stable build onto a beta or alpha one, so the change is never silent.

Either way it is one switch in Settings → Diagnostics. It takes effect immediately rather than at the next launch, switching it off is remembered, and moving from a beta back to a stable build returns it to off on its own.

4. Your email address, only if you offer it

The last step of the welcome window has an empty field where you may type an email address, and two checkboxes next to it. Leave the field alone and nothing whatsoever is sent — there is no button to decline, because not filling it in is declining. Typing an address is also not enough on its own: nothing is sent unless you tick at least one of the two boxes, because the boxes are what say what the address may be used for.

Before anything is ever sent to an address, we check that it really belongs to you — by emailing you a link to confirm. Until that link is followed the address is not used for anything: anyone can type any address into a form, so an unconfirmed one proves nothing and we treat it as consenting to nothing. If a confirmation arrives that you did not expect, ignoring it is enough; the address stays unused.

At the moment we are not sending messages of any kind, so an address you give us simply sits unused and unconfirmed until that changes.

What we store is: the address, which of the two boxes you ticked, when you sent it, whether you confirmed it, and which version of Rekey you were running (so we know which wording of this page you agreed to). We do not store the IP address of that request either.

We use it only for the purposes you ticked:

  • New versions — we write to you when a release is out. Every such message has an unsubscribe link.
  • Problems you report — we may reply to you about a bug or a freeze you told us about.

We do not sell, share, or hand this list to anyone, and we do not use it for anything you did not tick. It is stored on our own server, not with a mailing-list provider.

It is never connected to anything else described on this page. The setup signal, the update check and the crash reports carry no identifier, so there is nothing in them your address could be matched against — and the address is sent as a separate request, to a separate place, and kept in a separate store. We could not join them up even if we wanted to.

Every message we send carries a one-click unsubscribe link, and you can also write to [email protected]. You do not need to explain why. Either way we stop immediately and erase our usable copy of your address; what remains is a scrambled marker recording that this address opted out, which exists so nobody — including someone typing your address into the form later — can put you back on the list. It is never used for anything else.

Accessibility and Input Monitoring permissions

Rekey requires macOS Accessibility permission to function, and uses Input Monitoring to recover if macOS disables it. These permissions let the app see keyboard events and replace mistyped text. They are used solely for that. No data obtained through them is collected, shared, or transmitted.

Local storage

Rekey stores your preferences (trigger keys, hotkey settings, excluded apps, and the words you have taught it to leave alone) locally using macOS UserDefaults.

Two optional logs are written to ~/Library/Logs/Rekey/: a word-analysis log, if you enable statistics, and a small always-on incident log that records when the keyboard tap was disabled. Neither leaves your Mac unless you deliberately export a diagnostics bundle and send it to us yourself. The incident log is text-free by design — it records events and timings, not words.

Third-party services

Rekey uses two: Sentry for the optional crash reports described above, and Sparkle, an open-source updater, for the update check. Update checks and the setup signal go to trishchuk.com, which is served through Cloudflare. The website — not the app — also uses Google Analytics, described under Website analytics.

Your choices

  • Settings → Diagnostics turns off crash reporting and the anonymous setup signal.
  • Rekey's update prompt lets you decline automatic update checks.
  • With all of these off, Rekey makes no network requests at all.

If you gave us your email address, that is the one record we hold about you: write to [email protected] to see it, change which purposes it covers, or have it removed.

Everything else carries no identifier, so there is genuinely nothing to look up: the setup signal, the update check and the crash reports cannot be traced back to a person, by us or by anyone who obtained them. That is a property of how they are built, not a promise about how we behave.

Website analytics

This website — not the Rekey app — uses Google Analytics to learn which pages help people find Rekey: page views, which download button was used, which parts of a page were reached, language switches, and clicks through to the feedback forms on GitHub. It never sees anything you type in the app, and the app itself does not use Google Analytics.

If you visit from the European Economic Area, the United Kingdom or Switzerland, Google Analytics does not load at all — and sets no cookies — until you allow analytics in the cookie banner. Everywhere else it runs by default and uses its standard cookies (_ga, _ga_*), kept for up to two years, until you switch analytics off in the banner or under “Cookie settings”; switching it off also removes those cookies. Google Analytics does not store IP addresses, and its advertising features are switched off everywhere.

The banner is provided by CookieCrumb. Your choice is kept in a cookie (cf_consent) for a year, and each choice is also recorded as proof of consent — the choice itself, a random ID, the page, language, country and your IP address with its last part removed — and kept for 12 months. You can change your choice at any time:

Cookies

The Rekey application does not use cookies. The website sets Google Analytics cookies only as described under Website analytics — in the EEA, the UK and Switzerland only with your consent — plus one strictly necessary cookie, cf_consent, that remembers your cookie choices. Your language choice is kept in local storage.

Links to Other Sites

This app or its website may contain links to external sites. We are not responsible for the content or privacy practices of any third-party sites.

Children's Privacy

Rekey does not knowingly collect personal information from anyone, including children under 13. Everything it sends automatically carries no identifier and cannot be linked to a person. The one exception is an email address, which is never collected automatically — it exists only if someone deliberately types it in. If a child's address reached us that way, write to [email protected] and we delete it.

Changes to This Policy

We may update this Privacy Policy from time to time. Changes will be posted on this page with an updated effective date. You are advised to review this page periodically.

Contact

If you have any questions about this Privacy Policy, please contact us at [email protected].