Dictate

Security

We try to be specific here, not aspirational. If something below is unclear, email security@dictates.app.

Managed API path

Dictate uses one managed API path for transcription and account-backed user data. Audio is sent to the Dictate API, forwarded to the configured transcription provider, and discarded when the request completes. Settings, glossary entries, and transcript history are stored through the API so your account is the source of truth.

Secure Enclave + App Attest

On first launch, Dictate generates a P-256 keypair inside Apple’s Secure Enclave and obtains an App Attest attestation from Apple’s servers. Each transcription request is signed with that enclave-resident key. We verify the signature server-side against the attested public key.

The benefit: your subscription is bound to the Macs you actually use in a way that survives reinstalls (because the device fingerprint is stable), without a Dictate password, and rejects obvious abuse vectors (replay, modified binaries).

Transcript history

Dictate no longer saves recording history folders on your Mac. History is account-backed and contains transcript text plus metadata such as duration, model, and timestamps. Source audio is not kept in history.

Offline entitlements

Each successful transcription returns a short-lived signed entitlement ticket (P-256 ECDSA) so the app can keep working briefly when you lose network — typical case: dictating in flight or on a tunnel ride. The Mac app verifies the signature against an embedded public key on every use.

Minimum macOS

Dictate requires macOS 15 or later. That is the app's deployment target, and it is the gating constraint for installation. App Attest itself works on macOS 14 and later on Apple Silicon, but the app will not launch on anything below macOS 15.

Vulnerability disclosure

Please email security@dictates.app with reproduction steps and a proof-of-concept where reasonable. We aim to acknowledge within 2 business days. We don’t (yet) offer a paid bounty, but we’ll publicly credit you in our changelog if you’d like.