Stop the mic fights.
Your mics are fighting over your voice, and the AirPods win every time they connect. Mic Guard breaks it up and hands the input back to your best mic in about a second.
$ curl -fsSL https://redesignedrobot.github.io/mic-guard/install.sh | zsh
- 1Your USB mic is on air
- 2AirPods connect
- 3macOS hands them the mic
- 4Mic Guard sends them to the back
Watch the bouncer work
AirPods connect, grab the mic, and get walked back to their seat.
Who it's for
Anyone who needs to be heard.
If a good mic is plugged in, it should be the one doing the talking.
Podcasters
AirPods connect mid-recording and the input goes back to your USB mic in about a second, before your co-host asks what happened to your audio.
Developers
Keep the AirPods in for sound during calls and pairing. The call keeps the good mic.
Streamers and creators
Set your stream mic to Always prefer. It stays the input whatever else connects.
Meetings all day
AirPods in and out of the case between calls. Every call still gets your best mic.
How it picks
Everyone waits their turn.
Plugged-in mics go first. The built-in mic waits its turn. AirPods sit at the back. Flip the switches to see who gets the mic.
-
Always prefer Jumps the line
Any mic you mark Always prefer in Settings goes first, whatever its type.
-
ON AIR
Wired 1st
USB, Thunderbolt and the headset jack. Wireless-mic receivers like DJI or Rode, USB podcast mics, audio interfaces.
-
ON AIR
Built-in 2nd
The Mac's own mic. Gets the job when nothing is plugged in.
-
ON AIR
Bluetooth Last
AirPods and other headsets. Only used when no other mic is around.
-
Never
Virtual devices from Zoom, Teams and loopback drivers, plus any mic you mark Never use.
Your pick stays picked
Choose a different mic in the same group and Mic Guard leaves it alone. Pick one from a lower group in the menu and it pauses for an hour instead of fighting you.
It only moves when something changes
A device connects, a device leaves, or the input changes. Then it waits 300 ms for macOS to finish shuffling and makes one decision.
Features
One menu, a few good switches.
Everything lives in the menu bar and a small Settings window.
A rule for every mic
Set each mic to Always prefer, Automatic (ranked by type) or Never use. Mic Guard remembers mics by ID, so rules survive unplugging. Set the AirPods to Never use and they stop auditioning.
Click to switch
Connected mics are grouped under Wired, Built-in and Bluetooth. Click one to use it. Names get their brand back, so "Wireless Mic Rx" shows as "DJI Wireless Mic Rx".
Recent switches
The last five, right in the menu: 22:46 AirPods Pro → DJI Wireless Mic Rx
Pause
For 15 minutes, an hour, or until you resume. For the rare call where you do want the AirPods mic.
Switch notifications
Optional. A banner each time Mic Guard steps in, so you know who got the mic.
Mic name in the menu bar
Optional. Shows which mic is on air next to the icon, so you can check at a glance.
Starts at login
It adds itself on first launch and has no Dock icon. Turn that off in Settings if you'd rather not.
Privacy
It hands out the mic. It never picks one up.
Mic Guard reads the list of audio devices and tells macOS which one is the input. That is the whole job.
Never opens a mic
No audio stream, ever. macOS never asks for microphone permission and the recording indicator stays off.
No network
No requests, no analytics, no update checks. The only permission it can ask for is notifications, and only if you turn them on.
Sleeps until needed
It sleeps until Core Audio reports a device or input change. The one timer is the DJI battery check, about once a minute, and only while a DJI receiver is plugged in.
About 900 lines of Swift
SwiftUI for the menu, and the Swift Core Audio API from macOS 15 for the rest. Short enough to read before you run it.
Logs every switch
To the unified log, under the subsystem com.local.MicGuard.
Leaves your output alone
It only changes the input. Sound keeps playing wherever you sent it, AirPods included.
Install
Hire the bouncer.
Requires macOS 15 Sequoia or later, on Apple Silicon or Intel. Free, MIT License.
One line in Terminal
Downloads the latest release, checks its SHA-256, installs Mic Guard to Applications and opens it. No security prompts, no Xcode.
$ curl -fsSL https://redesignedrobot.github.io/mic-guard/install.sh | zsh
Run the same line again to update. To remove it, including its settings:
$ curl -fsSL https://redesignedrobot.github.io/mic-guard/install.sh | zsh -s -- --uninstall
The script is about 90 lines. Read it before you run it.
Prefer a download? Get MicGuard.zip, move the app to Applications and open it. The app isn't notarized, so the first launch needs System Settings › Privacy & Security › Open Anyway.
Build from source
Compiles Mic Guard on your Mac from the latest source, then installs and opens it. Needs the Xcode Command Line Tools.
$ curl -fsSL https://redesignedrobot.github.io/mic-guard/install.sh | zsh -s -- --source
Or clone it and build it yourself. ./build.sh installs to ~/Applications.
$ git clone https://github.com/RedesignedRobot/mic-guard
$ cd mic-guard
$ ./build.sh
No Command Line Tools yet? Install them first:
$ xcode-select --install
Questions
Why not set the input in System Settings?
You can. macOS undoes it the next time your AirPods connect, and there's no setting to stop that. Mic Guard watches for the switch and reverses it.
Does it listen to me?
No. It only tells macOS which mic gets the job. It never opens one, so it can't hear anything and macOS never asks for microphone permission. It makes no network requests either.
Can I use a different mic?
Yes. Pick any mic in the same group and Mic Guard leaves it alone. Pick one from a lower group in the menu and it pauses for an hour instead of fighting you.
To keep the AirPods off the mic for good, set them to Never use in Settings.
Why do AirPods sound bad as a mic on a Mac?
When an app uses the AirPods mic, Bluetooth switches from its music profile to a two-way call profile with a lower-quality codec. Your voice sounds like a phone call, and what you hear through the AirPods drops in quality too. With the input on another mic, the AirPods stay in the better listening mode.