Skip to main content

Chat Assistant for Microsoft Teams: permissions and security

Every permission the Cinode Teams app requests, what each one is used for, which admin roles are needed, where data travels, and how to revoke access.

Written by Magnus Burton

This article is for IT and security reviewers who must approve the Cinode Chat Assistant for Microsoft Teams before it is enabled. It lists every permission the Cinode Teams app requests, what each permission is used for, which administrator roles are needed, where data travels, what Cinode stores, and how to revoke access.

For what the assistant does for end users, read Meet the Chat Assistant.

You can verify this yourself. Download the app package from the bottom of Meet the Chat Assistant, open the .zip, and read manifest.json. That file contains the complete set of Microsoft Teams permissions the app can request. The one Microsoft Entra permission sits outside the manifest and is described separately below.


What the Cinode Teams app is

The Cinode Teams app is a bot application published by Cinode AB. Cinode owns and operates one multi-tenant bot registration that serves all customers. You do not create your own bot registration or app secret.

The app package you upload contains the manifest. It contains no executable code. All processing happens in Cinode's own service.

These are the identifying values in the current app package. Reviewers usually want both IDs, because the Teams app ID and the bot application ID are different objects.

Field

Value

Publisher

Cinode AB

Teams app ID

c8696ed2-bc9d-43ee-8d65-f341ee736f07

Bot application ID

7d20387e-e345-4321-9593-3771c2a56583

Installation scopes

Personal (1:1), group chat, and team or channel

Allowed domains

*.cinode.com, hooks.flows.cinode.com, *.botframework.com

The app declares no tabs, no message extensions, no connectors, and no meeting extensions. In the manifest it explicitly sets calling, video, and file support to false, so it cannot start calls, join meetings, or upload and download files. The only device permission it requests is notifications.


Which administrator roles are required

Enabling the Chat Assistant needs several administrator roles, each for one step. No role is granted to Cinode; these are roles your own staff use during setup.

Step

Role needed

Required?

Install and configure the integration in Cinode

Cinode Admin with Flows access

Yes

Upload the app package to your tenant

Teams Administrator

Yes

Sign in to Microsoft to identify your tenant

Microsoft 365 administrator

Yes

Pre-install the app for users with a setup policy

Teams Administrator

Only for proactive messages, such as reminders and alerts

Grant admin consent for User.Read.All

Privileged Role Administrator

Optional. See the section on Entra permissions


Which Teams permissions the app requests

The Cinode Teams app requests resource-specific consent (RSC) permissions. RSC permissions are scoped to the single team, channel, or chat where the app is installed. They do not apply tenant-wide. If the app is installed in one team, it has no access to any other team.

This table lists every RSC permission in the manifest and what the assistant uses it for.

Permission

What it allows

Why Cinode needs it

ChatMessage.Send.Chat

Send messages in a 1:1 or group chat the app is installed in

To reply to a direct message, and to deliver reminders and alerts privately

ChannelMessage.Send.Group

Post messages in a channel the app is installed in

To answer in the channel where it was mentioned, and to post scheduled digests

ChannelMessage.Read.Group

Read messages in a channel the app is installed in

To read the conversation thread it is taking part in, so follow-up questions work without repeating context. Read the note below this table

ChatMessage.Read.Chat

Read messages in a group chat the app is installed in

The same, for group chats. Read the note below this table

Member.Read.Group

Read the membership list of the team

These three roster permissions serve one purpose: to check whether the person who created a scheduled alert is still a member of the conversation, and to stop that alert when they are not. Teams uses different permission names for a team roster and a channel roster

TeamMember.Read.Group

Read the team roster

As above

ChannelMember.Read.Group

Read the channel roster

As above

ChannelSettings.Read.Group

Read a channel's name and settings

To read the channel name, so the assistant knows which channel a question was asked in and can word its answer accordingly

TeamsActivity.Send.User

Send a notification to a user's Teams activity feed

Declared for future activity-feed notifications. The assistant does not currently use it; reminders are delivered as direct messages instead

Important, about the two read permissions. A Teams bot normally receives only the messages that @-mention it. ChannelMessage.Read.Group and ChatMessage.Read.Chat also let the app receive every message in a channel or group chat where it is installed. This is a side effect of the permission model in Microsoft Teams, not a separate permission, and it applies only to the specific channels and chats where the app is installed.

What Cinode does with those messages is the part that matters for your review, so it is stated precisely here. The assistant processes a message only in a conversation it has already been brought into: a direct message, or a thread where somebody @-mentioned it. Once it has been mentioned in a thread, it follows that thread and may answer later messages in it without a new mention, which is what makes follow-up questions work. Messages in channels and threads where nobody has mentioned it are not processed and are not sent to the language model.

If your security policy does not allow the app to receive channel messages at all, install it for personal (1:1) use only and do not add it to any team or channel. The assistant then works in direct messages, and these two permissions never apply to your shared channels.


Which Microsoft Entra permissions the app requests

Separately from the RSC permissions above, setup includes a Microsoft sign-in in the Cinode configuration wizard. This sign-in identifies your Microsoft 365 tenant, so that Cinode routes messages to the correct organisation.

Beyond that sign-in, one permission is optional:

  • User.Read.All (application permission, requires admin consent). This lets Cinode look up a user by email address and start a direct message with them. Cinode uses it only to reach a person who has not messaged the assistant first, for example to deliver a task reminder.

  • If you skip it, the assistant still answers questions and still replies in any conversation. Proactive direct messages to a person who has never opened the app may not be delivered.

You grant this consent yourself, in your own tenant, and you can withdraw it at any time. Review the exact permission list on the Microsoft consent screen before you approve it, and contact Cinode Support if anything shown there is not explained in this article.


What the app cannot access

Because the app declares no permissions beyond those listed above, it has no access to the following, in Teams or anywhere else in Microsoft 365:

  • Mailboxes, email, or Outlook data

  • Calendars and meeting content

  • OneDrive, SharePoint, and files in Teams

  • Calls, meeting audio or video, transcripts, and recordings

  • Teams, channels, or chats where the app has not been installed

  • The history of 1:1 direct messages, which would require the Chat.Read.All permission that this app does not request

  • Directory data beyond resolving a user by email address, and only when you grant the optional User.Read.All permission

  • Creating, deleting, or renaming teams and channels


Where data travels

Understanding the data path helps you judge what leaves your tenant. A message reaches Cinode through the standard Microsoft Bot Framework path, then Cinode processes it and replies.

  1. A person @-mentions the assistant in a channel, or sends it a direct message.

  2. Microsoft Teams delivers that message to the Microsoft Bot Framework, which forwards it to Cinode's endpoint at hooks.flows.cinode.com.

  3. Cinode identifies the sender from the verified Teams account on the message, then looks up the matching Cinode user by email address.

  4. Cinode reads only the data that user is allowed to see in Cinode, and sends the question together with that data to a large language model service to compose the answer.

  5. Cinode posts the reply back through the Bot Framework into the same conversation.

An answer is always posted back into the conversation the question came from. The assistant cannot redirect an answer to a different channel or a different person. Scheduled alerts and reminders are separate from answers, and they go only to the destination the person who created the alert chose.


What Cinode stores

Cinode stores a small amount of state so that alerts, reminders, and preferences keep working between conversations. What is stored is limited to the following:

  • The alert subscriptions each person creates, including the schedule and the destination conversation they chose.

  • Each person's language and timezone preference.

  • A reference to the conversation, so Cinode can send that person a reminder later.

  • Short-lived technical markers that stop the same notification being sent twice.

Cinode does not keep your Teams conversations as a stored transcript. When the assistant needs the thread to answer a follow-up question, it reads that thread from Teams at the moment it answers.


How the assistant decides who you are and what you may see

Authorisation is the part of the design most security reviews ask about, so it works on two independent checks.

First, identity comes only from the verified Microsoft account attached to the message, never from text inside the message. Nobody can type "act as the CEO" and be treated as a different person.

Second, every answer is filtered through that person's own Cinode permission level, their managed teams, and their managed customers. If a person cannot see something in Cinode, the assistant will not show it to them in Teams either. Sensitive employment fields are withheld from the assistant entirely. Asking the assistant in a shared channel does not widen anyone's access, because the answer is scoped to the person who asked.

If a person has no Cinode account at all, the assistant tells them it cannot find their account and answers nothing.


How to restrict or revoke access

You keep full control of the app in your own tenant and can reverse the installation at any time. Access can be limited or removed in four independent ways.

  1. Limit who can use it. In the Teams admin center, go to Teams apps › Permission policies and allow the Cinode app only for the groups that need it.

  2. Limit where it is installed. Install the app only in the specific teams and channels you approve. RSC permissions apply only where the app is installed.

  3. Withdraw the Entra consent. In the Microsoft Entra admin center, open Enterprise applications, find the Cinode application, and remove the granted permissions or delete the service principal.

  4. Block or remove the app. In the Teams admin center, go to Teams apps › Manage apps, then block or delete the Cinode app. Messages stop being delivered to Cinode immediately.

Disabling the integration in Cinode Flows also stops all processing, independently of anything you change in Microsoft 365.


Related articles

Did this answer your question?