Last updated 23 October 2026
KeySnap has no servers, no accounts, no analytics and no crash reporting. KeySnap does not send the developer your shortcuts, key presses or usage history, unless you send a problem recording yourself, as described under “Problem recordings (optional)” below. Google Play Billing receives the purchase data described under “Purchases” below. Network requests, RSS feeds, messages and sharing that you configure or initiate may also send data to the destinations or apps you choose, as described below. If you share a shortcut, the app hands its text to the app you pick in Android’s share sheet and sends it nowhere itself. Names of contacts and chats, phone numbers, RSS feed addresses and calendar names are left out of that text.
If something does not work on your phone, you can start a problem recording in Settings → About. It is off unless you start it, and it stops by itself after 10 minutes or 500 lines. While it runs, the app keeps in memory only: your phone’s maker, model, Android version and system build number, the app version, whether the accessibility service and Advanced Mode are on, whether your shortcuts are paused, how many shortcuts you have, and for each key event its key code, timing and the technical details Android attaches to it, which input path saw it, whether it was passed on or blocked, whether a shortcut matched and with which press type, and which type of action ran and whether it worked. Letter, number, symbol, space and other typing keys are recorded only as “a typing key”, never which one, so text typed on a hardware keyboard while recording cannot be read back. Shortcuts appear only as a number derived from their internal id. It never records what an action contains, such as a command, URL, setting or typed text, nor shortcut names, contact or chat names, notification content, IP addresses or pairing codes. You can read the whole recording on screen before anything leaves the phone. Sending it opens your own e-mail app addressed to support@ardasenn.com; nothing is sent unless you press send there. The recording is deleted from the phone when you send or discard it, and is never written to storage. A recording you e-mail is used only to fix the problem you reported, and you can ask for it to be deleted by writing to the same address.
Your shortcuts, their triggers, which shortcut each home-screen widget and Quick Settings tile runs, and any names you give to unlabelled hardware keys. Your timing, haptic and appearance preferences. A history of each shortcut’s last 20 runs: when it ran, which key, automation, widget or tile started it, and whether each action worked, but never what an action contains, such as a URL, a command or typed text. An ADB key pair the app generates to authorise this one device for wireless debugging. When Advanced Mode is on, the bridge program and the local token the app uses to talk to it. For each RSS feed an automation follows, filed under the feed’s address: one identifier for each item the feed held at the last check (the item’s own id, or its link or title when it has none), so a new item can be told apart, and the time of that check; these are left out of Android’s backup. All of this stays in the app’s private storage on this device.
The accessibility service detects physical hardware key presses to run the shortcuts you configure. It also performs the tap, swipe and pinch gestures you configure in your shortcuts, including when Advanced Mode is off. These gestures do not require reading the screen content of the app where they run. It is restricted to reading screen content from the system Settings app only, and it uses that solely while you are setting up Advanced Mode: after you tap Open settings, it opens Wireless Debugging from Developer options if your phone cannot open it directly, taps “Pair device with pairing code” once and reads the six-digit pairing code from the dialog. It cannot read any other app’s screen, it does not receive the text you type, and the pairing code is never stored or transmitted.
Advanced Mode pairs with your device’s own Wireless Debugging over the local network and starts a small helper program that runs with shell privileges. That program reads hardware keys from the kernel and runs the actions in your shortcuts. It reads its configuration from a file the app writes and keeps no record of what you press. When a “Send a message” action has “Send automatically” on, the program also reads the screen layout of the messaging app KeySnap just opened, only while that app is in front and for a few seconds, to find its Send button and to check that the chat is with the person you chose and that the message field holds exactly your text, before it taps Send and once after. That layout is not stored, except for a moment in a private temporary file on some Android versions, deleted right away, and it is never logged or sent. If Android reports the accessibility service as disconnected while it is still allowed, tapping Reconnect has the program turn KeySnap’s own entry in Android’s list of enabled accessibility services off and on again; other services stay as they are, and an entry that is off when you tap is never turned on. Turning Advanced Mode off, or rebooting, stops it; turning it off also deletes it from the device.
Start after restart is off by default. When you enable it, KeySnap listens for the phone’s restart and waits for the first unlock and a Wi-Fi connection before starting Advanced Mode again with your existing pairing. Android may ask you to allow Wireless Debugging on that network. Some phone makers also require an auto-launch setting. Advanced Mode grants KeySnap WRITE_SECURE_SETTINGS only for this option; it is used only to turn Wireless Debugging on and restore it when you turn the option or Advanced Mode off. The permission is revoked on disable. If the bridge is unavailable, KeySnap asks you to reconnect it to finish removing the permission. Wireless Debugging stays on while Advanced Mode runs. If KeySnap enabled it, disabling this option also stops Advanced Mode before restoring Wireless Debugging. KeySnap does not enable USB debugging or change Android’s paired-key expiry setting. While this option and Advanced Mode are on, a daily job briefly reconnects to this device’s own Wireless Debugging using the existing pairing. This does not guarantee that Android extends its expiry; an expired or removed pairing needs setup again. The option, whether KeySnap enabled Wireless Debugging, and the last pairing connection time are stored locally and excluded from backup. RECEIVE_BOOT_COMPLETED is used only to schedule this optional restart work. No restart or pairing data is sent to a server.
The app makes three kinds of network connection. The first is to your own device over the local network, to pair with Wireless Debugging and start Advanced Mode; it never leaves your network. The second is any HTTP request, URL or RSS feed that you put into a shortcut yourself, sent to the address you entered, exactly as you wrote it; the app never adds, rewrites or redirects those. An RSS feed is fetched with a plain GET request, at most every 15 minutes, only while an automation that follows it is switched on, your shortcuts are not paused and the phone is online. The request carries nothing from your shortcuts, only Android’s standard headers, whose user-agent names the phone’s model and Android version. The feed’s server may redirect the request to another https address; it is never followed to an http one. The third is to Google Play, to process the Pro purchase and check whether you have bought Pro. The app makes no other requests of its own.
Internet, network state, Wi-Fi state and multicast: to find and connect to your device’s own wireless debugging service on the local network. Notifications: to show the pairing code prompt and the setup notification, to tell you when a shortcut’s action could not run and why, and to show the notifications you put into your own shortcuts. Vibrate: for the confirmation buzz when a shortcut fires. Set wallpaper: for the “Set wallpaper” action; the image comes from Android’s photo picker, so the app can read only the picture you choose, and only on this device. Display over other apps: when you tap “Pick on screen” to choose tap coordinates, or enable the optional Key capsule to show visual feedback for physical key shortcuts. The capsule displays action labels and results, never shortcut contents, and stays hidden on the lock screen. Manual X/Y fields and in-app capsule previews work without this permission. Bluetooth: to list your paired devices and notice when one connects, for the Bluetooth device conditions. Location: Android only reveals the name of the Wi-Fi network you are on to apps holding the location permission, so the “connected to Wi-Fi network” condition asks for it; the app never reads your position, and the permission is requested only when you add that condition. Usage access: to know which app is in the foreground, for the “app in foreground” condition. Calendar: read-only, requested only when you add a “Calendar event in progress” condition; the app reads each event’s title, calendar name, start and end time, and whether it is all-day or cancelled, on this device to compare them with that condition and to know when to check again, and never stores, logs or sends them. Alarms & reminders: optional, used to wake the app at the start or end of a matching calendar event and at the times, intervals or time-window boundaries you configure for automations. When you enable exact timing, the app may schedule an Android alarm clock so the automation can run while the screen is off; Android may show an alarm icon. Without this permission, time-based automations use inexact alarms and may run late. Nothing is read or sent through this permission. Do Not Disturb access: to switch the ringer to Silent. Modify system settings: to change brightness and screen rotation without Advanced Mode. Notification access: used by a “Notification received” condition or a “Reply to notification” action. If already granted, this access also lets the optional Key capsule read the current media session’s playing/paused state, on this device, without reading or retaining track titles or other media metadata. Android then tells the app about each new notification; for one from an app none of your conditions names, the app looks only at which app posted it, and its content is not read. A notification from the app you chose is compared with your condition on this device, and the app keeps in memory only when it matched and which notification it was, so a reply can answer that chat. Notification content is never stored, logged or sent. To reply, the app looks at the titles of that app’s notifications that are showing to find the chat you named, or the notification that started the run, then hands your text to that notification’s own Reply button, and the messaging app sends it as if you had replied from the notification. Each of these is a switch you turn on yourself in Android’s settings, and the app never asks for one until you use the feature that needs it. The camera permission is deliberately not requested — the torch is controlled through an API that needs no permission. Nor is the contacts permission: when you pick a contact for a “Send a message” action, Android hands the app only that contact’s name and number, which are kept in that shortcut, on this device and in Android’s backup of your shortcuts (see Backup), and are left out when you share it.
Your shortcuts and preferences are included in Android’s backup so they return if you reinstall or move to a new phone. The ADB key pair and the bridge token are excluded from both cloud backup and device-to-device transfer, because they authorise one specific device and must never leave it.
Settings > About > Erase all data removes every shortcut, preference, key and bridge file, and stops Advanced Mode first so nothing is left running. Uninstalling the app removes its storage as well; if Advanced Mode is running when you uninstall, turn it off first so the bridge can clean itself up.
Pro is a one-time purchase handled entirely by Google Play Billing. Google Play processes the purchase and supplies its purchase state to the app; the app never sees your payment details. Google Play Billing never receives your shortcuts, key presses or usage history from KeySnap. Google’s handling of purchase data is covered by Google’s privacy policy at policies.google.com/privacy. The app is not directed at children.
If this policy changes, the updated version ships with the app update and the date above changes with it.