{"package_name":"com.android.virtualization.terminal","label":"Terminal","device_count":28,"observation_count":73,"user_facing_count":12,"first_seen":"2025-05-04T16:17:28Z","last_seen":"2026-11-01T22:47:22Z","guidance":{"summary":"The \"Terminal\" app, part of AOSP's Android Virtualization Framework (AVF). It gives the device a Debian-based Linux environment running inside a virtual machine. AOSP describes the pieces as the Terminal app itself, the AVF subsystem, a Debian-based OS image and ttyd, an open-source terminal emulator served over HTTP, with the app using a WebView to reach the terminal service inside the VM. Its source lives in the AOSP tree at packages/modules/Virtualization/android/TerminalApp.\n\nIt is not a shell into Android. The manifest declares the application android:enabled=\"false\" and requires the android.software.virtualization_framework feature, and AOSP states the feature is available on select devices only and that a user must enable developer options before the Terminal app appears on the launcher. Its declared permissions are correspondingly heavy for an optional app: MANAGE_VIRTUAL_MACHINE, USE_CUSTOM_VIRTUAL_MACHINE, MANAGE_EXTERNAL_STORAGE, RECORD_AUDIO and INTERNET.\n\nVersion note: the Android 16 release notes introduce this as \"Linux terminal support. Ferrochrome introduces a Debian-based Linux terminal within a virtual machine\", and the AOSP manifest carries a 2024 copyright. In our sample the package is recorded on devices running API 35, 36 and 37 (Android 15, 16 and 17), so some vendors shipped it before the Android 16 notes described it. Which devices actually support AVF varies, and the sample shows the package present on Google, Samsung, Xiaomi, vivo, TCL and URAO builds: presence of the package is not by itself proof that a given device can run the VM.\n\nFor Android Enterprise, EMM and kiosk use the point to grasp is that the normal route to it is developer options. An admin who applies the DISALLOW_DEBUGGING_FEATURES user restriction, which Android documents as disallowing a user from \"enabling or accessing debugging features\", closes that route without touching the package. Disabling or hiding the package is also reasonable: it ships disabled by default, so a device that has never had it switched on is already running without it, and on a managed or kiosk device a general-purpose Linux VM with external storage and microphone access is rarely wanted.","safe_to_disable":"safe","sources":[{"title":"Use cases (Linux Development Environment / Terminal app) - Android Open Source Project","url":"https://source.android.com/docs/core/virtualization/usecases"},{"title":"Android 16, Android 16 QPR1, and Android 16 QPR2 release notes - Android Open Source Project","url":"https://source.android.com/docs/whatsnew/android-16-release"},{"title":"TerminalApp AndroidManifest.xml, Android 16 source - Android (packages/modules/Virtualization)","url":"https://android.googlesource.com/platform/packages/modules/Virtualization/+/refs/tags/android-16.0.0_r4/android/TerminalApp/AndroidManifest.xml"},{"title":"UserManager.DISALLOW_DEBUGGING_FEATURES - Android Developers","url":"https://developer.android.com/reference/android/os/UserManager"},{"title":"Package provenance for com.android.virtualization.terminal - Android System App Database","url":"https://sysapps.bayton.org/api/packages/com.android.virtualization.terminal"}],"last_verified":"2026-09-23T00:00:00Z"},"labels":[{"label":"Terminal","locale":"en-us","count":38},{"label":"Terminal","locale":"en","count":35},{"label":"Terminal","locale":"nl-NL","count":27},{"label":"Terminal","locale":"en-gb","count":21},{"label":"Terminale","locale":"it-IT","count":5},{"label":"Terminal","locale":"en-GB","count":4},{"label":"Terminal","locale":"nl-nl","count":4},{"label":"Terminal","locale":"","count":1},{"label":"Terminal","locale":"en-au","count":1},{"label":"Terminal","locale":"en-ca-u-fw-mon-mu-celsius","count":1},{"label":"Terminal","locale":"en-de","count":1},{"label":"Terminal","locale":"en-us-u-fw-mon-ms-ussystem-mu-fahrenhe","count":1},{"label":"Terminal","locale":"es-US","count":1},{"label":"Terminal","locale":"es-us","count":1},{"label":"Terminal","locale":"pl-PL","count":1},{"label":"Terminal","locale":"pl-pl","count":1},{"label":"Terminal","locale":"vi-VN","count":1},{"label":"Terminal","locale":"vi-vn","count":1},{"label":"Terminale","locale":"it-it","count":1},{"label":"Terminál","locale":"cs-cz","count":1}],"seen_on_pagination":{"paging_mode":"complete","limit":28,"offset":0,"has_more":false,"next_offset":null,"after":null,"next_after":null,"total":28},"seen_on":[{"device_id":9194,"make":"ASUS","model":"ASUS Googlebook 14","os_api":"37","observation_count":1,"user_facing_count":1,"last_seen":"2026-10-12T17:29:23Z","provenance":{"classification":"google","sha256":"210493400d1a7f34685ed6d004339f90ec3c3c9d0159818ef380025cc22ba7b8"}},{"device_id":9405,"make":"Dell","model":"XPS Googlebook","os_api":"37","observation_count":2,"user_facing_count":2,"last_seen":"2026-11-01T22:26:21Z","provenance":{"classification":"google","sha256":"210493400d1a7f34685ed6d004339f90ec3c3c9d0159818ef380025cc22ba7b8"}},{"device_id":1039,"make":"Google","model":"Pixel 10","os_api":"36","observation_count":1,"user_facing_count":0,"last_seen":"2026-06-05T10:10:22Z","provenance":{"classification":"google","sha256":"79a88bc7e730b392b55eedcd9ad723b4a6878156f9fb30ed7732d2e70bf207ac"}},{"device_id":325,"make":"Google","model":"Pixel 10 Pro","os_api":"36","observation_count":1,"user_facing_count":0,"last_seen":"2026-03-26T19:19:08Z","provenance":{"classification":"google","sha256":"210493400d1a7f34685ed6d004339f90ec3c3c9d0159818ef380025cc22ba7b8"}},{"device_id":358,"make":"Google","model":"Pixel 10 Pro","os_api":"37","observation_count":1,"user_facing_count":0,"last_seen":"2026-11-01T22:09:43Z","provenance":{"classification":"google","sha256":"210493400d1a7f34685ed6d004339f90ec3c3c9d0159818ef380025cc22ba7b8"}},{"device_id":203,"make":"Google","model":"Pixel 6","os_api":"36","observation_count":1,"user_facing_count":0,"last_seen":"2025-10-13T09:58:56Z"},{"device_id":9,"make":"Google","model":"Pixel 6 Pro","os_api":"35","observation_count":7,"user_facing_count":0,"last_seen":"2025-06-23T14:09:38Z"},{"device_id":318,"make":"Google","model":"Pixel 7 Pro","os_api":"36","observation_count":1,"user_facing_count":0,"last_seen":"2026-03-09T09:38:09Z","provenance":{"classification":"google","sha256":"210493400d1a7f34685ed6d004339f90ec3c3c9d0159818ef380025cc22ba7b8"}},{"device_id":93,"make":"Google","model":"Pixel 8","os_api":"36","observation_count":4,"user_facing_count":1,"last_seen":"2026-06-03T19:01:11Z"},{"device_id":198,"make":"Google","model":"Pixel 8a","os_api":"35","observation_count":1,"user_facing_count":0,"last_seen":"2025-10-05T18:31:57Z"},{"device_id":6,"make":"Google","model":"Pixel 9 Pro XL","os_api":"36","observation_count":21,"user_facing_count":4,"last_seen":"2026-03-29T03:46:05Z","provenance":{"classification":"google","sha256":"210493400d1a7f34685ed6d004339f90ec3c3c9d0159818ef380025cc22ba7b8"}},{"device_id":348,"make":"Google","model":"Pixel 9 Pro XL","os_api":"37","observation_count":2,"user_facing_count":2,"last_seen":"2026-10-26T00:10:46Z","provenance":{"classification":"google","sha256":"210493400d1a7f34685ed6d004339f90ec3c3c9d0159818ef380025cc22ba7b8"}},{"device_id":108,"make":"Google","model":"Pixel 9a","os_api":"36","observation_count":6,"user_facing_count":0,"last_seen":"2026-06-02T15:57:40Z"},{"device_id":3574,"make":"Google","model":"Pixel 9a","os_api":"37","observation_count":1,"user_facing_count":0,"last_seen":"2026-07-16T23:51:20Z"},{"device_id":8826,"make":"HP","model":"HP Googlebook 14","os_api":"37","observation_count":2,"user_facing_count":2,"last_seen":"2026-10-10T11:49:52Z","provenance":{"classification":"google","sha256":"210493400d1a7f34685ed6d004339f90ec3c3c9d0159818ef380025cc22ba7b8"}},{"device_id":197,"make":"samsung","model":"SM-A566B","os_api":"36","observation_count":3,"user_facing_count":0,"last_seen":"2026-09-12T23:31:22Z","provenance":{"classification":"oem","vendor":"Samsung","sha256":"b9a42dd5fc4e054889ae4127a6274cec64e75c41733d42f5991e7019f9ea5caf"}},{"device_id":220,"make":"samsung","model":"SM-F766B","os_api":"36","observation_count":1,"user_facing_count":0,"last_seen":"2025-11-11T17:28:28Z"},{"device_id":7287,"make":"samsung","model":"SM-F971B","os_api":"37","observation_count":3,"user_facing_count":0,"last_seen":"2026-11-01T22:47:22Z","provenance":{"classification":"oem","vendor":"Samsung","sha256":"b9a42dd5fc4e054889ae4127a6274cec64e75c41733d42f5991e7019f9ea5caf"}},{"device_id":266,"make":"samsung","model":"SM-G766B","os_api":"36","observation_count":1,"user_facing_count":0,"last_seen":"2026-09-05T16:15:15Z"},{"device_id":295,"make":"samsung","model":"SM-S928B","os_api":"36","observation_count":2,"user_facing_count":0,"last_seen":"2026-06-12T13:09:24Z","provenance":{"classification":"oem","vendor":"Samsung","sha256":"b9a42dd5fc4e054889ae4127a6274cec64e75c41733d42f5991e7019f9ea5caf"}},{"device_id":228,"make":"samsung","model":"SM-S931B","os_api":"36","observation_count":1,"user_facing_count":0,"last_seen":"2025-11-23T23:24:14Z"},{"device_id":271,"make":"samsung","model":"SM-S936B","os_api":"36","observation_count":1,"user_facing_count":0,"last_seen":"2025-12-18T15:12:58Z"},{"device_id":353,"make":"samsung","model":"SM-S942B","os_api":"37","observation_count":1,"user_facing_count":0,"last_seen":"2026-05-25T09:51:12Z","provenance":{"classification":"oem","vendor":"Samsung","sha256":"b9a42dd5fc4e054889ae4127a6274cec64e75c41733d42f5991e7019f9ea5caf"}},{"device_id":6978,"make":"samsung","model":"SM-S948U","os_api":"36","observation_count":1,"user_facing_count":0,"last_seen":"2026-09-09T03:01:22Z"},{"device_id":4978,"make":"TCL","model":"T517F","os_api":"36","observation_count":2,"user_facing_count":0,"last_seen":"2026-08-10T02:29:04Z","provenance":{"classification":"oem","vendor":"TCL","sha256":"207f65f531dd78e47297366409102571a0529018358a26f0e837a371a6c8e8fe"}},{"device_id":927,"make":"URAO","model":"X108","os_api":"36","observation_count":3,"user_facing_count":0,"last_seen":"2026-06-10T18:17:46Z","provenance":{"classification":"oem","vendor":"URAO","sha256":"5ebe23e8fc04ef991b02365bfc640d617af56e425dbc62c4ae9c00f94939ced2"}},{"device_id":3853,"make":"vivo","model":"V2550","os_api":"36","observation_count":1,"user_facing_count":0,"last_seen":"2026-07-21T15:30:55Z","provenance":{"classification":"oem","vendor":"vivo","sha256":"0774ab0e41f3816fd005ae6b60c3cecdf20730875ea071f5873e1dc28d324a46"}},{"device_id":323,"make":"Xiaomi","model":"24117RN76O","os_api":"36","observation_count":1,"user_facing_count":0,"last_seen":"2026-03-20T13:27:25Z","provenance":{"classification":"oem","vendor":"Xiaomi","sha256":"d45f076fe23a1a5b7f486e3ff41547a2023dbfe1fe73353b1e48ebdfed72cc6f"}}],"intelligence":{"insights":["Signed by Google's own signing key (the same key Google uses across devices), so it is a Google-provided preinstall that updates independently of the system image, though 7 different Google signing keys appear across the fleet. This certificate spans 4 device makes - the hallmark of a globally distributed Google key.","Its largest observed manifest declares 15 permissions: 2 runtime (user-granted), 1 signature or system-level, 6 install-time and 6 vendor or uncatalogued.","APK size ranges from 4.7 MB to 60.5 MB across the reporting device profiles, so the build differs substantially between them."],"device_profiles":22,"signer_count":7,"signer_consistent":false,"max_permission_count":15,"min_size_bytes":4976120,"max_size_bytes":63465118,"min_target_sdk":36,"max_target_sdk":10000,"oldest_version":"16","newest_version":"17","has_third_party_preinstall":false,"genuine_third_party":false,"play_eligible_count":0,"signers":[{"sha256":"210493400d1a7f34685ed6d004339f90ec3c3c9d0159818ef380025cc22ba7b8","classification":"google","observation_count":55,"makes":["ASUS","Dell","Google","HP"],"signs_framework":false,"global_make_count":4,"global_package_count":2,"global_observation_count":112},{"sha256":"b9a42dd5fc4e054889ae4127a6274cec64e75c41733d42f5991e7019f9ea5caf","classification":"oem","vendor":"Samsung","observation_count":12,"makes":["samsung"],"signs_framework":false,"global_make_count":1,"global_package_count":117,"global_observation_count":2137},{"sha256":"0774ab0e41f3816fd005ae6b60c3cecdf20730875ea071f5873e1dc28d324a46","classification":"oem","vendor":"vivo","observation_count":1,"makes":["vivo"],"signs_framework":false,"global_make_count":1,"global_package_count":44,"global_observation_count":44},{"sha256":"79a88bc7e730b392b55eedcd9ad723b4a6878156f9fb30ed7732d2e70bf207ac","classification":"google","observation_count":1,"makes":["Google"],"signs_framework":false,"global_make_count":1,"global_package_count":125,"global_observation_count":125},{"sha256":"d45f076fe23a1a5b7f486e3ff41547a2023dbfe1fe73353b1e48ebdfed72cc6f","classification":"oem","vendor":"Xiaomi","observation_count":1,"makes":["Xiaomi"],"signs_framework":false,"global_make_count":1,"global_package_count":68,"global_observation_count":196},{"sha256":"5ebe23e8fc04ef991b02365bfc640d617af56e425dbc62c4ae9c00f94939ced2","classification":"oem","vendor":"URAO","observation_count":1,"makes":["URAO"],"signs_framework":false,"global_make_count":1,"global_package_count":69,"global_observation_count":69},{"sha256":"207f65f531dd78e47297366409102571a0529018358a26f0e837a371a6c8e8fe","classification":"oem","vendor":"TCL","observation_count":1,"makes":["TCL"],"signs_framework":false,"global_make_count":1,"global_package_count":54,"global_observation_count":54}],"permissions":[{"permission":"android.permission.ACCESS_LOCAL_NETWORK","official":false},{"permission":"android.permission.ACCESS_NETWORK_STATE","description":"Allows the app to view information about network connections such as which networks exist and are connected.","official":true},{"permission":"android.permission.FOREGROUND_SERVICE","description":"Allows the app to make use of foreground services.","official":true},{"permission":"android.permission.FOREGROUND_SERVICE_SPECIAL_USE","description":"Allows the app to make use of foreground services with the type \"specialUse\"","official":true},{"permission":"android.permission.INTERNET","description":"Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.","official":true},{"permission":"android.permission.MANAGE_EXTERNAL_STORAGE","description":"Signature-level system permission, for platform-signed apps.","official":false,"doc":{"title":"Manage all files access","url":"https://developer.android.com/training/data-storage/manage-all-files"}},{"permission":"android.permission.MANAGE_VIRTUAL_MACHINE","official":false},{"permission":"android.permission.MANAGE_VIRTUAL_MACHINE_USB","official":false},{"permission":"android.permission.POST_NOTIFICATIONS","description":"Allows the app to show notifications","official":true},{"permission":"android.permission.RECEIVE_BOOT_COMPLETED","description":"Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.","official":true},{"permission":"android.permission.RECORD_AUDIO","description":"This app can record audio using the microphone while the app is in use.","official":true},{"permission":"android.permission.USE_CUSTOM_VIRTUAL_MACHINE","official":false},{"permission":"android.permission.USE_LOOPBACK_INTERFACE","official":false},{"permission":"android.permission.WAKE_LOCK","description":"Allows the app to prevent the phone from going to sleep.","official":true},{"permission":"com.android.virtualization.terminal.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION","official":false}]},"previews":{"labels":{"kind":"preview","limit":60,"total":20,"truncated":false,"collection_url":"/api/packages/com.android.virtualization.terminal/labels"}},"collections":{"labels":"/api/packages/com.android.virtualization.terminal/labels","seen_on":"/api/packages/com.android.virtualization.terminal/seen_on"}}
