I'm using macOS Mojave and it's preventing me from using my camera and microphone in web browsers like Firefox and Chrome, and in other applications too. How do I properly set up permissions so that my camera and microphone work in all of my apps?
I was months looking for a solution and none of them worked for me. Apps simply didn't ask for permission. Then I remembered that I had disabled SIP(System Integrity Protection). Re-enabling does the job!
Check if SIP is disabled:
$ csrutil status
If you get
System Integrity Protection status: disabled. We have to re-enable it.
Restart your Mac in recovery mode:
Before OS X starts up, hold down Command-R and keep it held down until you see an Apple icon and a progress bar. Release. This boots you into Recovery.
In recovery mode, Utilities menu, select Terminal and execute:
$ csrutil enable
$ csrutil clear
Reboot and the apps should ask again for every permission.
Starting with macOS Mojave, Apple has added new permissions to macOS that need to be granted before an application can use the Camera or Microphone. This affects all kind of calling software, and also affects web browsers that you might use for joining online meetings.
Security & Privacy in System Preferences
You can manage permissions for Camera and Microphone in the System Preferences. However, it doesn't work quite how you would expect! By default the list is empty, as shown below. None of your installed applications are shown in the list, and there is no + button that you could use to add an app. You can't even drag an app into this list.
In order to get an app to show up in this list, you first need to launch the app and activate some functionality inside the app that uses the Camera and Microphone.
- If you're using QuickTime Player, open the File menu and choose New Movie Recording.
- If you're using Mozilla Firefox or Google Chrome, the fastest way to do this is by visiting screenapp.io (no affiliation, it just works well).
- If you're using Safari, go to Google Hangouts and start a new Video Call.
- If you are using Slack (paid version only):
- Create a new private channel with only yourself as a member
- Click the telephone icon 📞
- Press the "Share your screen" button in the call window
You'll see a prompt like
"QuickTime Player" would like to access the microphone. Make sure to click OK because you'll only be asked once.
If you aren't presented with this prompt, first ensure that System Integrity Protection (SIP) is enabled on your Mac. To check, you can run
csrutil status and it should say
System Integrity Protection status: enabled. If SIP is enabled and the prompt still doesn't appear, you'll have to reset your privacy settings for Camera or Microphone using tccutil.
Once you've passed these prompts for camera and microphone, you should be able to use both devices in the current application. The setting is permanent, but only for one application at a time. If you want to use your camera or microphone in a different application, you'll need to authorize it again using the same procedure.
To add to crgarridos' answer (not allowed to comment due to being new here), there's some nuance to the buggy behavior:
If you set up your machine and immediately disable SIP, before any device has requested access to the microphone or camera, then the requests do not work at all. The app says it's requesting access, and the System Preferences / Security / Privacy pane never shows a request.
So in this case you need to boot into recovery mode, and from the terminal there enable SIP with "csrutil enable", reboot normally, make a single application request (so far I believe if a single request to a single device is enough, but you might want to cover both the microphone & camera to be on the safe side), and then reboot back into recovery mode, disabling SIP again, and rebooting normally a second time. Once this is done, future requests will be handled correctly.
You can use tccctl utility and manually grant permission as long as you have the service name (i.e. microphone access "kTCCServiceMicrophone") and package/bundle ID (i.e. FinalCutProX app "com.apple.FinalCutProX") or program path (i.e. /Applications/Final\ Cut\ Pro.app)
tccctl --grant -b com.apple.FinalCutProX -s kTCCServiceMicrophone
tccctl --grant -P /Applications/Final\ Cut\ Pro.app -s kTCCServiceMicrophone
These permissions should now show in System Pref -> Security & Privacy -> Privacy -> Microphone