Security & data handling

For Dictera 0.8.5 · 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. The app 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 CLI 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 CLI 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.

The calendar integration adds no destination. Dictera reads the calendar database macOS already keeps on this Mac, through EventKit; it makes no network request of its own, contacts no calendar provider, and never writes an event. It is off until you switch it on. The one thing to know: if you have configured a remote AI engine, attendee names read from an invite are part of the meeting setup sent with each request - so there is a switch, Send attendee names to remote engines, that keeps those names on local models only. Email addresses are never stored at all, in any case: the app's calendar model has no field for one.

1.1 What is not there

2. What is stored, and where

Everything is a plain file: your content in ~/Library/Application Support/Dictera/, your settings in the standard macOS preferences file. Nothing is synced, and deleting those two 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 notes - plus, if you connect Calendar, a snapshot of the meeting a session was linked to: its title, time, and the names on the inviteMost recent 50 kept; searchable, exportable, deletable; can be switched off entirely
assistant-screenshots/One image per screen capture you took, and per image you pasted into a questionCapped at 250 MB, oldest removed first; deleted with the session
~/Library/Preferences/app.dictera.plistYour settings. With Calendar on this also holds which calendars you watch and your per-series recording choices - keyed by the calendar's own series identifier, not by the meeting's title. The only meeting-ish text here is a series label you typed yourself, kept so it can carry a colorLabels are renamed or deleted in Settings ▸ History; the file itself goes when you remove the app's data

No calendar events are copied wholesale. Dictera stores the snapshot above for a meeting you actually recorded, so the notes still say what they belong to after the event is edited or deleted. Meetings you never recorded are read on demand and not written anywhere.

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 capture button in the assistant panel and in Ask DicteraOptional - meetings do not need it, and an image pasted from the clipboard does not either
CalendarReading which meeting a recording belongs to, who was invited, and the day's agendaOptional - never requested at first run, only when you switch Calendar on. Read-only access; Dictera cannot write an event

The first-run walkthrough asks for what dictation itself needs - microphone, accessibility and input monitoring. The rest are requested only when you first use the feature that needs them: audio recording on your first listening session, screen recording on your first screenshot, calendar when you switch Calendar on. Every one of them is listed with its current status in Settings ▸ General, with a link straight to the right System Settings pane.

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.