14 · Support

Troubleshooting

Fix recording, permission, and text insertion problems.

Quick Diagnosis

Start with these checks:

  1. Check permission status in Settings → Permissions.
  2. Run Settings → Speech model → Test Setup.
  3. Dictate once in a code editor and once in a terminal.
  4. Open History and check the insertion status for your latest entries.

Use the results to distinguish a recording or transcription failure from an insertion failure.

Test setup transcribes a short test clip with the main engine and the fallback tool and reports each step. Follow it with a dictation to check recording and insertion. When the Dictate tab offers Review settings, it opens the Settings page that fixes the problem. Save any error messages before changing settings or restarting. Steno can lose quiet opening words after a long silence, and Small can mishear words.

Common Issues

SymptomLikely causeFix
Option key does nothingInput Monitoring denied or hotkey monitor staleGrant Input Monitoring, re-check in Settings → Permissions, relaunch Steno
Option shortcut such as Option+Arrow doesn't start a recordingExpected: Steno ignores keyboard shortcuts that use Option and quick taps of OptionHold Option on its own to dictate
Dictation says microphone access is offMicrophone access is turned offGrant Microphone in System Settings → Privacy & Security
Hands-free key failsFunction key not assigned or conflicts with another shortcutPick a key in Settings → Recording (F1–F12 need standard function-key mode; F13–F20 need a keyboard or mapping that can send the key)
Transcription works, no text appearsAccessibility denied or wrong insertion orderGrant Accessibility and verify Text Output order
Steno reports Copied instead of insertingThe cursor was in a password or secure field, focus moved during transcription, or no text field was selectedClick the intended field and press Cmd+V, or copy the text from History
Terminal output is inconsistentThe terminal may not handle simulated typing reliablyKeep clipboard fallback enabled; Steno already prioritizes clipboard for known terminal bundle IDs
Onboarding Continue is disabledMicrophone not grantedGrant Microphone in System Settings → Privacy & Security, or choose Set up later; recording still requires microphone access
File not found at this path (Engine)Bundled or local paths can't be resolvedDMG: reinstall the latest DMG. Source: rebuild whisper.cpp at the pinned version
Model download failsThe download failed or didn't match the published fileRead the reason next to the Download button; the current model stays in use
Dictation key ignored right after changing the model or thread countKnown issue: the speech model reloads after a transcription setting changes, and a key pressed during that short reload is ignoredPress the key again once the reload finishes
Media settings unavailableMedia pausing requires macOS 15 or laterUpdate macOS; your saved choice is kept
Safari media keeps playing during dictationKnown issue: Safari plays audio through a system helper process Steno cannot yet tie to the appSee Media Settings
Media you paused resumes after a dictationKnown issue: you resumed and paused it again during the dictation, or macOS reported playback state unreliably and the video was paused less than about two seconds before dictatingSee Media Settings

Fixes for DMG Users

If you installed Steno from the official DMG, try these in order:

  1. Move Steno.app to your Applications folder if it isn't already there — apps run outside Applications can hit permission and signing edge cases on macOS.
  2. Reinstall the latest DMG from the release page if you suspect bundled files are damaged.
  3. Re-check Microphone, Accessibility, and Input Monitoring in System Settings → Privacy & Security.
  4. Open Settings → General, turn on Open the setup guide, then choose Save changes; the guide opens when you save.
  5. Open Settings → Speech model and use the Model Library to download a different model (for example, switch back to Small to confirm baseline behavior).
  6. Run Test Setup. If it still fails, copy the error text into your issue report.

Fixes for Source-Build Contributors

If you built Steno from source:

  1. Rebuild whisper.cpp at the pinned version:

    cd vendor/whisper.cpp
    git checkout 764482c3175d9c3bc6089c1ec84df7d1b9537d83
    cd ../..
    scripts/build-whisper-runtime-helper.sh
    
  2. Regenerate the Xcode project after project.yml changes:

    xcodegen generate
    
  3. Run from Xcode (Cmd+R) and confirm signing/team settings haven't reset macOS TCC grants.

  4. Confirm whisper-cli --help runs from the exact path configured in Settings → Speech model.

  5. Check whether the issue is global or app-specific by dictating into an editor, a terminal, and a browser text field.

Advanced Debugging

If the checks above do not resolve the issue:

  • Compare insertion outcomes across editor, terminal, and browser to isolate app-specific behavior.
  • Confirm code-signing identity hasn't changed unexpectedly (that resets TCC grants).
  • Check History — completed entries can preserve the transcript, so you can recover the text even when insertion fails.

Before Reporting

Include this in your issue:

  • macOS version
  • Steno version (and whether you installed from the DMG or a source build)
  • exact failing step
  • whether failure is global or app-specific
  • current permission states
  • configured insertion method order
  • screenshot or text of the Test Setup result

Include whether live preview was enabled, the approximate recording duration, and whether the failure affected preview, final text, insertion, or History. Redact private transcripts, nearby editor text, audio, and raw logs before sharing.