Share via

Dynamically Granting Application Permissions for Teams Store Apps

Neelu George 40 Reputation points
2026-04-29T14:31:57.6033333+00:00

I am publishing a multi-tenant app to the Teams Store. The app has core features requiring basic permissions and 'Advanced Features' that require additional Application Permissions.

I want to avoid requesting high-privilege permissions upfront. Instead, I want to programmatically grant these extra permissions via the Microsoft Graph API (using an admin’s delegated token) only when a user opts into the advanced features.

I could successfully do this with sideloaded apps, but is this workflow supported for apps published through the Teams Store? Specifically, can I grant Application Permissions that were not pre-defined in the app's manifest at the time of publication?

Appreciate any help!

Microsoft Teams | Development
Microsoft Teams | Development

Building, integrating, or customizing apps and workflows within Microsoft Teams using developer tools and APIs


2 answers

Sort by: Most helpful
  1. Hin-V 14,180 Reputation points Microsoft External Staff Moderator
    2026-04-29T17:02:34.01+00:00

    Hi @Neelu George

    Good day, and thank you for sharing your question. 

    Based on my research, looks like this workflow is not supported for apps published through the Microsoft Teams Store. 

    Application permissions in Microsoft Entra ID / Microsoft Graph do not support dynamic or truly incremental consent. Unlike delegated permissions, application permissions must be pre‑defined in the app registration (requiredResourceAccess) and cannot be added or granted programmatically at runtime, even when using an admin’s delegated token. 

    image

    References: 

    Developer’s Guide to Requesting Permissions and Consent in Microsoft Identity Platform - Microsoft … 

    Your approach works with sideloaded or tenant‑specific custom apps because you retain full control over the app registration within the tenant. However, once an app is published to the Teams Store, the permissions declared in both the Teams app manifest and the Microsoft Entra ID app registration are subject to security and compliance review and are effectively fixed at submission time. 

    As a result, you cannot grant application permissions that were not already declared when the app was submitted to the Teams Store. 

    I hope this helps. 

    If you have any additional concerns, feel free to comment below. I would be more than happy to assist. 


    Note: Please follow the steps in [our documentation] to enable e-mail notifications if you want to receive the related email notification for this thread.


  2. Q&A Assist
    2026-04-29T14:32:19.0233333+00:00
    AI generated content. This question contains an answer created with AI from Q&A Assist. Learn more

    For a Teams Store app, application permissions must be predefined and consented to; dynamically adding new application permissions at runtime for a published store app is not supported.

    Key points based on the documented models:

    1. Permissions must be declared up front
      Microsoft Graph permissions for an app are defined on the Microsoft Entra app registration (static permissions) or requested via dynamic consent at runtime. Dynamic consent is explicitly described as working with delegated permissions:
      • Dynamic consent "can be used with delegated permissions" and combined with /.default to request admin consent for all permissions already configured on the app.
      • Application permissions are not requested via the same dynamic consent flow; they require admin consent on the app registration/service principal.
    2. Store apps and least privilege
      For Teams apps intended for distribution, guidance is to design around the principle of least privilege and to request only the minimum permissions needed to function. This is specifically called out for Teams apps using Microsoft Graph:
      • Apps should request the fewest, least-privileged permissions to improve adoption and admin approval.
      • Resource-specific consent (RSC) and delegated permissions are preferred where possible; application permissions carry the highest privacy risk.
    3. Granting/revoking permissions programmatically
      Microsoft Graph supports programmatic grant/revoke of permissions (both delegated and application) by manipulating the underlying objects (for example, app role assignments for application permissions). However:
      • This mechanism is an alternative to interactive admin consent, mainly for automation/bulk management.
      • It still operates only on permissions that exist on the app registration. It does not bypass the requirement that the permission be part of the app’s configured access to the resource.
    4. Implication for a Teams Store app
      For a multi-tenant Teams Store app:
      • Application permissions that might ever be granted must be configured on the app registration before publication (and thus effectively “known” at publication time).
      • An admin can choose when to grant those application permissions (interactively or programmatically), but cannot grant application permissions that were never configured on the app registration.
      • Dynamic consent at feature opt-in time can be used only for delegated permissions, not for introducing entirely new application permissions that were not preconfigured.

    Therefore, the workflow where a published Teams Store app later gains new application permissions that were not pre-defined in the app registration/manifest is not supported. The supported pattern is:

    • Preconfigure all potential application permissions on the app registration (and reflect them appropriately in the app’s documentation/manifest expectations), and
    • Use admin consent (interactive or programmatic) to grant those permissions when a tenant admin chooses to enable the advanced features.

    New, previously undefined application permissions would require updating the app registration and republishing/redistributing the app rather than being added dynamically at runtime.


    References:

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.