In modern enterprise collaboration, educational institutions, and corporate governance workflows, Microsoft Teams meetings host diverse events ranging from informal team brainstorms to structured corporate town halls, confidential client hearings, and online examinations. While real-time in-meeting chat fosters collaboration during collaborative sessions, unmoderated chat can introduce severe distractions, off-topic side conversations, and potential data leakage during formal webinars or executive presentations. To give IT administrators and meeting organisers precise control over messaging behaviour, Microsoft Teams provides granular meeting chat policies. By utilizing the Microsoft Teams PowerShell module with the Set-CsTeamsMeetingPolicy cmdlet, administrators can configure whether meeting chat is enabled continuously, completely disabled, or restricted exclusively outside of active call hours.
Understanding Teams Meeting Chat Policy Options
In Microsoft Teams administrative governance, meeting chat permissions are governed by the AllowMeetingChat parameter within the CsTeamsMeetingPolicy policy framework. This attribute accepts three specific operational values:
- Enabled (Default): Meeting chat is permanently accessible. Participants can exchange text, files, and links before the meeting begins, during the active video call, and asynchronously after the meeting concludes.
- Disabled: Chat functionality is completely deactivated for all meetings scheduled by users assigned this policy. Neither internal participants nor external guests can send or view chat messages within the meeting container.
- EnabledExceptDuringMeeting: Participants can send messages before the meeting starts and continue discussions after the call ends. However, the moment the meeting commences and participants join the active call, the chat pane is automatically locked in read-only mode, eliminating in-meeting chat distractions while preserving pre- and post-call collaboration.
Connecting to the Microsoft Teams PowerShell Module
Before managing meeting policies, verify that your administrative machine runs the latest Microsoft Teams PowerShell module (version 5.0 or later). Open Windows PowerShell or PowerShell 7 as an Administrator and connect to your tenant:
Connect-MicrosoftTeams
Sign in using credentials assigned Global Administrator or Teams Administrator roles. Once authenticated, verify your active organization connection:
Get-CsTenant | Select-Object DisplayName, TenantId
Auditing Existing Meeting Chat Policies
To view the current meeting chat configuration across all meeting policies defined in your Microsoft 365 tenant, execute Get-CsTeamsMeetingPolicy:
Get-CsTeamsMeetingPolicy | Select-Object Identity, Description, AllowMeetingChat
To inspect the specific parameters applied by the Global (Org-wide default) policy:
Get-CsTeamsMeetingPolicy -Identity Global | Format-List Identity, AllowMeetingChat
By default, AllowMeetingChat is set to Enabled across standard tenants.
Restricting In-Meeting Chat During Active Calls
For organizations seeking to prevent chat distractions during active lectures, webinars, or corporate presentations while retaining asynchronous meeting notes, set AllowMeetingChat to EnabledExceptDuringMeeting.
To apply this restriction to the Global tenant policy:
Set-CsTeamsMeetingPolicy -Identity Global -AllowMeetingChat "EnabledExceptDuringMeeting"
When users assigned this policy host a meeting, the Teams client automatically disables text input in the chat window while the meeting is in session, re-enabling it immediately once the call ends.
Creating a Custom Policy to Disable Meeting Chat Completely
In high-security, legal compliance, or strict testing environments, in-meeting chat must often be disabled entirely to prevent unauthorized data sharing or examination collusion.
Use the New-CsTeamsMeetingPolicy cmdlet to create a dedicated no-chat policy:
New-CsTeamsMeetingPolicy -Identity "Exam-NoChatPolicy" `
-AllowMeetingChat "Disabled" `
-Description "Completely disables meeting chat for formal examination and compliance sessions."
Conversely, to create an unrestricted collaboration policy for creative and technical departments:
New-CsTeamsMeetingPolicy -Identity "Dev-FullChatPolicy" `
-AllowMeetingChat "Enabled" `
-Description "Permits unrestricted meeting chat before, during, and after meetings."
Modifying Existing Custom Policy Instances
If organizational policies change, you can update existing custom policies using Set-CsTeamsMeetingPolicy:
Set-CsTeamsMeetingPolicy -Identity "Exam-NoChatPolicy" -AllowMeetingChat "EnabledExceptDuringMeeting"
Assigning Meeting Policies to Users and Security Groups
After defining meeting chat policies, assign them to target users using the Grant-CsTeamsMeetingPolicy cmdlet.
To assign the restricted policy to an individual user by User Principal Name (UPN):
Grant-CsTeamsMeetingPolicy -Identity "[email protected]" -PolicyName "Exam-NoChatPolicy"
To remove a direct policy assignment and restore the user to the tenant Global default:
Grant-CsTeamsMeetingPolicy -Identity "[email protected]" -PolicyName $null
To assign policies at scale based on Microsoft 365 Security Group membership:
New-CsGroupPolicyAssignment -GroupId "d4e5f6a7-b8c9-0123-defa-2345678901bc" `
-PolicyType TeamsMeetingPolicy `
-PolicyName "Exam-NoChatPolicy" `
-Rank 1
Verifying Effective User Policy Assignments
To confirm that the meeting chat policy has applied to a specific user account, query the user policy assignment table:
Get-CsUserPolicyAssignment -Identity "[email protected]" -PolicyType TeamsMeetingPolicy
The command outputs the active policy name and assignment type (Direct or Group). Policy replication across Teams client instances typically completes within 15 to 30 minutes, after which newly scheduled meetings will reflect the configured chat permissions.