Microsoft Teams App Permissions for AI Incident Assistant
AI Incident Assistant integrates with Microsoft Teams using a dedicated app registration in your Azure AD / Entra ID tenant.
To deliver incident management features such as conversation routing, AI-powered incident reports, bridge meetings, and in-chat collaboration, the app uses a defined set of Microsoft Graph application permissions. This page documents each permission, the Graph API endpoints it gates, the specific scenarios where AI Incident Assistant uses it, and why the permission is required.
All permissions listed here are application-level permissions, which means they run without a signed-in user. Your Azure AD / Entra ID administrator grants them through admin consent, and they apply only to the AI Incident Assistant app registration.
AI Incident Assistant also uses Resource-Specific Consent (RSC) permissions, scoped to individual teams and chats.
Application permissions overview
The following table summarizes every application permission AI Incident Assistant requests and the purpose of each one.
Permission | Purpose |
|---|---|
List and resolve channel names and descriptions for routing and incident workflows. | |
Read chat metadata (names, type, members) in chats where AI Incident Assistant is installed. | |
Read chat messages in chats where AI Incident Assistant is installed. | |
Send and update messages in chats where AI Incident Assistant is installed. | |
Read tenant organization metadata for installation and onboarding. | |
Download hosted image and file content embedded in Teams messages. | |
Create incident bridge meetings and channel-linked collaboration meetings. | |
Retrieve user profile photos for incident report generation. | |
List teams for destination pickers, routing, and incident workflows. | |
Read team membership for onboarding and installation tracking. | |
Check whether AI Incident Assistant is installed in a team before offering it as a destination. | |
Detect whether a user has AI Incident Assistant installed in personal scope, and resolve their DM chat. | |
Install AI Incident Assistant into meeting chats and grant the required RSC permissions. | |
Resolve user identity, display names, email, and profile data. |
Channel.Read.Basic
Microsoft description: Read all channel names and channel descriptions without a signed-in user.
Microsoft documentation:
Graph API endpoints used for Channel.Read.Basic
Method | Endpoint | Code location |
|---|---|---|
|
|
|
|
|
|
|
|
|
How AI Incident Assistant uses this permission:
Conversation destination picker. When you open the Major Incident Management (MIM) creation dialog or any workflow that targets a Teams channel, AI Incident Assistant lists all channels for each of your teams in a searchable dropdown. The dropdown lets you select where to post an incident update, summary, or notification. The call is
GET /teams/{teamId}/channelsfor each relevant team, often batched for performance.Incident channel resolution. When an incident is created in a specific channel, AI Incident Assistant calls
GET /teams/{teamId}/channels/{channelId}to resolve the channel's display name and description. This metadata is used in incident cards, banners, and reports.Channel last-activity checks. AI Incident Assistant uses
POST /$batchwithGET /teams/{teamId}/channels/{channelId}/messages?$top=1to determine the most recent activity timestamp per channel. This sorts channels by activity in the destination picker, so you see the most relevant channels first.Installation-time channel sync. When AI Incident Assistant is added to a team, channel metadata is synchronized so that later features (routing, search, incident creation) can reference accurate channel names without additional API calls.
What this permission does not allow
This permission reads only channel names, descriptions, and basic metadata. It does not grant access to channel messages, files, or member lists.
Why this permission is needed
AI Incident Assistant must resolve channel names and structure so that you can select the correct destination for incident workflows, broadcast messages, and operational summaries. Without this permission, every channel-targeting feature in AI Incident Assistant would present blank or broken destination lists.
Installed Chat Permissions (Chat.ReadBasic.WhereInstalled, Chat.Read.WhereInstalled, and Chat.ReadWrite.WhereInstalled)
This group of three permissions controls what AI Incident Assistant can do in chats where it has been installed. The permissions are scoped to the WhereInstalled variant, meaning the app cannot access arbitrary chats across the tenant.
Permissions:
Chat.ReadBasic.WhereInstalledChat.Read.WhereInstalledChat.ReadWrite.WhereInstalled
Microsoft descriptions:
Chat.ReadBasic.WhereInstalled: Read names and members of one-to-one and group chats where the associated Teams app is installed, without a signed-in user.
Chat.Read.WhereInstalled: Read one-to-one and group chat messages for chats where the associated Teams app is installed, without a signed-in user.
Chat.ReadWrite.WhereInstalled: Read and write one-to-one and group chat messages for chats where the associated Teams app is installed, without a signed-in user.
Microsoft documentation:
Graph API endpoints used
Method | Endpoint | Code location |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
How AI Incident Assistant uses these permissions
Resolving your personal DM chat with AI Incident Assistant. When AI Incident Assistant needs to send you a proactive message, for example a workflow result or notification, it calls
GET /users/{userId}/chats?$filter=chatType eq 'oneOnOne'to find the 1:1 chat between you and the AI Incident Assistant bot. This is required because the Bot Framework does not always surface the chat ID.Conversation destination picker (group chats). When you are selecting where to route an incident update or notification, AI Incident Assistant lists your group chats through
GET /users/{userId}/chats?$filter=chatType eq 'group'. Group chat names and members are resolved so the picker shows recognizable destinations.Reading chat history for incident reports. When you request an incident report from within a chat, AI Incident Assistant calls
GET /chats/{chatId}/messageswith pagination to read the conversation history for the configured time window. Messages are normalized and fed to the AI to produce a structured incident report. This is the same flow that powers incident reports in channels, adapted for chat-based incidents.Reading chat history for AI context (conversation lookback). During major incident management (MIM), AI Incident Assistant calls
getFilteredChatMessagesto backfill recent conversation context from a chat. This gives the AI agent awareness of what has already been discussed, preventing redundant questions and enabling more targeted incident triage.Image and file detection in group chats. When a user shares an image in a group chat, there's a known Teams platform limitation where the Bot Framework activity sometimes does not include the attachment metadata for drag-and-dropped files in group chats. AI Incident Assistant calls
GET /chats/{chatId}/messages/{messageId}through the Graph API to check whether the message actually contains image attachments. If it does, AI Incident Assistant prompts the user to copy-paste instead.Chat member resolution. AI Incident Assistant calls
GET /chats/{chatId}/members(individually or batched) to resolve the participants of group chats. This is used in the conversation picker to display member names for unnamed group chats, and to enrich incident report participant lists.Chat access validation. Before offering a chat as a routing destination, AI Incident Assistant uses
POST /$batchwithGET /chats/{chatId}/messages?$top=1to validate that the app has read access to the chat. Chats where access fails are excluded from destination lists.Channel summary and multi-context generation. When generating summaries or multi-context AI outputs that span chat conversations, AI Incident Assistant reads the full chat message history through
getAllChatMessagesand normalizes it alongside channel data for unified analysis.
Why all three tiers are needed
Each permission tier unlocks a distinct capability:
Chat.ReadBasic.WhereInstalledenumerates and displays chat metadata (names, type, member count) in destination pickers, and resolves the DM chat ID.Chat.Read.WhereInstalledreads actual message content for incident reports, AI context lookback, channel summaries, and image attachment detection.Chat.ReadWrite.WhereInstalledallows AI Incident Assistant to proactively send and update messages in chats where it is installed. For example: posting incident status updates, updating progress cards, and delivering workflow results into meeting chats.
Scope limitation
All three permissions are scoped to WhereInstalled. AI Incident Assistant can only access chats where the Teams app is explicitly installed. It cannot read or write to arbitrary chats across the tenant.
Why these permissions are needed
AI Incident Assistant's Teams' value depends on conversational awareness. Incident reports, AI-driven triage, channel summaries, and proactive notifications all require reading chat history and metadata from chats where AI Incident Assistant is actively installed. The WhereInstalled scope ensures this access is limited to only those conversations where your team has chosen to deploy the app.
Directory.Read.All
Microsoft description: Read data in the organization's directory without a signed-in user.
Microsoft documentation:
Graph API endpoints used
Method | Endpoint | Code location |
|---|---|---|
|
|
|
How AI Incident Assistant uses this permission
Tenant onboarding during app installation. When a Teams admin or user installs AI Incident Assistant personally, into a group chat, or into a team; the bot's
onInstallationUpdateAddhandler callsGET /organization/{tenantId}to retrieve the tenant's display name and verified domains. This information is used to associate the installation with the correct Microsoft 365 tenant in the AI Incident Assistant backend, display the tenant name in the onboarding welcome card, and validate tenant identity for multi-tenant deployments.Bot-added-to-team handler. When AI Incident Assistant is added to a team (via the
onMembersAddedevent, where the bot is in the members list), the samegetTenantDetailscall is run to ensure the team's tenant is recognized and properly configured.
What this permission does not allow
Although Directory.Read.All is broad in Microsoft's documentation, AI Incident Assistant exclusively calls GET /organization/{tenantId}. A single endpoint returns the organization object (display name, verified domains, tenant ID). AI Incident Assistant does not query groups, administrative units, directory roles, devices, or any other directory objects.
Why this permission is needed
AI Incident Assistant must confirm tenant identity at installation to correctly scope all subsequent operations, including data isolation, configuration, and user provisioning. The GET /organization/{tenantId} call is the standard Microsoft-recommended approach for application-context tenant identification. Without this, AI Incident Assistant cannot reliably associate installations with the correct customer Teams tenant.
Files.Read.All
Microsoft description: Read all files in all site collections without a signed-in user.
Microsoft documentation:
Graph API endpoints used
Method | Endpoint | Code location |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
How AI Incident Assistant uses this permission
Incident report image extraction. When you generate an incident report from a channel or chat, AI Incident Assistant scans the conversation messages for inline images (detected through <img> tags in message HTML). For each message containing images, AI Incident Assistant calls the hostedContents endpoint to download the binary image data. These images are base64-encoded and included in the generated incident report PDF or document, preserving visual context like screenshots, diagrams, and monitoring dashboards that participants shared during the incident.
Channel indexing and backfill. When AI Incident Assistant indexes historical channel content for search and AI context, hosted content (inline images and files embedded in messages) is retrieved through the same endpoints to build a complete representation of the conversation.
What this permission does not allow
While the Files.Read.All permission technically grants access to SharePoint and OneDrive files across the tenant, AI Incident Assistant does not access SharePoint sites, OneDrive folders, or file libraries.
The only file-related Graph endpoints AI Incident Assistant calls are the hostedContents endpoints on chat and channel messages. These retrieve inline content such as images and small files) that users paste or embed directly into Teams messages.
Microsoft requires Files.Read.All as a prerequisite for accessing hosted content on messages in certain scenarios.
Why this permission is needed
Incident reports with visual context (screenshots, graphs, and architecture diagrams) are significantly more useful than text-only reports. The hosted content endpoints allow AI Incident Assistant to include images incident responders shared during the conversation, producing comprehensive reports that capture the full picture of what happened.
AI Incident Assistant does not browse, index, or access any files in SharePoint or OneDrive.
OnlineMeetings.ReadWrite.All
Microsoft description: Read and create online meetings as an application in the organization.
Microsoft documentation:
Graph API endpoints used
Method | Endpoint | Code location |
|---|---|---|
|
|
|
How AI Incident Assistant uses this permission
Incident bridge call creation. When you trigger an incident workflow and select Microsoft Teams as the conferencing tool for the bridge call, AI Incident Assistant calls
POST /users/{systemUserId}/onlineMeetingsto create an online meeting. The meeting is created on behalf of a configured system user (thedefaultUserIdfrom your Teams integration settings). The response includes ajoinWebUrlembedded in the incident banner card, allowing all responders to join the bridge call with a single click. Meeting participants are included in the meeting creation payload when available.Channel-linked collaboration meetings (MIM). During major incident management, the AI Incident Assistant creates a Teams meeting linked to the incident channel thread via the
chatInfo.threadIdproperty. This associates the meeting with the specific channel conversation, so the meeting chat and channel thread are connected. A transcription bot (Recall) may be added to the meeting to capture a live transcript for later incident analysis.Auto-created incident channel meetings. When an incident channel is provisioned and your organization's configuration includes automatic meeting creation, AI Incident Assistant creates a channel-linked meeting immediately after channel creation. This ensures a collaboration space is ready before responders even join.
Additional requirement - exchange online application access policy
Creating online meetings in application-only context (no delegated user) requires that your Exchange Online administrator has configured an application access policy that grants the AI Incident Assistant app permission to create meetings on behalf of the designated system user. This is an Exchange-level policy, separate from the Graph permission itself.
Why this permission is needed
One of AI Incident Assistant's key incident management capabilities is automating the creation of bridge calls so that responders can immediately collaborate. Without this permission, incident commanders would need to manually create a Teams meeting, copy the join link, and share it, adding critical minutes during an incident. Automated meeting creation reduces mean-time-to-collaborate during incidents.
ProfilePhoto.Read.All
Microsoft description: Read all user and group profile photos without a signed-in user.
Microsoft documentation:
Graph API endpoints used
Method | Endpoint | Code location |
|---|---|---|
|
|
|
How AI Incident Assistant uses this permission
Incident report participant avatars. When generating an incident report, AI Incident Assistant resolves each unique message sender from the conversation history. For each human participant, AI Incident Assistant calls
GET /users/{userId}/photo/$valueto download their profile photo as binary data. The photo is base64-encoded and included in the incident report alongside the participant's name, job title, email, and phone number. This makes incident reports visually rich and allows report readers to quickly identify who said what during the incident.
What this permission does not allow
AI Incident Assistant only reads profile photos for users who actively participated in a Teams conversation that is the subject of an incident report. It does not bulk-download or cache profile photos for all users in the tenant.
Why this permission is needed
Profile photos make incident reports significantly easier to read and scan. During post-incident review, quickly identifying participants by face accelerates understanding of the incident timeline. This is especially valuable in organizations where team members know each other visually, but not by name.
Team.ReadBasic.All
Microsoft description: Get a list of all teams without a signed-in user.
Microsoft documentation:
Graph API endpoints used
Method | Endpoint | Code location |
|---|---|---|
|
|
|
How AI Incident Assistant uses this permission
Conversation destination picker (teams list). When you open any workflow that targets a Teams channel (incident creation, MIM, broadcast, or channel summary), AI Incident Assistant calls
GET /users/{userId}/joinedTeamsto build the list of teams you belong to. This populates the first level of the destination picker. You select a team, then select a channel within that team.Installation validation for team destinations. After retrieving the list of joined teams, AI Incident Assistant cross-references each team against its installation records using the
TeamsAppInstallationbatch endpoints to determine which teams have AI Incident Assistant installed. Teams without AI Incident Assistant installed are either filtered out or marked as unavailable, preventing you from selecting destinations where the bot cannot operate.Conversation search and caching. The conversation search handler caches team lists to reduce repeated Graph API calls. On first load or cache expiration, getUserTeams is called, and results are cached per user and tenant. Subsequent searches use the cache until it expires.
Why this permission is needed
Every channel-targeting workflow in AI Incident Assistant starts with team discovery. Without knowing which teams you belong to, AI Incident Assistant cannot present valid destinations for incident channels, summaries, broadcasts, or MIM workflows. This permission enables the fundamental navigation experience that connects you to your Teams workspace structure.
TeamMember.Read.All
Microsoft description: Read the members of all teams without a signed-in user.
Microsoft documentation:
Graph API endpoints used
Method | Endpoint | Code location |
|---|---|---|
|
|
|
How AI Incident Assistant uses this permission
Team onboarding and member tracking. When AI Incident Assistant is installed into a team (through the onInstallationUpdateAdd or onMembersAdded bot events), the app installation handler calls
GET /teams/{teamId}/membersto retrieve the current team roster. This information is used to track which users have access to AI Incident Assistant in team context, pre-provision user records for team members so that subsequent interactions are seamless, and understand the scope of the installation for analytics and configuration.Installation reconciliation. When team membership changes (members are added or removed), the AI Incident Assistant conversation install tracker uses member data to keep its internal records in sync with the actual team roster.
Why this permission is needed
AI Incident Assistant needs team membership data to correctly provision and manage access for team-based experiences. Knowing who is on a team at installation time allows AI Incident Assistant to set up user records, configure permissions, and ensure that team members have a seamless first interaction with the bot. Without this, user provisioning would be delayed until each team member individually interacts with AI Incident Assistant.
Teams App Installation Permissions (TeamsAppInstallation.Read.All, TeamsAppInstallation.ReadForUser.All, and TeamsAppInstallation.ReadWriteAndConsentSelfForChat.All)
This group of three permissions controls how AI Incident Assistant discovers existing installations, installs itself into meeting chats, and installs itself for individual users.
Permissions:
TeamsAppInstallation.Read.AllTeamsAppInstallation.ReadForUser.AllTeamsAppInstallation.ReadWriteAndConsentSelfForChat.All
Microsoft descriptions:
TeamsAppInstallation.Read.All: Read the Teams apps that are installed in any scope, without a signed-in user. Does not allow reading app-specific settings.
TeamsAppInstallation.ReadForUser.All: Read the Teams apps that are installed for any user, without a signed-in user. Does not allow reading app-specific settings.
TeamsAppInstallation.ReadWriteAndConsentSelfForChat.All: Allow a Teams app to read, install, upgrade, and uninstall itself for any chat, without a signed-in user, and manage its permission grants for accessing those specific chats' data.
Microsoft documentation:
Graph API endpoints used
Method | Endpoint | Permission | Code location |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TeamsAppInstallation.Read.All — team and chat installation validation
Team destination validation. Before presenting a team as a valid destination in the conversation picker, AI Incident Assistant batch-validates that the app is installed in each candidate team. The call
POST /$batch includes GET /teams/{teamId}/installedApps?$filter=teamsAppDefinition/authorization/clientAppId eq '{appId}'for each team. Teams where AI Incident Assistant is not installed are filtered from the destination list, preventing you from selecting teams where the bot cannot operate.Chat installation validation. Similarly, for group chat destinations, AI Incident Assistant batch-validates that the app is installed in each candidate chat through
GET /chats/{chatId}/installedApps?$filter=....This ensures that only accessible chats appear in destination pickers.Group chat discovery with app filter. When building the list of group chats where AI Incident Assistant is installed, the
getUserGroupChatsWithAppInstalledfunction first lists your group chats, then batch-checks each chat's installed apps to filter down to only those chats where AI Incident Assistant is present.
TeamsAppInstallation.ReadForUser.All — personal scope detection
Personal app installation check. During onboarding and certain workflow submissions, AI Incident Assistant calls
GET /users/{userId}/teamwork/installedApps?$expand=teamsAppto determine whether you already have AI Incident Assistant installed in personal scope. This prevents duplicate installation attempts and enables features that require personal scope, such as DM-based workflows.Personal app chat resolution. Once a personal installation is confirmed, AI Incident Assistant calls
GET /users/{userId}/teamwork/installedApps/{installationId}/chatto resolve the 1:1 chat ID associated with that installation. This chat ID is needed to deliver proactive messages (notifications and workflow results) to your personal AI Incident Assistant chat.Proactive personal installation for MIM. When you create a major incident through the task module and do not have AI Incident Assistant installed in your personal scope, the MIM submission handler calls
POST /users/{userId}/teamwork/installedAppsto proactively install AI Incident Assistant for you. This ensures you can receive personal notifications and updates about the incident you just created.
TeamsAppInstallation.ReadWriteAndConsentSelfForChat.All — meeting chat installation
Incident meeting chat bot installation. When AI Incident Assistant creates an incident bridge meeting (through
OnlineMeetings.ReadWrite.All), the resulting meeting has an associated meeting chat. AI Incident Assistant callsPOST /chats/{chatId}/installedAppsto install itself into that meeting chat, including aconsentedPermissionSetpayload that grants the bot RSC permissions in that specific chat (message read and write, chat settings read, and online meeting read). This is essential because the bot must be in the meeting chat roster to post incident updates and banner messages, RSC permissions are needed for the bot to read meeting chat messages and manage the incident workflow within the meeting context, and without this self-installation the meeting chat would be inaccessible to AI Incident Assistant.Meeting summary chat bot installation. When AI Incident Assistant needs to deliver a meeting summary to a meeting-linked chat, it calls
addAppToChatto ensure it is present in the chat before posting. A 409 Conflict response (already installed) is handled gracefully.
Error handling
If the addAppToChat call fails with "Missing role permissions on the request", AI Incident Assistant surfaces a user-facing error message directing the admin to grant TeamsAppInstallation.ReadWriteAndConsentSelfForChat.All in the Azure Portal. This is the only permission whose name is explicitly surfaced to end users in error messages.
Why this permission is needed
The read permissions ensure that AI Incident Assistant only offers destination teams and chats where it is actually installed and authorized to operate. This prevents broken workflows, failed message deliveries, and confusing user experiences.
TeamsAppInstallation.ReadWriteAndConsentSelfForChat.All is required for the incident meeting workflow. When an incident bridge is created, the bot must join the meeting chat to post status updates, track the conversation, and manage the incident lifecycle. Without self-installation capability, a human would need to manually add AI Incident Assistant to every meeting chat — an unreasonable friction during time-critical incident response.
User.Read.All
Microsoft description: Read the full set of profile properties, reports, and managers of other users in the organization without a signed-in user.
Microsoft documentation:
Graph API endpoints used
Method | Endpoint | Code location |
|---|---|---|
|
|
|
|
|
|
How AI Incident Assistant uses this permission
User provisioning on first interaction. When you install AI Incident Assistant yourself or first interact with it, the app installation handler makes a
GET request to/users/{userId}to retrieve yourdisplayName,mail,givenName,jobTitle, and other profile properties. This data is used to create your record in the AI Incident Assistant backend, linking your Azure AD identity to your account. If a user with the same email already exists (for example, created through another channel), the accounts are merged rather than duplicated.RBAC and ability resolution. The
defineAbilitymiddleware calls getUser to resolve the Azure AD identity of the current user, which is then used to determine your permissions and role-based access controls.Incident report user enrichment. During incident report generation, AI Incident Assistant resolves every unique message sender from the conversation. For each human participant,
GET /users/{userId}retrieves their display name, job title, email, and mobile phone. This data populates the participants section of the incident report.Meeting participant resolution. When creating an incident bridge meeting, AI Incident Assistant calls
getUsersMinimalto batch-resolve participant identities (ID, UPN, and display name) for inclusion in the meeting creation payload. This ensures that meeting invitations include proper attendee information.Forwarded message sender enrichment. When Teams messages contain forwarded content, the original sender's display name is sometimes missing from the forwarded message metadata. The
TeamsMessageEnrichmentmodule callsgetUsersMinimalas a fallback to resolve missing sender display names from Azure AD, ensuring that channel summaries and reports correctly attribute forwarded messages.Conversation picker — unnamed group chat display names. Group chats without a custom name are displayed as a comma-separated list of member names. AI Incident Assistant calls
getUsersMinimalto batch-resolve the display names of chat members for these unnamed chats.Task module user resolution. Various task module flows (form submissions and dialog interactions) call
getUserto resolve the identity of the submitting user for logging, attribution, and permission checks.
What AI Incident Assistant reads from user profiles
AI Incident Assistant reads the following properties: id, userPrincipalName, displayName, mail, givenName, jobTitle, and mobilePhone. It does not read sensitive properties like authentication methods, license details, or sign-in activity.
Why this permission is needed
User identity resolution is foundational to AI Incident Assistant's operation. Every interaction, from the initial installation through incident management, requires knowing who the user is, what their name and email are, and sometimes their role. The $select parameter is used where possible to limit the data retrieved to only what is needed. For example, getUsersMinimal selects only id, userPrincipalName, and displayName.
Resource-Specific Consent (RSC) Permissions
In addition to the tenant-wide application permissions described above, AI Incident Assistant declares a set of Resource-Specific Consent (RSC) permissions. RSC permissions are scoped to individual teams and chats. They only grant access within the specific team or chat where the app is installed, not tenant-wide.
These RSC permissions are included in the consentedPermissionSet payload when AI Incident Assistant installs itself into a chat through addAppToChat or for a user through addAppToUser.
RSC permission | Type | Scope | What it enables |
|---|---|---|---|
| Application | Team | Read messages in team channels where AI Incident Assistant is installed. |
| Application | Team | Read channel settings (name, description, moderation) in teams where AI Incident Assistant is installed. |
| Application | Chat | Read messages in chats where AI Incident Assistant is installed. |
| Application | Team | Create new channels in teams where AI Incident Assistant is installed, for incident channel provisioning. |
| Application | Team | Send messages to team channels where AI Incident Assistant is installed. |
| Application | Chat | Send messages in chats where AI Incident Assistant is installed. |
| Application | Chat | Read chat settings (name, members, type) in chats where AI Incident Assistant is installed. |
| Application | Team | Read team settings in teams where AI Incident Assistant is installed. |
| Application | Chat | Read basic online meeting information in chats where AI Incident Assistant is installed. |
How RSC complements tenant-wide permissions
RSC permissions provide a defense-in-depth approach. Even though tenant-wide application permissions may cover the same operations (for example, Chat.Read.WhereInstalled), RSC permissions add a per-resource consent layer that is explicitly granted at install time. This gives administrators visibility into exactly what the app can do in each specific team or chat.
Data Handling and Privacy Commitments
AI Incident Assistant applies the following commitments to every Graph API interaction:
No bulk data collection. AI Incident Assistant does not crawl, index, or store tenant-wide data. All Graph API calls are triggered by installation lifecycle events or specific user actions (for example, creating incidents, generating reports, or selecting destinations).
Minimal data retention. User profile data, chat messages, and meeting information retrieved from Graph are used transiently for the specific operation and are not stored long-term, unless they are part of a user-generated artifact such as an incident report that you explicitly requested.
Scoped access patterns. Where possible, AI Incident Assistant uses WhereInstalled permission variants and RSC to limit access to only the conversations where the app is deployed. Tenant-wide permissions are used only when the Microsoft Graph API requires them for the specific endpoint.
No administrative actions. AI Incident Assistant does not modify directory objects, manage users, change group settings, assign licenses, or perform any administrative operations. All permissions are read-only or scoped to the app's own installation and meeting creation.
Graph API Endpoints by Permission
For quick reference, the following table maps every Graph API endpoint AI Incident Assistant calls to its required permission.
Permission | Graph API endpoints |
|---|---|
|
|
|
|
|
|
| Send and update messages in installed chats (through Bot Framework and Graph). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|