Mic Guard
Mic Guard app icon: a green shield with a microphone

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

Paste it into Terminal · Free and open source · macOS 15 or later · Apple Silicon and Intel

  1. 1Your USB mic is on air
  2. 2AirPods connect
  3. 3macOS hands them the mic
  4. 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.

  1. Always prefer Jumps the line

    Any mic you mark Always prefer in Settings goes first, whatever its type.

  2. ON AIR

    Wired 1st

    USB, Thunderbolt and the headset jack. Wireless-mic receivers like DJI or Rode, USB podcast mics, audio interfaces.

  3. ON AIR

    Built-in 2nd

    The Mac's own mic. Gets the job when nothing is plugged in.

  4. ON AIR

    Bluetooth Last

    AirPods and other headsets. Only used when no other mic is around.

  5. Never

    Virtual devices from Zoom, Teams and loopback drivers, plus any mic you mark Never use.

Who gets the mic
Your wired mic

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.

DJI Wireless Mic RxWired · ConnectedAlways prefer
MacBook Pro MicrophoneBuilt-in · ConnectedAutomatic
AirPods ProBluetooth · ConnectedNever use

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.