ACS Teams interop meeting chat suddenly returns 403 Forbidden on all chat sends (calls work) - started ~Aug 24, 2026

Khalid Hasan 0 Reputation points
2026-08-31T16:58:01.51+00:00

Since approximately Aug 24, 2026, every Azure Communication Services (anonymous interop) user joining Microsoft Teams meetings in our tenant gets 403 Forbidden on all meeting chat operations, while calling/roster/screen-share work normally. This broke suddenly with no changes on our side.

Error (both ChatThreadClient.sendMessage and sendTypingNotification):

ChatError: ChatThreadClient.sendMessage: {
  "CommunicationError": {
    "Code": "Forbidden",
    "Message": "The initiator doesn't have the permission to perform the requested operation."
  }
}

ACS users also receive no thread messages (Teams-native participants chat with each other fine in the same meeting), and the communication-react composite shows "You are no longer in this chat thread" immediately on join - so the ACS user appears to never be attached to the meeting chat thread, even though the call roster add works.

What we've verified / ruled out:

  • Reproduces with the minimal @azure/communication-react (1.32.0) CallWithChatComposite quickstart and a freshly minted ACS identity (voip+chat scopes) - not our application.
  • Reproduces on BOTH Graph-app-created online meetings AND a meeting created by a human organizer in the Teams desktop app with default options.
  • Fails on chat api-versions 2024-06-05-preview and 2025-03-15.
  • All CsTeamsMeetingPolicy instances have MeetingChatEnabledType = Enabled (verified via Teams PowerShell as Global Admin).
  • ACS federation is configured: EnableAcsUsers = True and our ACS resource's immutable ID is in AllowedAcsResources; external access policies have EnableAcsFederationAccess = True; EnableExternalAccessRestrictionsForChatParticipants and EnableMutualFederationForChatParticipants are both False.
  • Per-meeting allowMeetingChat = enabled; anonymous join allowed; BlockedAnonymousJoinClientTypes empty.
  • User is fully admitted and call state is Connected when sends fail (not the known join-timing issue), and the failure persists for the entire meeting.

Sample failing request: POST https://<resource>.canada.communication.azure.com/chat/threads/19%3Ameeting_...%40thread.v2/messages?api-version=2025-03-15 -> 403, Ms-Cv: IGMF4wkAI0+MIaxuFQ0kJw.0, 2026-08-31 16:04:38 UTC (Canada region resource).

Was there a recent service-side change/rollout to how ACS interop users are added to Teams meeting chat threads, or a new tenant/meeting setting that now gates this? Is anyone else seeing this since late August 2026? We can share tenant ID, resource ID, and additional Ms-Cv values privately with Microsoft engineers. An Azure support case is also being opened in parallel.

Azure Communication Services

1 answer

Sort by: Most helpful
  1. Vinodh247-1375 44,636 Reputation points Volunteer Moderator
    2026-09-01T00:24:21.62+00:00

    Based on the troubleshooting you've already completed, this does not appear to be a client-side, SDK, API-version, or standard Teams meeting policy configuration issue.

    The key indicator is that the ACS participant appears to be joining the meeting successfully for calling scenarios, but is never becoming a valid member of the associated Teams meeting chat thread.

    According to Microsoft documentation, Azure Communication Services users joining Teams meetings should be able to participate in meeting chat, including sending and receiving messages and typing notifications. The behaviour you're seeing differs from the commonly documented transient timing scenario where chat operations briefly fail until chat-thread membership is established.

    Several details support this conclusion:

    • The issue persists for the entire meeting rather than resolving after join.
    • Both sendMessage and sendTypingNotification return 403 Forbidden.
    • No meeting chat messages are received by the ACS participant.
    • The Communication React UI immediately reports "You are no longer in this chat thread".
    • The issue reproduces with the Microsoft quickstart sample and freshly created ACS identities.
    • The behaviour is consistent across both Graph-created and Teams-created meetings.
    • Calling, roster and screen-sharing functionality continue to work normally.

    Taken together, this suggests the failure may be occurring in the ACS-to-Teams meeting chat membership provisioning path, rather than in message authorisation itself.

    You have already ruled out many of the common causes:

    • MeetingChatEnabledType is enabled.
    • ACS federation appears correctly configured.
    • Anonymous join is allowed.
    • The ACS participant is fully admitted and connected before chat operations are attempted.
    • Multiple chat API versions show the same behaviour.

    Given the evidence provided, I would focus further investigation on whether the ACS participant is successfully being provisioned as a member of the Teams meeting chat thread at join time.

    For troubleshooting and platform investigation, it would be useful to collect:

    1. First known-good and first known-bad timestamps.
    2. UTC timestamps for several failed chat requests.
    3. Corresponding Ms-Cv correlation IDs.
    4. ACS resource region and immutable resource ID.
    5. Tenant ID.
    6. Meeting ID and chat thread ID.
    7. Confirmation that Teams-native participants can exchange messages normally in the same meeting.
    8. A minimal reproducible sample (which you already appear to have).

    Based on the information shared, the evidence currently points toward a problem with meeting chat thread membership establishment for ACS-interoperability participants, rather than a missing ACS chat permission, SDK defect, or meeting policy configuration issue.

    your investigation has already eliminated most documented configuration causes. The persistent 403 responses, combined with the ACS participant never attaching to the meeting chat thread and reproducing in the official sample, suggest the issue is likely occurring within the ACS-Teams meeting chat integration path rather than within your application code.

    Help make this community better for everyone: if this answer resolved your issue, please accept it or leave an upvote. If not, share more details in a comment so we can continue the discussion and find the right solution.

    Was 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.