Microsoft Teams App Permissions

Updated by Andy Althouse

Thread’s Microsoft Teams integrations use two connected applications to provide seamless collaboration between Teams and Thread Inbox: the Service App and the Companion App.

  • Service App → Installed in your clients’ Teams environment, this app allows end-users to chat directly with your service team, submit tickets, and collaborate within Teams. It powers the client-side communication experience between Microsoft Teams and Thread Inbox.
  • Companion App → Installed in your internal Teams environment, this app gives your technicians and service staff the ability to receive notifications, reply to messages, update tickets, and manage workflows directly from Teams. It connects your internal operations with client-side interactions.

Each permission listed below is required to ensure secure authentication, file sharing, and message delivery between Microsoft Teams and Thread. All permissions are requested through Microsoft Graph, using the least privilege necessary for functionality.


🔐 Permissions Overview

Permission

Type

Purpose

Used By

AppCatalog.Read.All

Application

Identifies if the Thread Service App is already installed in the organization’s Teams App Catalog.

Service App

AppCatalog.ReadWrite.All

Delegated

Uploads or updates Thread apps in the Teams catalog and migrates older versions by name.

Service App

Channel.Create

Application

Creates channels for dynamic or automated workflows (e.g., per-ticket or per-client flows).

Companion App

Channel.Delete.All

Application

Deletes temporary or dynamic channels automatically when a Thread is closed.

Companion App

Channel.ReadBasic.All

Application

Enables Thread to manage dynamic channels created for tickets or workflows.

Companion App

Chat.Create

Application

Creates group chats between members, contacts, or automation processes.

Service App

Chat.ReadWrite.All

Application

Sends and updates messages within Teams group chats.

Service App

ChatMember.ReadWrite.All

Application

Adds or removes Microsoft 365 users from group chats as needed.

Service App

ChatMessage.Read.All

Application

Reads chat messages to detect file attachments (required because Teams does not include this data in its onMessage event).

Service App

Domain.Read.All

Application

Reads domain information to assign a default domain to dummy users (used for iOS compatibility, as Teams mobile requires at least two chat members).

Service App

email

Delegated

Reads the user’s primary email address for identity and account linking.

Companion App, Service App

Files.Read.All

Application

Reads Microsoft 365 files to enable file sharing between Teams chats and Thread Inbox/PSA tickets.

Service App

Group.Read.All

Application

Enables Single Sign-On (SSO) between Microsoft Teams and Thread Inbox.

Companion App

offline_access

Delegated

Maintains continuous access to approved data without requiring re-authentication.

Companion App, Service App

openid

Delegated

Allows users to sign in with Microsoft 365 accounts and share basic profile information.

Companion App, Service App

Organization.Read.All

Application, Delegated

Retrieves organization and tenant details during onboarding (delegated during setup, application thereafter).

Companion App, Service App

profile

Delegated

Accesses basic profile data (name, picture, username, email).

Companion App, Service App

Sites.Read.All

Application

Downloads files from SharePoint for file sharing between Teams and Thread Inbox/PSA.

Service App

Team.ReadBasic.All

Application

Fetches Teams lists from Microsoft 365 to display in Thread Flows (future functionality).

Companion App

TeamsAppInstallation.ReadWriteAndConsentForChat

Application

Installs Thread Service Apps into Teams group chats automatically.

Service App

User.Read

Delegated

Required for SSO authentication.

Companion App, Service App

User.Read.All

Delegated

Retrieves user details and avatars for authentication and display.

Companion App, Service App

User.ReadWrite.All

Application

Creates dummy members for group chats when needed.

Service App


How did we do?