The short version

The DiffCue app has no analytics, no telemetry, and no crash reporting, and it doesn't track what you do in it. It reads your git changes straight off your own disk. Your code goes only to the AI provider you choose, never to DiffCue: once you've set one up (with an API key, by signing in with OpenRouter, or by choosing a local model or a custom endpoint), the app sends diff text directly from your Mac to that provider. Your API key, if you use one, never touches DiffCue's servers. The app connects to only three places: that AI provider; DiffCue's license server at license.diffcue.com, which it contacts when you activate a license and about once a week after that to check the license is still valid; and diffcue.com, to check for and download updates. It checks for updates automatically only if you agree to it. Requests to servers on your own Mac, such as a local model in Ollama or LM Studio and the setup screen's check for them, aren't counted in that list, since they don't leave your Mac. Buying happens on Stripe's checkout page in your web browser, not in the app. The only data DiffCue's license database keeps is what's needed to sell and validate a license: your email, Stripe's payment and checkout session references, the license key itself, and a hardware identifier for each Mac it's activated on. Downloads and update checks are only counted, with no IP address stored.

The app: zero analytics

DiffCue contains no analytics SDK, no telemetry, and no crash reporter of any kind. There's no setting to disable it, because none of it is built into the app. Nothing about how you use DiffCue, which files you open, which hunks you view, or how often you launch it is measured, logged, or sent anywhere. The app's only requests to DiffCue's servers are the license checks, update checks and update downloads described below, and none of them includes anything about how you use the app.

This website (diffcue.com) is separate from the app. It uses Cloudflare Web Analytics, which sets no cookies, doesn't identify individual visitors, and doesn't track you across other sites. It only shows DiffCue aggregate numbers, such as how many times each page was viewed.

Your code and your git repository

Git operations happen entirely on your machine, against whatever local folder you point DiffCue at. The app reads your working tree, staged changes, and untracked files directly off disk to build the diff view. Your code goes only to the AI provider you choose, never to DiffCue. DiffCue never uploads your repository, your files, or your diffs to any server it controls, and nothing is sent to an AI provider until you've set one up: by adding an API key, signing in with OpenRouter, or choosing a local model or a custom endpoint.

AI features: opt-in, with a provider you choose

AI explanations and chat are entirely optional. To use them, you set up an AI provider of your choice, in the setup screen DiffCue shows on first launch or later in Settings. You can use OpenRouter, by signing in with your OpenRouter account or pasting an OpenRouter API key; OpenAI, with your own API key; a local model running in Ollama or LM Studio on your Mac; or another OpenAI-compatible endpoint, with an API key if it needs one. Any API key you use is stored in the macOS Keychain and is never transmitted to DiffCue's own servers.

A local model needs no API key. DiffCue sends its requests to the model server at localhost, so they stay on your Mac (unless you pick a model that the server itself runs in the cloud, as some Ollama models do). To show which local servers are available, the setup screen checks localhost:11434 (Ollama) and localhost:1234 (LM Studio) when you choose a local model, and again if you click Check Again. These checks only ask each server for its list of models, and they go only to your own Mac.

Sign in with OpenRouter uses OpenRouter's OAuth sign-in with PKCE. DiffCue opens openrouter.ai in your web browser, where you approve DiffCue. To receive the one-time code OpenRouter sends back, DiffCue runs a temporary listener on your Mac's loopback interface only, so nothing outside your Mac can reach it, and closes it as soon as sign-in finishes, is cancelled or times out. DiffCue then sends that code to OpenRouter, which creates a new API key in your OpenRouter account, where you can see and revoke it. DiffCue stores that key in the macOS Keychain. DiffCue's servers aren't involved at any point.

Once a provider is set up, DiffCue sends file paths, diff text, and your chat questions directly from your Mac to that provider, using your API key if you've saved one. It does this automatically when you open a repository or a file, so summaries and explanations are ready when you look at them. That exchange is governed by your chosen provider's own privacy policy and terms, not DiffCue's. DiffCue has no visibility into, and does not log, the content of those requests or responses.

Your provider choice, its endpoint address and the model you picked are kept in local UserDefaults on your Mac, along with a yes-or-no flag for each provider recording whether an API key is saved (never the key itself), so DiffCue can tell at launch whether setup is done without reading the Keychain. None of this is sent to DiffCue.

The free-trial counter

DiffCue includes 5 free reviews before a purchase is required. A review is one repo on one calendar day. To count them, the app keeps a short list in local UserDefaults on your Mac: the folder path of each repo you've reviewed and the date, at most 5 entries. That list is never reported to DiffCue or anyone else.

Purchases

Purchases are processed by Stripe. DiffCue never receives or stores your card details. When a purchase succeeds, Stripe notifies DiffCue's backend (a Cloudflare Worker running at license.diffcue.com) of the buyer's email address, a payment reference and the checkout session ID. The backend then generates a license key, stores it, and emails it to you via Resend. The page Stripe returns you to after paying also shows the key, for up to 7 days after the purchase.

License activation

When you activate your license, the app sends your license key and your Mac's hardware identifier to license.diffcue.com. The identifier is the Hardware UUID that macOS assigns to your Mac (IOPlatformUUID, shown in System Information). It isn't your serial number, but it is unique to your Mac and stays the same if you reinstall DiffCue or upgrade macOS. DiffCue uses it only to count and limit activations (2 Macs per license) and to revalidate your license. About once a week, the app sends the same key and identifier to license.diffcue.com to confirm the license is still valid. If it can't reach the server, your license keeps working for another 30 days.

Update checks and downloads

DiffCue checks for updates with Sparkle, a widely used open-source updater for Mac apps. It doesn't check automatically until you agree: on its second launch, it asks whether it may. If you say yes, it checks about once a day, and you can also check any time with DiffCue → Check for Updates…. Each check is a plain request for https://diffcue.com/appcast.xml, the list of available versions. Like any web request, it comes from your IP address and carries standard HTTP headers, including a User-Agent that names your DiffCue and Sparkle versions. It carries no license key, no hardware identifier and no system profile (Sparkle can send one, but DiffCue leaves that off). Updates themselves are downloaded from diffcue.com too.

Downloads from diffcue.com/download, update checks and in-app updates are only counted. For each one, DiffCue's download server (a Cloudflare Worker) records the kind of request, which file and version it served, the DiffCue version you're running (for update checks and in-app updates), and your country as Cloudflare determines it. It doesn't store your IP address, your full User-Agent, the referring page or any other detail of the request. Cloudflare's per-request logs are turned off for this server, so it logs only errors, such as a count that failed to save.

What the backend stores

This is the complete list of what DiffCue's license database (Cloudflare D1) stores:

  • License key: the key generated at purchase, when it was created, and whether it has been revoked (for example, after a refund).
  • Email address: the buyer's email, from Stripe, and whether the license email has been sent to it.
  • Stripe payment reference: so a license can be tied back to its purchase.
  • Stripe checkout session ID: the ID of the checkout you paid in, used only so the page Stripe returns you to after paying can show your key. That page shows it for up to 7 days after the purchase; after that, the key is only in your email.
  • Per-Mac activation records: the Mac's hardware identifier (IOPlatformUUID), when it was activated, and when it last checked in, for each Mac the license is activated on.

Server logs

The license server keeps logs so a failed purchase or activation can be looked into. Its log entries record what happened, such as a license being created or a license email being sent, along with Stripe's reference IDs for the purchase and Resend's ID for the email. They never include your license key, your email address or your checkout session ID. Cloudflare's automatic per-request logs are turned off for this server, and the key lookup on the page you land on after paying writes no log entries at all. Activating your license and the weekly license check write none either, unless the server hits an error; an entry about such an error may include details Cloudflare adds about the request, such as your IP address. These logs are kept for at most 7 days.

Separately, Cloudflare, which runs the server, keeps aggregate request counts and its own security analytics for diffcue.com, which can include IP addresses.

Contact

If you have questions about this policy or your data, email [email protected].