How to manually give app permissions MacOS

In this article you’ll find the answers to these questions:

  • OnVue can’t see mic
  • OnVue can’t see camera
  • OnVue doesn’t working
  • OnVue mic test
  • Zoom mic permission
  • Zoom camera permission
  • MacOS can’t add Zoom mic permission
  • MacOS can’t add OnVue mic permission
  • How to manually add app permission MacOS
  • How to add automation permission manually
  • MacOS automation permission terminal
  • MacOS TCC database
  • tccplus add kTCCServiceAutomation permission

Some MacOS versions have pretty annoying bug, which is that applications just don’t requesting necessary permissions.

Option #1. Install last system updates

First things first, you need to double check that you have the most recent MacOS version. If you already have, or if you can’t afford to update your system, have a look at the sections below.

Option #2. Try resetting specific permission type using tccutil

tccutil is built-in utility, that you can make use of. The command is following:

tccutil reset Microphone

Replace Microphone with specific permission type that you want to reset (for ex, Camera or Accessibility).

After this, try to rerun your app. If the app is still not requesting permissions, move forward to the next sections of this article.

Option #3. Try adding permissions manually using tccplus

You should download this utility: https://github.com/jslegendre/tccplus/releases.

After you downloaded it, follow the steps below:

  1. Place your app onto Application directory (skip this step, if your app is already there).
  2. Execute command: osascript -e 'id of app "Zoom.app"', replacing Zoom.app with your app name. This step is dedicated to helping you find the full application name.
  3. Next, navigate in the terminal onto you folder where tccplus utility was unpacked in, and execute following command: ./tccplus add Microphone com.full.app, where you should replace com.full.app with your app name from step 2, and Microphone with certain app permission. You can find list of the supported permissions at the Readme section of https://github.com/jslegendre/tccplus.
  4. Reopen MacOS system settings and double check, that your app was shown in the list of app permissions for specific category you chosen (mic, camera, etc).

Option #4. Change system permissions DB directly

MacOS has dedicated SQLite system DB, that is in charge of storing app’s that are listed in system settings app permissions list.

The DB is located here: ~/Library/Application Support/com.apple.TCC/TCC.db.

There is a chance that you have to disable SIP protection before opening DB and make any changes, since it’s a system file. Just Google the steps how to disable it. Remember to re-enable it after you are done with your changes.

It’s simpler to use visual DB tool in order to make any changes. You can use this one: https://sqlitebrowser.org/dl.

Open DB Browser for SQLite and open TCC.db inside of it. Then, find table named access, right click -> Browse table. You will see something like this:

The first column is a type of the permission. They can be vary, for example: kTCCServiceAccessibility, kTCCServiceMicrophone, kTCCServiceCamera, etc.

The second column embodies a full app name, that you want to grant permission to.

For example, here is the full record for Microphone permission for MacOS Sonoma. Column names and their count are vary from version to version.

(the table is scrollable)

serviceclientclient_typeauth_valueauth_reasonauth_versioncsreqpolicy_idindirect_object_identifier_typeindirect_object_identifierindirect_object_code_identityflagslast_modifiedpidpid_versionboot_uuidlast_reminded
kTCCServiceMicrophonecom.electron.onvue00410UNUSED01698925862UNUSED1698925862

It’s way more simpler to duplicate existing record and modify it the way you want. right click on the line number in the records browser -> duplicate record. Next, make changes you want. Finally, click on the “Write Changes” button on the top of the DB Browser.

The same thing you should do for automation permissions. Again, it’s way better to copy existing automation permission record and make changes for your application.

Automation permission works this way: basically you giving your app_a permission to control app_b.

This is the example, when you giving VLC permission to control over Spotify:

(the table is scrollable)

serviceclientclient_typeauth_valueauth_reasonauth_versioncsreqpolicy_idindirect_object_identifier_typeindirect_object_identifierindirect_object_code_identityflagslast_modifiedpidpid_versionboot_uuidlast_reminded
kTCCServiceAppleEventsorg.videolan.vlc02310com.spotify.client1699561164UNUSED1699561164

It’s important to note, that indirect_object_identifier column should have full name for the app_b. Service for automation events should be kTCCServiceAppleEvents.

As you see, kTCCServiceAutomation is not the correct type, as you might have initially guessed. You should use kTCCServiceAppleEvents type.

If you also want to give your app_a permission to control over app_c and app_d besides app_b, you should create a record for each integration:

  • app_a -> app_b
  • app_a -> app_c
  • app_a -> app_d

Option #5. MacOS system reset

If nothing works for you, or you don’t want to get your hands dirty with the system files, the system reset definitely is going to help you.

Settings -> General -> Transfer or Reset -> Erase All Content and Settings.

Additional thanks

Telegram channel

If you still have any questions, feel free to ask me in the comments under this article or write me at promark33@gmail.com.

If I saved your day, you can support me 🤝

Leave a Reply

Your email address will not be published. Required fields are marked *