Capabilities

Capabilities are the device features your app is allowed to use. Studio's capabilities form writes the same blocks you would otherwise hand-write in waid.config.json, so Capabilities is the reference for what each one grants.

Everything defaults to off. You add a group, then turn on the specific toggles inside it.

Groups#

GroupWhat it coversPlatforms
Host functionsNative APIs exposed as window.host.*: files, shell, vault, auth, actions, intents, push, events, MCP, consentDesktop, Android
MediaAudio and video playback, camera and microphone captureDesktop, Android, iOS
PhotosRead the device photo libraryAndroid
StorageFile access beyond the app's own directoriesAndroid
ContactsRead and write the address bookAndroid
TelephonyPlace calls, read call state, act as the default dialerAndroid
MessagingSend, read and receive SMS, act as the default SMS appAndroid
LauncherAct as the home screen, list and manage installed appsAndroid
AlarmsSchedule work that wakes the deviceAndroid

Each toggle names the OS permission it maps to, so you can see what you are actually asking the user for.

Two toggles deserve deliberate thought. All files access maps to Android MANAGE_EXTERNAL_STORAGE, which Play Store review scrutinises. Place calls maps to CALL_PHONE, which dials without showing the dialer. Neither is wrong, but both need a reason you are prepared to defend.

Auto-detection#

Studio can read your project's source and suggest the capabilities it can prove you need. Each suggestion carries a reason and the path:line where it was seen, so you are reviewing evidence rather than accepting a guess.

Detection is deliberately conservative, and it is worth understanding why:

  • A rule exists only where the source contains an unambiguous call into the capability. A false positive requests a permission the app never uses, which prompts the user for nothing and is exactly what store review penalises.
  • Whole groups are deliberately absent because no reliable signal exists in web source: photos, storage, contacts, telephony, messaging, launcher and alarms are never auto-suggested. A tel: link, for instance, opens the dialer through an intent and needs no calling permission at all, so inferring telephony from one would be wrong rather than cautious.

So detection narrows the work; it does not finish it. Anything in that list you still turn on yourself.

If you disagree with a suggestion, dismissing it stops it being offered again. Studio takes the disagreement as the answer rather than re-suggesting on every scan.