Permission Serve
Ask for access only when people can understand, choose, and benefit from it.
What it is
Section titled âWhat it isâPermission Serve is the timing discipline for asking a user to grant system accessâcamera, microphone, location, notifications, contactsâso the request arrives attached to a choice the user just made, rather than to a launch screen or an app-store checklist. It has two moving parts: a plain-language explanation shown before the operating systemâs native prompt, stating what the access is for and what still works without it, and a decline path that doesnât quietly break the rest of the product as punishment. Itâs a general pattern for any system permission; when the specific access being requested is a userâs contact list, for the purpose of finding people they already know, thatâs the narrower case covered by Contact Bridge, which adds its own rules about selection and spam. Permission Serve is the timing and framing layer underneath both.
Asking for microphone access the instant someone taps ârecord a voice noteââafter theyâve already signalled intentâreads as a natural extension of the thing they just chose to do. Asking for the same permission on first launch, bundled with location and notifications in a stack of dialogs before the user has done anything, reads as the product demanding trust it hasnât earned yet, and it usually gets a reflexive âdenyâ thatâs hard to walk back later.
Why it works
Section titled âWhy it worksâA permission prompt asked in context carries information the user can actually use: they know what they just tried to do, so they can judge whether the access being requested matches it. Calibrated Trust frames trust as something that accrues through kept, legible promisesâa request that clearly explains itself and keeps the product useful on decline is a small deposit; one that arrives unexplained, or leaves half the app broken after a âno,â is registered the same way a broken promise is. User Agencyâs test for any choice is whether itâs genuinely informed and revocable, and permission timing is one of the few places that test is decided almost entirely by a single design choice: when you ask.
Ask badly and the predictable failure is a reflexive deny thatâs expensive to undoâmost people never return to system settings to re-grant something theyâve already refused, so a permission burned on a badly timed ask is often gone for the life of the install. Batch every permission at launch, or make a feature unusable rather than merely diminished without one, and you get the same result at scale: a wall of denials before the product has said anything worth trusting, plus the harder cost of teaching the user that every future prompt from you is probably self-serving rather than helpful.
When to use it
Section titled âWhen to use itâ- Immediately after the user initiates a feature that requires the permission
- After demonstrating value when the permission is optional or enhances an experience
- When an existing permission has changed scope and a fresh explanation is necessary
- When a declined permission can be revisited through a user-initiated settings path
- Explain the specific feature benefit and the relevant data use before the native prompt
- Ask for the narrowest permission and scope that accomplishes the userâs goal
- Keep the feature useful where possible if permission is declined
- Provide an honest route to enable, revoke, or learn more about access later
Donât
Section titled âDonâtâ- Request several permissions on launch or stack prompts without a user action
- Gate unrelated features behind optional access
- Use guilt, countdowns, misleading buttons, or degraded wording to force acceptance
- Claim that access is required when it is only convenient for the business
Founder Tip
Section titled âFounder TipâEarn permission through relevance and clarity; a deliberate ânot nowâ is better than consent people regret.
Make It Yours
Section titled âMake It Yoursâ- What user-initiated action makes this permission relevant right now?
- Can you explain the exact benefit, data scope, and alternative in one clear screen?
- What remains available if the person declines?
- Is this the narrowest access your feature can use?
- How can users revisit, revoke, or understand the choice later without friction?
Related concepts
Section titled âRelated conceptsâFurther reading
Section titled âFurther readingâ- Apple Human Interface Guidelines: Requesting Permission â platform guidance for timely, purpose-led requests.
- Android Developers: Request App Permissions â request permissions in context and degrade gracefully.
- UK ICO: Consent â conditions for valid, informed, freely given consent.
- FTC: Bringing Dark Patterns to Light â why manipulative choice architecture harms users.
Agent skill
Section titled âAgent skillâ- Primary command:
/productfeeling trustâ design permission requests that follow user intent with clear benefit and decline paths - Related commands:
/productfeeling anti-patterns,/productfeeling states,/productfeeling friction - When the agent should load this TTP: âpermission promptâ, ânotification opt-inâ, âcamera accessâ, âpre-prompt screenâ, âdeclined permissionâ
- Companion handoff: Impeccable â pre-prompt UI and graceful degradation; DocSlime â privacy and consent requirements in docs
- Feeling north star this TTP serves: informed consent through relevance and clarity
- Anti-goals: launch permission stacking, guilt or degraded wording, gating unrelated features, false necessity claims
- Reference path:
skill/reference/trust.md