Troubleshooting
Pick a section by symptom. Each has a checklist and ordered fixes. Dashed frames are screenshot placeholders (public/screenshots/ts-*.svg).
Before you start: note these five
Section titled “Before you start: note these five”- macOS version
- VoiceHotkey version (Settings → About)
- Dictation engine name
- Local Only on/off
- App path (Finder → Get Info)
Hotkey does nothing
Section titled “Hotkey does nothing”No overlay, no menu-bar status change, no system feedback.
Checklist
Section titled “Checklist”- Menu bar icon present (app running)
- Accessibility enabled for the current app path
- Launched from
/Applicationsor~/Applications - Hotkey not conflicting with another app
- Hotkey page not warning about Accessibility
- Process — Menu bar icon should open a menu. Relaunch from Applications if missing.
- Accessibility — System Settings → Privacy & Security → Accessibility. One VoiceHotkey row, correct path, switch on. Remove duplicates, quit and reopen the app.
- Stable path — See Install & permissions.
- Rebind — Settings → Hotkey → record a less common chord.
- Conflicts — Quit tools that clash with defaults: dictation
⌃⌥Space, command⌥Space.
ts-01-accessibility-list.svg)Recording but no text
Section titled “Recording but no text”Overlay shows listening, but the field stays empty or processing never finishes.
Checklist
Section titled “Checklist”- Demo mode off
- Microphone granted; correct input device
- Engine configured (key / Apple ready)
- Local Only not blocking a cloud engine
- Network / quota / key validity
- Caret in a normal text field (secure fields may block insert)
- Settings → General — turn Demo mode off.
- Read menu bar status — mic needed, engine not configured, Local Only blocked, etc.
- Microphone — enable for VoiceHotkey; verify hardware with Voice Memos.
- Engine — try Apple as a control. If Apple works but cloud fails → key/network/quota.
- Local Only — public engines fail when Local Only is on.
- Output — post-process Output action should insert at caret; try Notes if Terminal blocks injection.
ts-02-menubar-status.svg)ts-03-local-only.svg)Permissions keep resetting
Section titled “Permissions keep resetting”Worked yesterday; hotkey dead today; Accessibility looks half-set.
Common causes
Section titled “Common causes”| Cause | Notes |
|---|---|
| Path changed | Downloads, another folder, or a different build path |
| Signature / replace | Overwrite install treated as a new app |
| Duplicate rows | Wrong Accessibility entry bound |
- Keep a single app in Applications.
- Quit VoiceHotkey fully.
- Remove all VoiceHotkey rows from Accessibility and Microphone.
- Launch from the fixed path and re-grant.
- Always open that same path (debug vs release packages count as different paths).
Polish / translation unchanged
Section titled “Polish / translation unchanged”- Polish enabled / using the translation hotkey
- Post-process LLM key configured
- Local Only not blocking the API
- Fallback may insert raw transcript (expected on failure)
- Settings → Text post-process: polish on; translation uses its own hotkey.
- Configure LLM provider keys.
- Compare with Local Only off, or point Base URL at localhost.
- Ensure bare dictation works before enabling polish.
Voice commands do nothing
Section titled “Voice commands do nothing”- Settings → Voice commands → Enable voice commands is on
- Command hotkey is registered and Accessibility is granted
- Allow hotkeys is not turned off (if you only use dictionary shortcuts)
- User-dictionary entries are enabled and phrases match (exact then fuzzy)
See Voice commands.
Shell commands don’t run
Section titled “Shell commands don’t run”- Enable voice commands master switch is on
- Trial or Pro (not Free)
- Settings → Voice commands → Allow shell commands enabled (not under General)
- Didn’t cancel the confirm dialog
- Not blocked by the danger blocklist
- For intent-generated shell: intent model on and configured; for dictionary shell: entry type is shell and enabled
See Shell commands and Plans.
ts-04-license.svg)Quick scenarios
Section titled “Quick scenarios”- Path + both permissions
- Demo mode off
- One working engine
- Test in Notes
- Launch the new build from Applications
- Clear stale Accessibility rows and re-grant
- Confirm About version
- Cloud APIs must be reachable
- Or use Apple / localhost
- Local Only also pauses update checks
Still stuck
Section titled “Still stuck”- Re-run the first-setup dry run.
- Collect the five items at the top.
- File an issue via Contact.
Install & permissionsDMG, path, Accessibility, microphone.
First-time setupDemo mode, engine, hotkeys, test.
