How to Grant App Permissions with ADB Without Root

How to Grant App Permissions via ADB Without Root Access

11 May 2026 Stephan Petzl Leave a comment Tech-Help

If you are trying to use ADB to grant or revoke runtime permissions and you hit a security error, the short version is this: the command is allowed only when the device has been configured to permit it. On many Android devices, especially those running vendor-specific Android builds, you must enable a developer setting that relaxes permission monitoring before the command will work.

The basic requirement

The command you want to use is typically:

adb shell pm grant package.name android.permission.PERMISSION_NAME

However, if you run it from a normal shell without the right device-side setting enabled, Android blocks it. That is expected behavior. The fix is not to root the phone, but to enable the appropriate developer option on the device.

What usually solves it

On many devices, the setting is found in Developer options and may be named one of the following:

  • Disable Permission Monitoring
  • USB debugging (Security settings)
  • Allow granting permissions and simulating input via USB debugging

After enabling it, restart the device. In many cases, the permission command will then work normally over ADB.

Step-by-step guide

  1. Enable Developer options on the Android device.
  2. Turn on USB debugging.
  3. Look for a second security-related option such as Disable Permission Monitoring or USB debugging (Security settings).
  4. Enable that option and accept any warning prompts.
  5. Restart the device.
  6. Reconnect the phone to your computer and confirm it is visible with adb devices.
  7. Run your permission command again, for example:
    adb shell pm grant com.example.app android.permission.WRITE_SECURE_SETTINGS

If the command still fails

Some devices need one more step: make sure the target app is fully stopped before granting the permission. If the app is currently running, force stop it first:

adb shell am force-stop com.example.app

Then retry the grant command.

Device-specific notes

This behavior is especially common on devices with customized Android skins. The exact wording and location of the setting can vary by manufacturer and Android version, so if you do not see the option immediately, check the lower sections of Developer options, especially areas related to app security or debugging.

In practical terms, the rule is simple: ADB can grant runtime permissions only when the device explicitly allows it. Without that device-side permission, Android will reject the request even if the command syntax is correct.

When you should use this approach

This is useful when you are:

  • testing an app that needs special permissions during development
  • automating setup steps on a test device
  • verifying permission-dependent behavior without rooting the phone

If you are working with ADB regularly, you may also find these related guides helpful: granting and revoking app permissions with ADB, resolving ADB authorization issues, and troubleshooting ADB connection issues.

How Repeato can help

If your workflow involves repeatedly preparing Android devices for testing, Repeato can make that process faster. It supports no-code test automation for Android, can execute ADB commands through script steps, and is designed to help you sequence device actions reliably. That makes it a practical fit when permission changes, app restarts, and other setup steps need to happen in the right order during test runs.

In short: enable the device’s security-related debugging option, restart, stop the target app if needed, and then run the ADB permission command again. In most cases, that is the difference between a blocked request and a successful one.

Like this article? there’s more where that came from!