Voice commands
Voice commands are separate from voice typing: use the command hotkey (default ⌥Space). After ASR, the app matches your dictionary → the built-in dictionary, then optionally an intent LLM, then runs a hotkey / shell action.
Master switch
Section titled “Master switch”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, safety, resolution, and provider below can still be preconfigured; they apply as soon as you turn the switch back on.
Actions & safety
Section titled “Actions & safety”| Toggle | Meaning | Default |
|---|---|---|
| Allow hotkeys | When off, no keyboard shortcut injection (user/built-in dictionary and intent model) | On |
| Allow shell commands | Trial / Pro; see Shell commands | Off |
| Confirm dangerous hotkeys | Shown when hotkeys are allowed | On |
| Confirm shell commands | Shown when shell is allowed | On |
Command dictionary (resolution)
Section titled “Command dictionary (resolution)”Match order
Section titled “Match order”Exact first, then fuzzy. Within each pass:
- User · frontmost-app scoped (enabled)
- User · global (enabled)
- Built-in · frontmost app (
appsinCommandRegistry.json) - Built-in · global
Your entries override the same phrase in the built-in dictionary.
User dictionary
Section titled “User 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 (
⌘⇧⌥⌃+ key) or shell (Trial/Pro and shell allowed) - Scope: optional Bundle ID; empty = global
- Enable / disable, click to edit, delete
Built-in phrases (copy, paste, …) always work; the user dictionary overrides or extends them.
Built-in dictionary
Section titled “Built-in dictionary”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.
Roughly 40+ global entries (mostly hotkeys; a few shell “open app” actions), plus frontmost-app overlays:
| 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 (shell) | open Terminal / Finder / System Settings / Safari / Chrome / Notes |
Built-in shell phrases need Trial / Pro and Allow shell commands (see Shell), same as user-dictionary shell actions.
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, …).
Prefer local dictionary
Section titled “Prefer local dictionary”When on, a dictionary hit (your entries + built-in) skips the intent model, reducing latency and API calls.
Intent model
Section titled “Intent model”When enabled, phrases that miss the dictionary can go to an LLM for intent (BYOK). Separate from dictation polish (shared keychain possible, separate toggle).
Path: Settings → Voice commands → Intent model section.
vs voice typing
Section titled “vs voice typing”| Voice typing | Voice command | |
|---|---|---|
| Default hotkey | ⌃⌥Space |
⌥Space |
| Result | Insert text | Run hotkey / shell |
| Pipeline | Polish, replacements, … | User/built-in dictionary → intent |
Resolve source in history
Section titled “Resolve source in history”Command history can show short resolve badges: Dictionary / Intent model / Manual (localRegistry / llm / manual).
