An Azure communication platform for deploying applications across devices and platforms.
ACS Teams interop meeting chat suddenly returns 403 Forbidden on all chat sends (calls work) - started ~Aug 24, 2026
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+chatscopes) - 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-previewand2025-03-15. - All CsTeamsMeetingPolicy instances have
MeetingChatEnabledType = Enabled(verified via Teams PowerShell as Global Admin). - ACS federation is configured:
EnableAcsUsers = Trueand our ACS resource's immutable ID is inAllowedAcsResources; external access policies haveEnableAcsFederationAccess = True;EnableExternalAccessRestrictionsForChatParticipantsandEnableMutualFederationForChatParticipantsare both False. - Per-meeting
allowMeetingChat = enabled; anonymous join allowed;BlockedAnonymousJoinClientTypesempty. - 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.