Android Debug Bridge (ADB) is one of the most powerful tools available to Android users, developers, and enthusiasts. With ADB, you can install and uninstall apps, change system settings, inspect device information, capture logs, automate tasks, and perform many operations that are not normally available through the Android user interface.

However, ADB does not have unrestricted access to Android. The ADB Shell commands you can execute through adb shell depend on the permissions and privileges assigned to Android’s shell user, as well as Android’s security model, SELinux policies, AppOps, the Android version, and OEM-specific changes.

This article provides a comprehensive list of the permissions declared for Android’s com.android.shell package in the current AOSP source and explains why the actual capabilities of ADB can differ from one Android version or device to another.

Table of Content

ADB Does Not Have Root Access

One of the most common misconceptions about ADB is that an ADB shell grants root access. It is not.

When you run:

adb shell

you normally enter Android’s shell environment rather than a root shell. AOSP assigns the shell package the shared UID android.uid.shell. The AOSP manifest for com.android.shell explicitly identifies this package as the system shell.

The shell is nevertheless considerably more privileged than a normal third-party Android application. It has access to a large collection of system, development, testing, and internal permissions.

That is why commands such as these can perform operations that an ordinary Android application cannot:

adb shell settings put system ...
adb shell pm disable-user --user 0 ...
adb shell am force-stop ...
adb shell cmd ...
adb shell dumpsys ...
adb shell input tap ...
adb shell wm size ...
adb shell appops ...

At the same time, having a permission declared in the shell manifest does not automatically mean that every device will allow every operation associated with it. SELinux, framework checks, AppOps, permission enforcement, feature flags, and OEM modifications can further restrict what the shell can actually do.

Don’t Miss: ADB Commands to Improve Performance on Android

Complete ADB Shell Permission List

The following list is based on the current AOSP packages/Shell/AndroidManifest.xml. The manifest is divided into groups such as standard shell permissions, system-tool permissions, development-tool permissions, internal permissions, and permissions required for CTS/GTS testing.

Standard Permissions Granted to the Shell

  • CAMERA_HEADLESS_SYSTEM_USER
  • MANAGE_HEALTH_PERMISSIONS
  • MANAGE_HEALTH_DATA
  • health.READ_EXERCISE_ROUTE
  • MIGRATE_HEALTH_CONNECT_DATA
  • LAUNCH_DEVICE_MANAGER_SETUP
  • GET_RUNTIME_PERMISSIONS
  • SEND_SMS
  • READ_SMS
  • CALL_PHONE
  • READ_PHONE_STATE
  • READ_PRECISE_PHONE_STATE
  • READ_ACTIVE_EMERGENCY_SESSION
  • READ_PRIVILEGED_PHONE_STATE
  • READ_CONTACTS
  • WRITE_CONTACTS
  • READ_CALENDAR
  • WRITE_CALENDAR
  • READ_CALL_LOG
  • WRITE_CALL_LOG
  • READ_USER_DICTIONARY
  • WRITE_USER_DICTIONARY
  • ACCESS_FINE_LOCATION
  • ACCESS_COARSE_LOCATION
  • HIGH_SAMPLING_RATE_SENSORS
  • RECEIVE_SMS
  • RECEIVE_WAP_PUSH
  • RECEIVE_MMS
  • READ_CELL_BROADCASTS
  • SATELLITE_COMMUNICATION
  • ACCESS_MEDIA_LOCATION
  • PROCESS_OUTGOING_CALLS
  • READ_PHONE_NUMBERS
  • USE_SIP
  • ANSWER_PHONE_CALLS
  • ACCEPT_HANDOVER
  • ACTIVITY_RECOGNITION
  • BODY_SENSORS
  • com.android.voicemail.permission.ADD_VOICEMAIL
  • WRITE_EMBEDDED_SUBSCRIPTIONS
  • GET_PROCESS_STATE_AND_OOM_SCORE
  • READ_LOGS
  • BRIGHTNESS_SLIDER_USAGE
  • ACCESS_AMBIENT_LIGHT_STATS
  • CONFIGURE_DISPLAY_BRIGHTNESS
  • SET_VOLUME_KEY_LONG_PRESS_LISTENER
  • SET_MEDIA_KEY_LISTENER
  • INSTANT_APP_FOREGROUND_SERVICE
  • MANAGE_OWN_CALLS
  • CALL_COMPANION_APP
  • USE_FINGERPRINT
  • READ_PROFILE
  • WRITE_PROFILE
  • READ_SOCIAL_STREAM
  • WRITE_SOCIAL_STREAM
  • WRITE_SMS
  • AUTHENTICATE_ACCOUNTS
  • MANAGE_ACCOUNTS
  • USE_CREDENTIALS
  • SUBSCRIBED_FEEDS_READ
  • SUBSCRIBED_FEEDS_WRITE
  • FLASHLIGHT
  • INTERNET
  • NFC
  • NFC_TRANSACTION_EVENT
  • NFC_PREFERRED_PAYMENT_INFO
  • CHANGE_WIFI_MULTICAST_STATE
  • TRANSMIT_IR
  • MODIFY_AUDIO_SETTINGS
  • REQUEST_PASSWORD_COMPLEXITY
  • GET_TASKS
  • RESTART_PACKAGES
  • REQUEST_COMPANION_RUN_IN_BACKGROUND
  • REQUEST_COMPANION_USE_DATA_IN_BACKGROUND
  • HIDE_OVERLAY_WINDOWS
  • SET_WALLPAPER_HINTS
  • READ_SYNC_SETTINGS
  • WRITE_SYNC_SETTINGS
  • READ_SYNC_STATS
  • com.android.browser.permission.READ_HISTORY_BOOKMARKS
  • com.android.browser.permission.WRITE_HISTORY_BOOKMARKS
  • com.android.alarm.permission.SET_ALARM
  • com.android.launcher.permission.INSTALL_SHORTCUT
  • com.android.launcher.permission.UNINSTALL_SHORTCUT
  • PERSISTENT_ACTIVITY
  • GET_PACKAGE_SIZE
  • CHANGE_NETWORK_STATE
  • REQUEST_DELETE_PACKAGES
  • REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE
  • REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
  • ACCESS_NOTIFICATION_POLICY
  • READ_INSTALL_SESSIONS
  • USE_FULL_SCREEN_INTENT
  • TRIGGER_LOST_MODE
  • ACCESS_BACKGROUND_LOCATION
  • ACCESS_MTP
  • ACCESS_LOCATION_EXTRA_COMMANDS
  • ACCESS_NETWORK_STATE
  • ACCESS_WIFI_STATE
  • BLUETOOTH
  • BLUETOOTH_ADMIN
  • BLUETOOTH_ADVERTISE
  • BLUETOOTH_CONNECT
  • BLUETOOTH_PRIVILEGED
  • BLUETOOTH_SCAN
  • LOCAL_MAC_ADDRESS
  • EXPAND_STATUS_BAR
  • DISABLE_KEYGUARD
  • MANAGE_NETWORK_POLICY
  • MANAGE_USB
  • USE_RESERVED_DISK
  • FOREGROUND_SERVICE
15 Shizuku Tricks Most Android Users Don’t Know

System Tool Permissions

  • REAL_GET_TASKS
  • CHANGE_CONFIGURATION
  • REORDER_TASKS
  • REMOVE_TASKS
  • SET_ANIMATION_SCALE
  • SET_PREFERRED_APPLICATIONS
  • WRITE_SETTINGS
  • WRITE_SECURE_SETTINGS
  • LOCATION_BYPASS
  • READ_DEVICE_CONFIG
  • WRITE_DEVICE_CONFIG
  • WRITE_ALLOWLISTED_DEVICE_CONFIG
  • READ_WRITE_SYNC_DISABLED_MODE_CONFIG
  • MONITOR_DEVICE_CONFIG_ACCESS
  • BROADCAST_STICKY
  • MANAGE_ACCESSIBILITY

Development Tool Permissions

  • SET_DEBUG_APP
  • SET_PROCESS_LIMIT
  • SET_ALWAYS_FINISH
  • DUMP
  • CONTROL_UI_TRACING
  • SIGNAL_PERSISTENT_PROCESSES
  • KILL_BACKGROUND_PROCESSES
  • KILL_ALL_BACKGROUND_PROCESSES

Internal Shell Permissions

The next group is particularly important for power users because it contains Android permissions associated with package management, system settings, process control, input injection, display control, user management, networking, AppOps, and many other low-level Android functions.

  • FORCE_BACK
  • BATTERY_STATS
  • PACKAGE_USAGE_STATS
  • REPORT_USAGE_STATS
  • INTERNAL_SYSTEM_WINDOW
  • INJECT_EVENTS
  • RETRIEVE_WINDOW_CONTENT
  • SET_ACTIVITY_WATCHER
  • READ_INPUT_STATE
  • SET_ORIENTATION
  • INSTALL_PACKAGES
  • INSTALL_PACKAGE_UPDATES
  • INSTALL_DEPENDENCY_SHARED_LIBRARIES
  • ENFORCE_UPDATE_OWNERSHIP
  • INSTALL_DPC_PACKAGES
  • com.android.permission.USE_INSTALLER_V2
  • INSTALL_TEST_ONLY_PACKAGE
  • com.android.permission.USE_SYSTEM_DATA_LOADERS
  • PACKAGE_VERIFICATION_AGENT
  • MOVE_PACKAGE
  • KEEP_UNINSTALLED_PACKAGES
  • CLEAR_APP_USER_DATA
  • CLEAR_APP_CACHE
  • ACCESS_INSTANT_APPS
  • DELETE_CACHE_FILES
  • DELETE_PACKAGES
  • MANAGE_ROLLBACKS
  • TEST_MANAGE_ROLLBACKS
  • ACCESS_SURFACE_FLINGER
  • CAPTURE_VIDEO_OUTPUT
  • READ_FRAME_BUFFER
  • REBOOT
  • DEVICE_POWER
  • POWER_SAVER
  • BATTERY_PREDICTION
  • INSTALL_LOCATION_PROVIDER
  • BACKUP
  • FORCE_STOP_PACKAGES
  • STOP_APP_SWITCHES
  • ACCESS_CONTENT_PROVIDERS_EXTERNALLY
  • GRANT_RUNTIME_PERMISSIONS
  • REVOKE_RUNTIME_PERMISSIONS
  • MANAGE_ONE_TIME_PERMISSION_SESSIONS
  • INSTALL_GRANT_RUNTIME_PERMISSIONS
  • WHITELIST_RESTRICTED_PERMISSIONS
  • EMERGENCY_INSTALL_PACKAGES
  • MODIFY_TOUCH_MODE_STATE
  • OBSERVE_GRANT_REVOKE_PERMISSIONS
  • SET_KEYBOARD_LAYOUT
  • GET_DETAILED_TASKS
  • SET_SCREEN_COMPATIBILITY
  • READ_EXTERNAL_STORAGE
  • WRITE_EXTERNAL_STORAGE
  • WRITE_MEDIA_STORAGE
  • INTERACT_ACROSS_USERS
  • INTERACT_ACROSS_USERS_FULL
  • CREATE_USERS
  • MANAGE_SUBSCRIPTION_USER_ASSOCIATION
  • QUERY_USERS
  • MANAGE_CREDENTIAL_MANAGEMENT_APP
  • MANAGE_DEVICE_ADMINS
  • MANAGE_PROFILE_AND_DEVICE_OWNERS
  • PROVISION_DEMO_DEVICE
  • QUERY_ADMIN_POLICY
  • UPDATE_DEVICE_MANAGEMENT_RESOURCES
  • FORCE_DEVICE_POLICY_MANAGER_LOGS
  • CLEAR_FREEZE_PERIOD
  • MODIFY_QUIET_MODE
  • ACCESS_LOWPAN_STATE
  • CHANGE_LOWPAN_STATE
  • READ_LOWPAN_CREDENTIAL
  • BLUETOOTH_STACK
  • GET_ACCOUNTS
  • COPY_ACCOUNTS
  • REMOVE_ACCOUNTS
  • RETRIEVE_WINDOW_TOKEN
  • FRAME_STATS
  • BIND_APPWIDGET
  • UPDATE_APP_OPS_STATS
  • MODIFY_APPWIDGET_BIND_PERMISSIONS
  • CHANGE_APP_IDLE_STATE
  • CHANGE_DEVICE_IDLE_TEMP_WHITELIST
  • MOUNT_UNMOUNT_FILESYSTEMS
  • MOUNT_FORMAT_FILESYSTEMS
  • MODIFY_PHONE_STATE
  • ACCESS_HIDDEN_PROFILES_FULL
  • NETWORK_SCAN
  • REGISTER_CALL_PROVIDER
  • REGISTER_CONNECTION_MANAGER
  • REGISTER_SIM_SUBSCRIPTION
  • GET_APP_OPS_STATS
  • MANAGE_APP_OPS_MODES
  • VIBRATE
  • ACCESS_VIBRATOR_STATE
  • VIBRATE_VENDOR_EFFECTS
  • START_VIBRATION_SESSIONS
  • MANAGE_ACTIVITY_TASKS
  • START_TASKS_FROM_RECENTS
  • START_ACTIVITIES_FROM_BACKGROUND
  • START_FOREGROUND_SERVICES_FROM_BACKGROUND
  • ACTIVITY_EMBEDDING
  • CONNECTIVITY_INTERNAL
  • MANAGE_CLOUDSEARCH
  • CHANGE_COMPONENT_ENABLED_STATE
  • MANAGE_AUTO_FILL
  • MANAGE_CONTENT_CAPTURE
  • MANAGE_CONTENT_SUGGESTIONS
  • MANAGE_APP_PREDICTIONS
  • MANAGE_LOW_POWER_STANDBY
  • SET_LOW_POWER_STANDBY_PORTS
  • MANAGE_SEARCH_UI
  • MANAGE_SMARTSPACE
  • MANAGE_WALLPAPER_EFFECTS_GENERATION
  • MANAGE_UI_TRANSLATION
  • NETWORK_SETTINGS
  • CHANGE_WIFI_STATE
  • SET_TIME
  • SET_TIME_ZONE
  • DISABLE_HIDDEN_API_CHECKS
  • MANAGE_ROLE_HOLDERS
  • MANAGE_DEFAULT_APPLICATIONS
  • BYPASS_ROLE_QUALIFICATION
  • OBSERVE_ROLE_HOLDERS
  • STATUS_BAR_SERVICE
  • STATUS_BAR
  • POST_NOTIFICATIONS
  • SUBSTITUTE_NOTIFICATION_APP_NAME
  • REQUEST_NOTIFICATION_ASSISTANT_SERVICE
  • WAKE_LOCK
  • CHANGE_OVERLAY_PACKAGES
  • RESTRICTED_VR_ACCESS
  • MANAGE_BIND_INSTANT_SERVICE
  • SET_HARMFUL_APP_WARNINGS
  • MANAGE_SENSORS
  • MANAGE_AUDIO_POLICY
  • QUERY_AUDIO_STATE
  • MANAGE_CAMERA
  • CAMERA
  • BACKGROUND_CAMERA
  • SYSTEM_CAMERA
  • CAMERA_OPEN_CLOSE_LISTENER
  • RECORD_AUDIO
  • RECORD_BACKGROUND_AUDIO
  • MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED
  • MANAGE_WIFI_WHEN_WIRELESS_CONSENT_REQUIRED
  • INSTALL_DYNAMIC_SYSTEM
  • RECEIVE_BOOT_COMPLETED
  • CONTROL_KEYGUARD
  • CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS
  • SUSPEND_APPS
  • QUARANTINE_APPS
  • OBSERVE_APP_USAGE
  • READ_CLIPBOARD_IN_BACKGROUND
  • ENABLE_TEST_HARNESS_MODE
  • COMPANION_APPROVE_WIFI_CONNECTIONS
  • MANAGE_COMPANION_DEVICES
  • REQUEST_COMPANION_PROFILE_APP_STREAMING
  • REQUEST_COMPANION_PROFILE_COMPUTER
  • REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION
  • REQUEST_COMPANION_PROFILE_NEARBY_DEVICE_STREAMING
  • REQUEST_COMPANION_PROFILE_WATCH
  • REQUEST_COMPANION_PROFILE_GLASSES
  • REQUEST_COMPANION_SELF_MANAGED
  • USE_COMPANION_TRANSPORTS
  • REQUEST_OBSERVE_DEVICE_UUID_PRESENCE
  • DELIVER_COMPANION_MESSAGES
  • MANAGE_APPOPS
  • WATCH_APPOPS
  • LOADER_USAGE_STATS
  • MANAGE_EXTERNAL_STORAGE
  • MANAGE_TEST_NETWORKS
  • PACKET_KEEPALIVE_OFFLOAD
  • RESET_APP_ERRORS
  • OBSERVE_PICTURE_PROFILES
  • GET_INTENT_SENDER_INTENT
  • CONTROL_KEYGUARD_SECURE_NOTIFICATIONS
  • MANAGE_WEAK_ESCROW_TOKEN
  • SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS
  • SET_WALLPAPER
  • SET_WALLPAPER_COMPONENT
  • SET_WALLPAPER_DIM_AMOUNT
  • AMBIENT_WALLPAPER
  • READ_WALLPAPER_INTERNAL
  • CACHE_CONTENT
  • BIND_EXPLICIT_HEALTH_CHECK_SERVICE
  • INTERACT_ACROSS_PROFILES
  • START_CROSS_PROFILE_ACTIVITIES
  • LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH
  • LOG_COMPAT_CHANGE
  • READ_COMPAT_CHANGE_CONFIG
  • OVERRIDE_COMPAT_CHANGE_CONFIG
  • OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD
  • MODIFY_DAY_NIGHT_MODE
  • ENTER_CAR_MODE_PRIORITIZED
  • READ_PROJECTION_STATE
  • TOGGLE_AUTOMOTIVE_PROJECTION
  • READ_CARRIER_APP_INFO
  • CONTROL_INCALL_EXPERIENCE
  • GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS
  • TETHER_PRIVILEGED
  • MANAGE_CRATES
  • CONTROL_DISPLAY_BRIGHTNESS
  • ACCESS_SHORTCUTS
  • MANAGE_NOTIFICATIONS
  • ACCESS_LOCUS_ID_USAGE_STATS
  • SHOW_CUSTOMIZED_RESOLVER
  • MANAGE_MUSIC_RECOGNITION
  • MANAGE_SPEECH_RECOGNITION
  • READ_DREAM_STATE
  • WRITE_DREAM_STATE
  • CONTROL_DEVICE_LIGHTS
  • UPGRADE_RUNTIME_PERMISSIONS
  • RESTART_WIFI_SUBSYSTEM
  • READ_WIFI_CREDENTIAL
  • WIFI_UPDATE_USABILITY_STATS_SCORE
  • REGISTER_STATS_PULL_ATOM
  • READ_RESTRICTED_STATS
  • MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE
  • MODIFY_DEFAULT_AUDIO_EFFECTS
  • CONNECTIVITY_USE_RESTRICTED_NETWORKS
  • OBSERVE_NETWORK_POLICY
  • ACCESS_TV_DESCRAMBLER
  • ACCESS_TV_SHARED_FILTER
  • ACCESS_TV_TUNER
  • TUNER_RESOURCE_ACCESS
  • WHITELIST_AUTO_REVOKE_PERMISSIONS
  • ACCESS_SHARED_LIBRARIES
  • ACCESS_TUNED_INFO
  • TV_INPUT_HARDWARE
  • TIS_EXTENSION_INTERFACE
  • LOCATION_HARDWARE
  • CAPTURE_AUDIO_OUTPUT
  • MANAGE_DEBUGGING
  • ACCESS_RCS_USER_CAPABILITY_EXCHANGE
  • PERFORM_IMS_SINGLE_REGISTRATION
  • OVERRIDE_DISPLAY_MODE_REQUESTS
  • MODIFY_REFRESH_RATE_SWITCHING_TYPE
  • MODIFY_USER_PREFERRED_DISPLAY_MODE
  • MODIFY_HDR_CONVERSION_MODE
  • SUGGEST_TELEPHONY_TIME_AND_ZONE
  • MANAGE_TIME_AND_ZONE_DETECTION
  • SUGGEST_EXTERNAL_TIME
  • READ_APP_SPECIFIC_LOCALES
  • SET_APP_SPECIFIC_LOCALECONFIG
  • SUGGEST_MANUAL_TIME
  • SUGGEST_TELEPHONY_TIME
  • SUGGEST_NETWORK_TIME
  • SUGGEST_GNSS_TIME
  • USE_BIOMETRIC
  • TEST_BIOMETRIC
  • SET_BIOMETRIC_DIALOG_ADVANCED
  • MANAGE_NOTIFICATION_LISTENERS
  • CONTROL_DISPLAY_COLOR_TRANSFORMS
  • CONTROL_DEVICE_STATE
  • BROADCAST_CLOSE_SYSTEM_DIALOGS
  • SYSTEM_ALERT_WINDOW
  • SYSTEM_APPLICATION_OVERLAY
  • HDMI_CEC
  • BIND_IMS_SERVICE
  • WIFI_ACCESS_COEX_UNSAFE_CHANNELS
  • WIFI_UPDATE_COEX_UNSAFE_CHANNELS
  • NEARBY_WIFI_DEVICES
  • MANAGE_WIFI_INTERFACES
  • OVERRIDE_WIFI_CONFIG
  • MANAGE_WIFI_NETWORK_SELECTION
  • CONFIGURE_WIFI_DISPLAY
  • THREAD_NETWORK_PRIVILEGED
  • THREAD_NETWORK_TESTING
  • MANAGE_TOAST_RATE_LIMITING
  • MANAGE_SENSOR_PRIVACY
  • OBSERVE_SENSOR_PRIVACY
  • MANAGE_SOUND_TRIGGER
  • CAPTURE_AUDIO_HOTWORD
  • QUERY_ALL_PACKAGES
  • DOWNLOAD_WITHOUT_NOTIFICATION
  • BIND_RESUME_ON_REBOOT_SERVICE
  • SIGNAL_REBOOT_READINESS
  • READ_PEOPLE_DATA
  • ACCESS_FPS_COUNTER
  • MANAGE_GAME_MODE
  • SET_GAME_SERVICE
  • MANAGE_GAME_ACTIVITY
  • SET_CLIP_SOURCE
  • TEST_INPUT_METHOD
  • UPDATE_FONTS
  • GET_TOP_ACTIVITY_INFO
  • MANAGE_HOTWORD_DETECTION
  • BIND_HOTWORD_DETECTION_SERVICE
  • SOUND_TRIGGER_RUN_IN_BATTERY_SAVER
  • BIND_VISUAL_QUERY_DETECTION_SERVICE
  • SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE
  • MANAGE_APP_HIBERNATION
  • MEDIA_RESOURCE_OVERRIDE_PID
  • REGISTER_MEDIA_RESOURCE_OBSERVER
  • RENOUNCE_PERMISSIONS
  • UNLIMITED_TOASTS
  • SCHEDULE_PRIORITIZED_ALARM
  • MEDIA_CONTENT_CONTROL
  • MEDIA_ROUTING_CONTROL
  • MODIFY_AUDIO_ROUTING
  • MODIFY_AUDIO_SETTINGS_PRIVILEGED
  • ACCESS_AMBIENT_CONTEXT_EVENT
  • MANAGE_WEARABLE_SENSING_SERVICE
  • USE_ON_DEVICE_INTELLIGENCE
  • CALL_AUDIO_INTERCEPTION
  • MANAGE_ROTATION_RESOLVER
  • UWB_PRIVILEGED
  • UWB_RANGING
  • RANGING
  • UPDATE_DEVICE_STATS
  • READ_GLOBAL_APP_SEARCH_DATA
  • NOTIFY_PENDING_SYSTEM_UPDATE
  • MANAGE_VIRTUAL_MACHINE
  • USE_CUSTOM_VIRTUAL_MACHINE
  • DEBUG_VIRTUAL_MACHINE
  • MANAGE_VOICE_KEYPHRASES
  • LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK
  • LOCK_DEVICE
  • MANAGE_SECURE_LOCK_DEVICE
  • SEND_SAFETY_CENTER_UPDATE
  • READ_SAFETY_CENTER_STATUS
  • MANAGE_SAFETY_CENTER
  • REVOKE_POST_NOTIFICATIONS_WITHOUT_KILL
  • SET_SYSTEM_AUDIO_CAPTION
  • BIND_TELECOM_CONNECTION_SERVICE
  • MODIFY_CELL_BROADCASTS
  • ACCESS_LAST_KNOWN_CELL_ID
  • ACCESS_PDB_STATE
  • MAKE_UID_VISIBLE
  • ASSOCIATE_INPUT_DEVICE_TO_DISPLAY
  • READ_NEARBY_STREAMING_POLICY
  • MANAGE_DEVICE_POLICY_AUDIT_LOGGING
  • REQUEST_UNIQUE_ID_ATTESTATION
  • UPDATE_LOCK_TASK_PACKAGES
  • ADJUST_RUNTIME_PERMISSIONS_POLICY
  • MANAGE_DEVICE_LOCK_STATE
  • FOREGROUND_SERVICE_CAMERA
  • FOREGROUND_SERVICE_CONNECTED_DEVICE
  • FOREGROUND_SERVICE_DATA_SYNC
  • FOREGROUND_SERVICE_LOCATION
  • FOREGROUND_SERVICE_MEDIA_PLAYBACK
  • FOREGROUND_SERVICE_MEDIA_PROJECTION
  • FOREGROUND_SERVICE_MICROPHONE
  • FOREGROUND_SERVICE_PHONE_CALL
  • FOREGROUND_SERVICE_HEALTH
  • FOREGROUND_SERVICE_REMOTE_MESSAGING
  • FOREGROUND_SERVICE_SYSTEM_EXEMPTED
  • FOREGROUND_SERVICE_FILE_MANAGEMENT
  • FOREGROUND_SERVICE_MEDIA_PROCESSING
  • FOREGROUND_SERVICE_SPECIAL_USE
  • CAPTURE_MEDIA_OUTPUT
  • CAPTURE_TUNER_AUDIO_INPUT
  • CAPTURE_VOICE_COMMUNICATION_OUTPUT
  • SCHEDULE_EXACT_ALARM
  • USE_EXACT_ALARM
  • REMAP_MODIFIER_KEYS
  • MANAGE_DEVICE_POLICY_APP_EXEMPTIONS
  • GET_APP_METADATA
  • DELETE_STAGED_HEALTH_CONNECT_REMOTE_DATA
  • STAGE_HEALTH_CONNECT_REMOTE_DATA
  • ACCESS_BROADCAST_RADIO
  • DETECT_SCREEN_CAPTURE
  • WRITE_APN_SETTINGS
  • WRITE_BLOCKED_NUMBERS
  • READ_BLOCKED_NUMBERS
  • LOG_FOREGROUND_RESOURCE_USE
  • READ_INSTALLED_SESSION_PATHS
  • USE_ATTESTATION_VERIFICATION_SERVICE
  • LAUNCH_CREDENTIAL_SELECTOR
  • QUERY_CLONED_APPS
  • MANAGE_DISPLAYS
  • GET_ANY_PROVIDER_TYPE
  • START_ACTIVITIES_FROM_SDK_SANDBOX
  • ALWAYS_UPDATE_WALLPAPER
  • RESET_HOTWORD_TRAINING_DATA_EGRESS_COUNT
  • RECEIVE_SANDBOX_TRIGGER_AUDIO
  • GET_BINDING_UID_IMPORTANCE
  • ACCESSIBILITY_MOTION_EVENT_OBSERVING
  • RECEIVE_SENSITIVE_NOTIFICATIONS
  • EMBED_ANY_APP_IN_UNTRUSTED_MODE
  • GET_BACKGROUND_INSTALLED_PACKAGES
  • MANAGE_ENHANCED_CONFIRMATION_STATES
  • WRITE_VERIFICATION_STATE_E2EE_CONTACT_KEYS
  • DETECT_SCREEN_RECORDING
  • READ_SYSTEM_GRAMMATICAL_GENDER
  • DOMAIN_VERIFICATION_AGENT
  • OVERRIDE_SYSTEM_KEY_BEHAVIOR_IN_FOCUSED_WINDOW
  • PREPARE_FACTORY_RESET
  • SETUP_FSVERITY
  • EXECUTE_APP_FUNCTIONS_TRUSTED
  • EXECUTE_APP_FUNCTIONS
  • NFC_SET_CONTROLLER_ALWAYS_ON
  • MANAGE_ADVANCED_PROTECTION_MODE
  • QUERY_ADVANCED_PROTECTION_MODE
  • READ_INTRUSION_DETECTION_STATE
  • MANAGE_INTRUSION_DETECTION_STATE
  • KILL_UID
  • READ_BASIC_PHONE_STATE
  • DYNAMIC_INSTRUMENTATION
  • READ_SYSTEM_PREFERENCES
  • WRITE_SYSTEM_PREFERENCES
  • health.READ_HEART_RATE
  • health.READ_OXYGEN_SATURATION
  • health.READ_SKIN_TEMPERATURE
  • ACCESS_TEXT_CLASSIFIER_BY_TYPE

Non-Android Permission Names in the Manifest

A few entries in the manifest belong to packages other than the main android.permission namespace. These include:

  • com.android.voicemail.permission.ADD_VOICEMAIL
  • com.android.browser.permission.READ_HISTORY_BOOKMARKS
  • com.android.browser.permission.WRITE_HISTORY_BOOKMARKS
  • com.android.alarm.permission.SET_ALARM
  • com.android.launcher.permission.INSTALL_SHORTCUT
  • com.android.launcher.permission.UNINSTALL_SHORTCUT
  • com.android.permission.USE_INSTALLER_V2
  • com.android.permission.USE_SYSTEM_DATA_LOADERS
  • com.android.voicemail.permission.READ_VOICEMAIL
  • com.android.providers.tv.permission.ACCESS_WATCHED_PROGRAMS
  • com.android.providers.tv.permission.WRITE_EPG_DATA
  • com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
  • android.contacts.permission.MANAGE_SIM_ACCOUNTS

The enormous size of this list can be misleading. It does not mean that ADB is intended to give Android users unrestricted control over every subsystem. The source code explicitly labels many entries as permissions required for CTS or GTS tests.

For example, the manifest contains permissions for testing UWB, TV tuners, Thread networking, Health Connect, game mode, hotword detection, virtual machines, safety center, screen recording, app functions, advanced protection, intrusion detection, and numerous other Android subsystems.

Therefore, the presence of a permission in the manifest should not be interpreted as a guarantee that a particular ADB command will work on every consumer device.

Why Some ADB Commands Work Without Root

ADB’s usefulness comes from the fact that the shell UID has privileges that ordinary applications do not have. For example, the shell can interact with many system services and invoke privileged framework APIs.

This is also why utilities such as Shizuku can provide powerful functionality without rooting the device: they can use an ADB-started service to operate within the privileges available to the shell environment, although Shizuku itself does not magically obtain every shell capability.

However, ADB shell should not be confused with the root user. When adbd runs with root privileges on a userdebug or eng build, it operates under a substantially different security context. AOSP documentation notes that when adbd has root permissions, it uses the su SELinux domain rather than the normal shell domain.

Don’t Miss: ADB Commands for Battery Optimization on Android

ADB Permissions vs. Root Permissions

Capability ADB Shell Root
Run shell commands Yes Yes
Access privileged Android APIs Many Much broader
Install/uninstall packages Many operations are possible Broader control
Change secure settings Many operations are possible Broader control
Inject input events Supported for many operations Yes
Modify protected system files Generally restricted Generally possible, subject to filesystem/SELinux restrictions
Bypass SELinux restrictions No Not automatically; depends on SELinux state/policy
Full unrestricted system access No No guarantee, but substantially more powerful

Why a Permission Does Not Always Mean an ADB Command Will Work

Android’s permission model is only one layer of the security architecture.

A command executed through ADB may also be affected by:

  • Android version: Framework APIs and permission enforcement change between releases.
  • SELinux: The shell process runs under the shell SELinux domain, which imposes additional restrictions.
  • AppOps: Some operations are controlled through AppOps in addition to normal permissions.
  • Framework checks: Android system services can perform additional UID, user, role, or state checks.
  • Feature flags: Some permissions in the current manifest are conditional on platform feature flags.
  • OEM modifications: Samsung, Xiaomi, OnePlus, Google, and other manufacturers can modify framework behavior and security policies.
  • Build type: User, userdebug, and eng builds can behave differently.
  • Multi-user restrictions: ADB and Android’s shell environment have specific behavior around users and profiles.

AOSP itself documents that ADB/adbd operates as the system user in the context of multi-user behavior, while individual ADB commands can have user-specific behavior.

How to Check What ADB Can Actually Do on Your Device

The most reliable way to understand ADB access on a particular phone is to test it on that device’s Android build rather than relying solely on a generic permission list.

You can inspect the shell identity with:

adb shell id

You can also inspect package and permission information with Android’s package manager:

adb shell pm list permissions
adb shell pm list permissions -g -d

AOSP documents the latter command as a way to list dangerous permissions.

For a specific operation, the most useful test is often simply to execute the relevant command and inspect the resulting error. A SecurityException, Permission denied, or AppOps-related failure can reveal which security layer is blocking the operation.

Bottom Line

ADB’s capabilities come from Android’s shell user rather than from a single universal “ADB permission.” The AOSP com.android.shell manifest declares hundreds of permissions covering everything from basic device access to package management, system configuration, input injection, networking, telephony, media, displays, security, testing, Health Connect, virtual machines, and other platform components.

When an ADB command works on one Android phone but fails on another, the explanation is often not simply that “ADB has limited permissions.” The difference can come from the shell permission set, framework enforcement, SELinux, AppOps, feature flags, build type, or OEM-specific restrictions.

Source: AOSP & GitHub.

Read Next: How to Use ADB to Check Apps Running in Background