❓ Can't remove member from Microsoft Teams Group Chat using Graph API with Application Permission

Haekal Arif Rozikin 5 Reputation points
2025-11-24T03:56:40.7033333+00:00

Hi everyone,

I’m currently working on creating a Teams group chat using Microsoft Graph API with application permissions, and I’ve run into several issues that I hope someone here can help clarify.


1. Creating group chat with members and installed app (works)

I followed the documentation here: “Create a one-on-one chat with installed apps”https://learn.microsoft.com/en-us/graph/api/chat-post?view=graph-rest-1.0&tabs=http#example-3-create-a-one-on-one-chat-with-installed-apps

Using application permissions, I successfully:

  • Created a group chat

Added multiple members

Installed my Teams app into the chat automatically

My application has already been granted the following permissions:

ChatMember.ReadWrite.All  
ChatMember.ReadWrite.WhereInstalled

The purpose is to allow the app to add or remove chat members without requiring a signed-in user, since I am using fully non-delegated application permissions.

However, when I try to remove a member from the group chat using Graph API with the application token, the request fails and returns an error.

Cuplikan layar 2025-11-24 103224

2. Trying RSC-granted approach – app not installed

Next, I tried creating a group chat using the RSC-granted app approach:

https://learn.microsoft.com/en-us/graph/api/chat-post?view=graph-rest-1.0&tabs=http#example-4-create-a-one-on-one-chat-with-rsc-granted-apps

With the following permission:

ChatMember.ReadWrite.All

And permission type: application

The group chat is created successfully, but the app is not installed inside the chat, which means I still can’t proceed with removing a member using the app context.

So this solution also stops midway.


3. Creating chat first, then installing the app (also fails)

Lastly, I attempted another method:

Create the group chat normally

After creation, install the app into it using this endpoint: https://learn.microsoft.com/en-us/graph/api/chat-post-installedapps?view=graph-rest-1.0&tabs=http

I used an application access token again, but the request returns the same error as case #1 when attempting to remove a member.

Microsoft Teams | Development
Microsoft Teams | Development

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

0 comments No comments

1 answer

Sort by: Most helpful
  1. Teddie-D 18,700 Reputation points Microsoft External Staff Moderator
    2025-11-24T06:12:06.3733333+00:00

    Hi @Haekal Arif Rozikin 

    Thank you for posting your question in the Microsoft Q&A forum. 

    You've encountered the following error: AclCheckFailed – The initiator 28:app <your-app-id> is not a member of the roster in the generic thread. This happens because removing a member requires the initiator to be a participant in the chat roster. Apps are never considered roster members, even if they are installed in the chat. Application permissions alone do not grant roster membership, so the ACL check blocks the removal. 

    Here’s why each of the three approaches fails: 

    1.Creating a chat (with or without installed apps) 

    The Create chat API can define members and optionally install an app. Installing an app does not make it a roster participant. The app cannot remove members because the ACL check requires the initiator to be in the roster. 

    2.Relying on app permissions alone 

    Even with permissions like Chat.Manage.Chat or ChatMember.ReadWrite.All, the app is not treated as a chat member. Permissions allow the app to act within its scope, but they don’t override roster rules. Since the app isn’t in the roster, the ACL check still denies the removal. 

    3.Installing the app after the chat is created 

    Installing the app later gives it permissions to interact with the chat. However, it still isn’t a roster member, so ACL checks for member removal continue to fail. 

    All three approaches fail because Teams apps are not roster participants. The Remove member action requires the initiator to be in the roster. Apps can be installed, granted permissions, and interact with the chat, but they will never count as roster members. As a result, any attempt to remove a member directly from the app will always be blocked by ACL checks. 

    I hope this information is helpful. 


    If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".    

    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. 

    Was this answer helpful?

    1 person found this answer helpful.

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.