Skip to content

Voice commands

Voice commands are separate from voice typing: use the command hotkey (default ⌃⌥C). After ASR, the app matches your dictionary → the built-in dictionary, then optionally an intent LLM, then runs a hotkey / shell action.

UI preview: the Voice commands pane of the settings window
Fig. 1 · Settings → Voice commands (UI replica · setup-07-commands.webp)

Path: Settings → Voice commands

  • Enable voice commands (voiceCommandsEnabled, default on)
    When off: the command hotkey, history re-run, and related deeplinks will not start voice commands; voice typing / translation are unaffected.
    Actions, resolution, and provider below can still be preconfigured; they apply as soon as you turn the switch back on.

Path: Settings → Voice commands → Starter

Apply actions and built-in packs in one tap, then adjust cards individually.

Preset Effect
Safe Edit hotkeys only; intent model off; only the Editing pack
Q&A Floating answers only; Trial / Pro turns the intent model on; built-in packs off
Full Hotkeys + insert + floating answer + rewrite + open apps + Shortcuts; all packs; shell stays off

Path: Settings → Voice commands → Actions

Tap a card to add or remove an action type. Removed types are skipped by the local dictionary and are not returned by the intent model.

Card Meaning Example Default
Allow hotkeys Inject keyboard shortcuts. Expanding the card shows Confirm dangerous hotkeys “copy” → ⌘C (built-in); “favorites bar” → ⌘⇧B (user dictionary) On
Allow text insert Insert a phrase at the caret “insert email” → inserts a preset address (user dictionary) On
Allow floating answer Show Q&A in a floating window “explain DNS in one sentence” → answer in the HUD (intent model) On
Rewrite when text is selected Trial / Pro; needs the intent model Select text, then say “make it formal” (intent model) On
Allow open app / URL Launch an app by name or an https / mailto URL — not shell “open Terminal” (built-in); “open GitHub” → https://github.com (user dictionary) On
Allow Shortcuts Run an existing item in Shortcuts.app “run daily report” → runs the shortcut named “Daily report” (user dictionary) On
Allow shell commands Trial / Pro; expanding the card shows Confirm shell commands. See Shell commands “what time is it” → runs date, with confirmation first Off

The bundled dictionary only covers hotkey and open app actions; examples for the other five types have to come from the user dictionary or the intent model.

Tap a card to add or remove a built-in phrase group. Removed packs no longer match in the bundled dictionary; your custom dictionary is unchanged. All four packs are on by default.

Card Example phrases
Editing copy, paste, undo, save
Windows & tabs close, new, reload, next tab
Open apps open Safari / Finder / Terminal (needs Allow open app / URL, not shell)
App-specific frontmost-app phrases (back, address bar, sidebar, …)

Exact first, then fuzzy. Within each pass:

  1. User · frontmost-app scoped (enabled)
  2. User · global (enabled)
  3. Built-in · frontmost app (apps in CommandRegistry.json)
  4. Built-in · global

Your entries override the same phrase in the built-in dictionary.

Settings → Voice commands → Command Dictionary opens the editor (stored in local UserDefaults — no network):

  • Phrases: comma / semicolon / newline separated, e.g. refresh, reload
  • Action: hotkey, insert, open app / URL, Shortcuts, or shell (Trial/Pro and shell allowed)
  • Scope: optional Bundle ID; empty = global
  • Enable / disable, click to edit, delete

One ready-to-copy sample per action type:

Phrase(s) Action Scope Required capability
insert email Insert text you@example.com Global Allow text insert
GitHub Open app / URL https://github.com Global Allow open app / URL
screen OCR Shortcut OCR Global Allow Shortcuts
what time is it Shell date Global Allow shell commands (Trial / Pro)
favorites bar Hotkey ⌘⇧B com.apple.Safari Allow hotkeys

“Floating answer” and “Rewrite selection” are not user-dictionary actions — the intent model is the only source for those two.

Your entries override the same phrase in the built-in dictionary. Built-in phrases follow Built-in packs on the Voice commands page.

Bundled CommandRegistry.json (Bundle.module). There is no in-app editor for that JSON file — use the user dictionary or the intent model for free-form phrases.

In total there are 108 built-in entries: 41 global (mostly hotkeys; open-app phrases use the open action) plus 67 app-specific overlays across 9 apps. Full list: Command reference. Overview:

Category Example phrases
Editing copy, paste, undo, select all, save, save as
Find & reload find, find next, refresh, hard / force reload
Windows / tabs new, close, next/previous tab, switch app, fullscreen
Format & keys bold, italic, underline, return, space, tab, escape, delete…
Open apps (open) open Terminal / Finder / System Settings / Safari / Chrome / Notes

Open-app phrases need Allow open app / URLnot Trial/Pro shell. User-dictionary shell actions still need Trial / Pro and Allow shell commands (see Shell).

App-specific (apps) covers common frontmost apps such as Safari, Chrome, Arc, Edge, VS Code, Cursor, Finder, Terminal, and Slack (reload, tabs, address bar, back/forward, …).

When on, a dictionary hit (your entries + built-in) skips the intent model, reducing latency and API calls.

Trial / Pro only (LicenseFeature.intentModel). Free keeps the local command dictionary only.

When enabled, phrases that miss the dictionary can go to an LLM for intent (BYOK). Separate from text processing / polish (shared keychain possible, separate toggle). Selection rewrite uses the same intent credentials and the same license gate.

Path: Settings → Voice commands → Intent model section.

Voice typing Voice command
Default hotkey ⌃⌥Space ⌃⌥C
Result Insert text Run hotkey / shell
Pipeline Polish, replacements, … User/built-in dictionary → intent

Command history can show short resolve badges: Dictionary / Intent model / Manual (localRegistry / llm / manual).