You hold the key, you talk, and nothing appears in the app. The checks below go from the quickest to the slowest. The docs do not say which cause is most common, so this order is by effort.
1. Press ⌘V
When ParrotFlow transcribes your words but decides not to type them, it leaves the text on the clipboard. It does this when Accessibility is missing, when the focus moved, and when nothing can take text. Press ⌘V in the field you wanted. If the text appears, nothing was lost, and the next checks tell you why it was not typed.
If ⌘V pastes something older, either ParrotFlow heard no words, or it did send the paste. After a paste, it puts your previous clipboard back 0.4 seconds later. The log tells the two apart.
2. Read what ParrotFlow said
Right after the dictation, ParrotFlow says what happened. The message shows for about four seconds as the status line at the top of the ParrotFlow menu, and some of them also show on the pill.
| Message | What it means | Go to |
|---|---|---|
Copied — grant Accessibility to auto-paste |
ParrotFlow has no Accessibility permission | Accessibility |
Focus moved — the transcription is on your clipboard |
The focused field changed while you talked | Focus |
Nowhere to type — the transcription is on your clipboard |
Nothing that takes text had the focus | Focus |
Copied — ⌘V to paste |
Your config says insert_mode: clipboard |
Clipboard mode |
The log says the same thing, and it stays. Read the last lines:
tail -30 ~/Library/Logs/ParrotFlow.log
| Log line | What it means |
|---|---|
transcribed: … |
ParrotFlow heard you and wrote this text. |
Accessibility not granted; left transcript on the clipboard |
No Accessibility permission. |
focus moved since the press; copied instead of pasting |
The focused field changed after you pressed the key. |
could not read what is focused; copied instead of pasting |
ParrotFlow could not tell what had the focus, so it did not risk typing. |
nothing to type into (nothing has keyboard focus); copied instead |
No field had the focus. |
speech gate: no speech detected; not transcribing |
The clip had no speech in it. See Microphone. |
transcription produced no text |
The recogniser returned nothing. See Microphone. |
escape: cancelled while recording |
Escape was pressed, which stops a dictation. |
3. Check Accessibility
ParrotFlow types by pasting into the app in front. With insert_mode: paste, the default, that needs the Accessibility permission. Without it, the text goes to the clipboard and you press ⌘V.
--check-config cannot tell you if Accessibility is granted. macOS credits a check made from a terminal to the terminal, not to ParrotFlow. The app checks for itself each time it starts and writes the result in the log:
grep "launched —" ~/Library/Logs/ParrotFlow.log | tail -1
The line looks like this:
launched — hotkey=Right ⌥ mode=push-to-talk mic=Granted accessibility=Granted input=<your microphone>
You want accessibility=Granted. Not granted means the switch is off, or a different app was ticked. The log drops its oldest lines at 1 MB, so the line can be gone. Restart the app to write a new one.
To grant it:
-
Open the Accessibility pane:
open "x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility" -
Turn on ParrotFlow.
-
Quit ParrotFlow from its menu, then start it again:
open -a ParrotFlow -
Read the
launched —line again.
While a permission is missing, the ParrotFlow menu has a Finish Setup… item that opens the setup window.
The switch is on but the app says no
System Settings can show ParrotFlow ticked while the app logs accessibility=Not granted. Turning the switch off and on again does not help. It reuses the same broken record. Delete the record, then restart the app and grant again:
tccutil reset Accessibility com.parrotflow.app
tccutil reset Microphone com.parrotflow.app
com.parrotflow.app is the released app. A build from source gets a new identity on every build, so macOS forgets its grants each time. See Permissions.
4. Check where the focus is
ParrotFlow notes the focused field when you press the key, and checks it again before it types. If the two differ, it does not type. A sentence in the wrong window is worse than a sentence on the clipboard.
- Click into the text field before you press the key.
- Do not switch windows or click elsewhere while you talk.
- A window that takes no text, like a Finder window or a video player, gets nothing. The text goes to the clipboard.
5. Check for secure input
A password field can turn on macOS secure input. While it is on, macOS hides every key from every other app. ParrotFlow then shows a notice that names the app, such as Notion has taken the keyboard.
While secure input is on, Escape cannot cancel a dictation, and the letters on the pill type into your document instead of running their commands. Clicking the pill still works.
To clear it, click into an ordinary field in that app, or switch away and back. Quitting the app always works.
The log line is keyboard: <app> has secure input on; said so once. The code and docs describe the effect on Escape and the pill. They do not say that secure input stops the paste itself.
6. Check insert_mode
If your config has this, ParrotFlow copies every dictation and never types:
transcription:
insert_mode: clipboard
That is a choice, not a fault. Remove the line, or set it to paste, to have the text typed. Typing needs Accessibility.
7. Check the microphone
If the log has no transcribed: line for your dictation, ParrotFlow did not hear words. Look at the mic= part of the launched — line. You want mic=Granted. If it is not, turn ParrotFlow on in System Settings → Privacy & Security → Microphone, then restart the app.
The input= part names the microphone ParrotFlow records through. If it is not the one you speak into, choose another in the ParrotFlow menu.
Input Monitoring is not the cause
Input Monitoring is only for the letter keys on the pill, like V for Vocabulary. Without it, the pill still shows its buttons and they still work with the mouse. The letter types into your document instead. It does not stop the dictation from being typed.
The log says offer keys: input monitoring is not granted; the keys are not taken. To reset it with the others:
tccutil reset ListenEvent com.parrotflow.app
Where these steps come from
Permission states cannot be set or read for ParrotFlow from a terminal, so we did not test these steps from the command line. They come from permissions.md, setup.md, and the app’s source. The messages and log lines are quoted from the source.
Related
- Permissions, for what each permission does.
- Install.
- Configuration, for
insert_modeand every other setting. - Set up offline dictation on a Mac.