Security & data handling

For Dictera 0.8.1 · This page is written to be forwarded. If someone has to approve Dictera before you can install it, this is the document for them.

The short version: speech recognition and the built-in AI model run on your Mac. Dictera has no account system, no analytics SDK, and no telemetry of any kind. Left on its defaults it contacts four hosts, three of which you trigger yourself. The exception is deliberate and opt-in: if you connect a cloud AI provider or the Claude Code engine, the text you process goes to that provider under your own account.

1. Everything that leaves the Mac

This is the complete list. There is no fifth destination on default settings.

DestinationWhat is sentWhenTriggered by
Our licensing service
Google Cloud, EU region
A SHA-256 hash of a hardware identifier, your license key, and an activation name that defaults to your Mac's name - which often contains a person's name. On activation, then re-validated on a jittered timer roughly once a day. The app, on a schedule
Hugging Face Nothing but the request itself; you receive model weights. They see standard technical data such as your IP address. Only while a model is downloading. You, by choosing a model
dictera.app Nothing but the request. Returns the update feed. Update checks, on Sparkle's schedule. The app, on a schedule
Lemon Squeezy Whatever you enter at checkout. We never receive full card details. Only when you buy. You
Your chosen AI provider
opt-in, off by default
The text being processed. For the AI Assistant that includes the transcript window and any screenshots you captured, sent on each pass. Every request, once configured. You, by configuring it
Anthropic
opt-in, off by default
Via the Claude Code engine: your conversation and the contents of files it reads in the folder you nominated. Signed in with your own Claude account. Every request, once configured. You, by configuring it

Audio is never uploaded, to anyone, ever. It is transcribed in real time and never written to disk as a recording - not by the dictation path and not by the AI Assistant. What can be sent to a remote model is text, and only if you set one up.

1.1 What is not there

2. What is stored, and where

Everything is a plain file in ~/Library/Application Support/Dictera/. Nothing is synced, and deleting the folder deletes all of it.

FileContentsControls
history.jsonYour transcriptionsRetention period, export, clear all, or turn history off
stats.jsonWord and session countsCan be switched off
vocabulary.jsonYour custom replacementsEdited in Settings
assistant-sessions.jsonAssistant transcripts, answers and notesMost recent 50 kept; searchable, exportable, deletable; can be switched off entirely
assistant-screenshots/One JPEG per screen capture you tookCapped at 250 MB, oldest removed first; deleted with the session

These files are not encrypted at rest beyond whatever FileVault provides. If that matters for your threat model, turn assistant history off - with it off, nothing is written.

3. Credentials

4. A guarantee worth reading twice

To place dictated text correctly, Dictera sometimes needs to look at the characters immediately around your cursor - which means looking at a fragment of whatever document you have open. That fragment is never sent to a remote model. When the decision needs a model at all, the app will only ask the built-in on-device model or a server on loopback; if your engine is a cloud provider, Dictera falls back to a local heuristic instead of sending your document anywhere.

This is a design constraint in the code, not a setting you have to find.

5. Permissions, and why each is needed

PermissionNeeded forOptional?
MicrophoneDictation, and your side of a callRequired
AccessibilityTyping text into other apps, and reading a selection you asked it to fixRequired for dictation
Audio recordingCapturing the other participants on a call, via a Core Audio process tapOnly for the AI Assistant's listening modes
Screen recordingThe screenshot button in the assistant panelOptional - meetings do not need it

6. Distribution and integrity

7. Verify it yourself

Don't take the above on trust - it takes about a minute to check.

  1. Watch the connections. With Dictera running, run lsof -i -P | grep -i dictera in Terminal. Dictate, translate, take meeting notes. On default settings you will see nothing beyond an occasional licence or update check.
  2. Block it entirely. Turn off Wi-Fi once your models are downloaded. Dictation, cleanup, translation, text correction and on-device meeting notes all keep working. A license keeps working offline for 14 days.
  3. Use a firewall. Little Snitch or LuLu will show you every outbound connection attempt and let you deny the ones you don't want. The list in section 1 is what you should see.
  4. Check the signature. codesign -dv --verbose=4 /Applications/Dictera.app and spctl -a -vv /Applications/Dictera.app.

Any product can claim it doesn't upload your data. Very few can be checked in a minute with tools you already have.

8. What we can and cannot see

We cannot read your transcriptions, your meeting notes, your history or your screenshots. They are not on our servers, so there is nothing for us to hand over, lose, or be breached out of. What we hold is what's needed to sell and validate a licence: the device hash, the licence key and status, and the email address attached to the purchase. That is described in full in the Privacy Policy.

9. Questions we're happy to answer

If your security team needs something this page doesn't cover - a specific control, a questionnaire, a data-processing agreement - write to info@dictera.app and we'll answer directly.