Short answer: Type git commit -m " in Terminal, then hold your dictation hotkey, speak the commit message, and release. A system-wide voice typing app like Voice Keyboard Pro inserts the transcribed text at your cursor in Terminal, iTerm2, or any other shell.
Commit messages occupy a strange corner of a developer's day. They are prose, not code, yet you write them inside the least prose-friendly environment on your machine. They matter enough that every team has a style guide for them, yet they arrive at the exact moment you are most eager to move on. The result is visible in any repository's history: a thoughtful paragraph here, then a long run of fix, wip, and more fixes.
The underlying problem is friction. A genuinely useful commit message, the kind that explains what changed and why, runs 15 to 50 words. At a typical 40 words per minute, that is up to a minute of typing English in a shell, dozens of times a day. Speaking those same words takes a few seconds, because speech runs at 130 to 150 words per minute. This guide shows exactly how to wire that up: voice typing git commit messages in Terminal on a Mac, including the quoting pitfalls, conventional commit prefixes, and longer commit bodies in an editor.
Why Terminal Is Where Dictation Tools Give Up
If you have tried Apple's built-in dictation in Terminal, you already know it is a rough fit. It technically types into the prompt, but the experience fights you in three ways:
- Technical vocabulary. Generic dictation is trained on everyday speech. Say "refactor the auth middleware to use the session token" and you will get creative interpretations of "auth," "middleware," and any identifier that is not a dictionary word. There is no practical way to teach it your project's terms.
- Punctuation noise. Built-in dictation wants you to speak every period and comma, and sometimes inserts its own. In a shell, a stray character is not a typo; it can change what the command does.
- Session behavior. Dictation sessions that linger or end while you are mid-thought are annoying in a document and worse at a prompt, where you tend to dictate one short burst and then immediately need the keyboard again.
What a terminal workflow actually needs is push-to-talk: dictation that is on exactly while you hold a key and off the instant you release it, that types into the active cursor position like a keyboard would, and that you can teach your own vocabulary. That is the design of Voice Keyboard Pro, a menu bar app for Mac where you hold a hotkey, speak, release, and the text appears at your cursor in whatever app has focus, Terminal included.
The Basic Workflow: git commit -m by Voice
Here is the core loop, end to end:
- Stage your changes as usual:
git add -porgit add . - Type the command scaffold by hand:
git commit -m "and leave the cursor inside the quote. - Hold your Voice Keyboard Pro hotkey and say the message: "Add retry logic to the upload client so transient network failures no longer surface as user-facing errors."
- Release the hotkey. The sentence appears at the cursor in under a second, capitalized and punctuated by the transcription engine.
- Type the closing quote and press Enter.
The division of labor is the point. Keystrokes handle the command syntax, where precision is everything and the character count is tiny. Your voice handles the English, where the character count is large and the syntax is forgiving. You never dictate git commit -m itself; five keystrokes with tab completion beats saying it out loud every time.
Once the loop is comfortable, the time savings compound quietly. A developer who commits 15 times a day and writes real messages saves several minutes daily, but the bigger effect is that message quality stops degrading as the day goes on. Saying one more sentence is cheap in a way that typing one more sentence, for the fortieth time, is not. That dynamic shows up across the whole workflow, which we cover in our guide to voice to text for developers.
Handle Quotes Before They Handle You
One genuine pitfall deserves attention: shell quoting. Your commit message is living inside a quoted string, so the message itself must not break the quoting.
- Use double quotes, not single quotes, around the message. Natural speech is full of contractions, and an apostrophe in "doesn't" will terminate a single-quoted string early. Inside double quotes, apostrophes are harmless:
git commit -m "Fix race condition so the retry doesn't fire twice"works fine. - Avoid dictating literal double quotes inside the message. If you need to quote a term, parentheses or capitalization read just as well in a git log.
- Watch for shell metacharacters in spoken text. Backticks and dollar signs rarely show up in dictated prose, but if your message references code like
$HOME, type that fragment by hand after dictating the sentence around it.
If a message gets mangled, you do not need to recommit carefully; git commit --amend opens the message for a second pass.
Conventional Commits by Voice
Teams using conventional commits (feat:, fix:, chore:, and friends) can keep the convention without losing the speed. Two approaches work well:
Type the prefix, speak the rest. The prefix is short and rigid, exactly the kind of text keystrokes are good at. Type git commit -m "fix: , then dictate the description. This is the simplest pattern and the one we recommend starting with.
Teach the prefix to your dictionary. Voice Keyboard Pro's Smart Vocabulary supports replacement rules, so you can map a spoken phrase like "fix colon" to the literal text fix: , or even map a phrase like "feat prefix" to feat( if your team scopes its commits. Add your project's recurring identifiers while you are there: service names, module names, ticket prefixes. Spoken words come out as the exact strings your repository uses, which is the single biggest accuracy upgrade over built-in dictation.
Longer Commit Bodies: Dictating in vim and nano
Substantial changes deserve a commit body, and this is where voice typing genuinely shines, because multi-sentence explanations are pure prose. Run git commit with no -m flag and git opens your configured editor.
In vim: press i to enter insert mode first. System-wide dictation types like a keyboard, so in normal mode your transcribed words would be interpreted as vim commands, which is as chaotic as it sounds. Once in insert mode, dictate the summary line, press Enter twice by hand, then hold the hotkey again and speak the body: what changed, why, what you considered and rejected. Press Escape, :wq, done.
In nano: there is no mode to worry about; place the cursor and talk.
A useful habit for the body is to narrate the explanation you would give a teammate at your desk: "The cache invalidation was firing before the write finished, so readers occasionally saw stale data. This moves invalidation into the write transaction." Spoken explanations come out naturally ordered for a reader, because speech forces you to produce one linear thread instead of editing fragments back and forth.
It Works in Every Terminal You Use
Because Voice Keyboard Pro inserts text at the system cursor, it is not coupled to any particular terminal emulator. The same hold-speak-release gesture works in:
- Terminal.app and iTerm2
- Warp, Ghostty, Alacritty, kitty, and other modern emulators
- The integrated terminal in VS Code and JetBrains IDEs
- SSH sessions inside any of the above, since the text is typed locally into the session like any keystroke
That last point matters more than it looks: the dictation runs on your Mac, so the remote machine just receives ordinary typed input. Nothing needs to be installed server-side. And the same hotkey keeps working when you switch from the terminal to your editor, browser, or Slack, which is what makes the habit stick; our post on dictation for coding covers how voice fits the rest of the development day, from code comments to pull request descriptions.
Beyond Commits: The Rest of Your Git Prose
Once the commit workflow is muscle memory, the same pattern covers every other place git asks you for English:
- Pull request titles and descriptions, whether in the browser or via
gh pr create, where the description field is the highest-leverage prose a developer writes all week - Code review comments, which tend to come out more constructive when spoken, since you naturally phrase them the way you would say them to a colleague
- Merge commit messages and tag annotations, the classic "I'll just leave the default" spots that become free to do properly
- CHANGELOG entries and release notes, where dictating a paragraph per change turns a dreaded chore into a five-minute narration
Developers who adopt voice for one of these usually end up using it for all of them, a shift we have written about in why developers are switching to voice.
Troubleshooting: When Dictated Text Does Not Appear at the Prompt
If you hold the hotkey, speak, release, and nothing lands in the terminal, the cause is almost always one of these:
- Accessibility permission was not granted. Typing at the cursor in other apps requires the accessibility permission on macOS. Open System Settings, go to Privacy & Security, then Accessibility, and confirm Voice Keyboard Pro is listed and enabled. Toggle it off and on again if it was already checked; macOS occasionally needs the refresh after an app update.
- The terminal lost focus. Text is inserted into whichever window has keyboard focus at the moment you release the hotkey. If you glanced at documentation in the browser mid-dictation and clicked, the words went there instead. Click back into the terminal pane before speaking.
- The cursor is in a password or secure prompt. When a shell is reading a password (after
sudo, for example), macOS enables secure keyboard entry and synthetic keystrokes are blocked by design. Finish the secure prompt first, then dictate. - A terminal feature is intercepting input. Some emulators offer their own "secure keyboard entry" toggle (iTerm2 has one in its menu). If dictation works everywhere except that one terminal, check whether the option is switched on.
- You are in vim's normal mode. Covered above, but it accounts for a surprising share of "dictation broke my file" reports: the text did arrive, it was just executed as commands. Press
uto undo, thenibefore speaking.
One more behavior worth knowing: dictated text arrives as ordinary typed input, so your shell history, line editing, and keybindings treat it exactly like something you typed. You can release the hotkey, notice a wrong word, and fix it with the arrow keys or Ctrl+W like any other typo. There is no special editing mode to learn, and nothing about your shell configuration needs to change.
A Note on Privacy
Commit messages routinely reference unreleased features and internal system names, so it is fair to ask where your words go. Voice Keyboard Pro's server stores only operational pings; no audio and no transcript content are stored. What you dictate lands at your cursor and nowhere else.
Getting Set Up
- Download Voice Keyboard Pro for Mac and grant the microphone and accessibility permissions it asks for; the accessibility permission is what allows typing at the cursor in Terminal.
- Choose a hold-to-talk hotkey you can press without leaving the home row mentally, since you will use it mid-command.
- Add your project vocabulary to Smart Vocabulary: repository names, service names, the dozen domain terms a generic engine would misspell.
- Make your next commit by voice:
git commit -m ", hold, speak, release, close the quote, Enter.
The free tier has daily limits that comfortably cover trying this on a real workday. Pro removes the limits at $4.99 a month or $34.99 a year, which is cheap against the arithmetic of speaking at 150 words per minute instead of typing at 40, even for the 80 to 100 WPM typists at the fast end of the keyboard.
The Bottom Line
Good commit messages are a writing problem wedged into a typing-hostile environment, and the fix is to stop typing them. Keep the keystrokes for the command syntax, where they are precise and few, and speak the English, where the words are many and the speed difference is 3x. Hold the hotkey, explain the change the way you would to a teammate, release, Enter. Your future self, reading git log six months from now, gets the explanation you always meant to write.
Install Voice Keyboard Pro free and dictate your next commit message. The history of your repository will start reading like documentation instead of a sigh.