To check messaging policies in Microsoft Teams, read every policy with Get-CsTeamsMessagingPolicy and compare the settings that decide what people can do with messages: chat, editing and deleting what they sent, and whether owners can delete other people's posts. Everyone gets the Global (Org-wide default) policy unless a custom policy is assigned, and Microsoft says a policy change can take up to 24 hours to apply.
| Method | Best fit |
|---|---|
| PowerShell | A CSV of every messaging policy's chat, edit, delete, Giphy and read receipt settings. |
| Admin centre | Reading or comparing a few policies in the Teams admin centre. |
| Altivane | Recommended for recurring reviews, with how many people each policy applies to beside its settings. |
Before you start
Use an account with the Teams Administrator role, which manages messaging policies, or Teams Reader to read them in the admin centre without changing anything. The example passes no permission or scope: its access is the signed-in account's role.
Know the defaults. Microsoft lists them as chat, editing sent messages, deleting sent messages and Giphy on, Giphy content rated Moderate, owners deleting sent messages off, and read receipts user controlled. Messaging policies cover chat and channel messages. The examples read and export; they change and assign no policy.
Option 1
Check messaging policies with PowerShell
Install the module once, then connect and export 1 row for each messaging policy.
# Install once, if the module is not already installed.
Install-Module MicrosoftTeams -Scope CurrentUser$ErrorActionPreference = 'Stop'
Connect-MicrosoftTeams | Out-Null
try {
$policies = @(Get-CsTeamsMessagingPolicy)
$report = @(foreach ($policy in $policies) {
[pscustomobject]@{
Policy = "$($policy.Identity)" -replace '^Tag:', ''
Chat = $policy.AllowUserChat
EditSentMessages = $policy.AllowUserEditMessage
DeleteSentMessages = $policy.AllowUserDeleteMessage
OwnersDeleteMessages = $policy.AllowOwnerDeleteMessage
Giphy = $policy.AllowGiphy
GiphyRating = $policy.GiphyRatingType
LinkPreviews = $policy.AllowUrlPreviews
PriorityNotifications = $policy.AllowPriorityMessages
ReadReceipts = $policy.ReadReceiptsEnabledType
}
})
$report | Sort-Object Policy |
Export-Csv -Path './teams-messaging-policies.csv' -NoTypeInformation -Encoding utf8
Write-Output "$($report.Count) messaging policies exported."
} finally {
Disconnect-MicrosoftTeams
}The CSV has 1 row per policy. The script takes the Tag: prefix off custom policy names, and Global is the org-wide default, which every tenant has, so the list is never empty. To add a setting, add its property to the object: the names match the parameters of Set-CsTeamsMessagingPolicy, such as AllowUserDeleteChat or AllowMemes.
Check 1 policy
Reconnect with Connect-MicrosoftTeams, then read every setting of 1 policy. The export above disconnects when it finishes.
# Run while connected to Microsoft Teams.
Get-CsTeamsMessagingPolicy -Identity Global | Format-ListOption 2
Review messaging policies in the admin centre
- Sign in to the Microsoft Teams admin centre for the correct tenant.
- Go to Messaging > Messaging policies. Where the admin centre shows Settings & policies instead, open it and choose the Messaging category.
- Select a policy, such as Global (Org-wide default).
- Read Owners can delete sent messages, Delete sent messages, Edit sent messages, Read receipts, Chat and the Giphy settings.
- Leave the page without choosing Save.
This suits checking a few policies. It does not suit a side-by-side review of every policy, since each one opens on its own page.
Option 3 ยท Recommended for recurring reviews
Run Altivane's Teams Policies report
- Open Altivane and choose the tenant.
- Run the Teams Policies report for Teams.
- Open the Excel workbook and read Messaging policies: 1 row per policy with People, Chat, Edit Messages, Delete Messages, Giphy, Link Previews, Priority Notifications, Read Receipts and Security Reporting.
- Read Meeting policies in the same workbook for the meeting settings.
People counts the Teams users each policy applies to, directly or through a group, and for Global those with no other messaging policy, so a policy nobody has stands out. Resource accounts aren't counted. Read Receipts reads as words rather than PowerShell values. The report needs a tenant signed in with a certificate and the MicrosoftTeams module on the computer; without them it shows Not set up for this tenant.
Contact usCommon questions
Why can people still turn read receipts off?
The default is user controlled, which lets each person choose. To turn receipts on for everyone, set Read receipts to Turned on for everyone in the Global policy and give every custom messaging policy the same setting.
Why hasn't a policy change taken effect?
Microsoft says policy changes can take up to 24 hours, and that a restart may be needed for the change to sync in some cases. Check which policy the person has before changing it again.
Who has which messaging policy?
Everyone without a custom policy assigned has Global. To export who has each policy, see how to export policy assignments in Microsoft Teams.
Microsoft references
Technical references checked on 7 November 2026. The example scripts have been reviewed and syntax checked; they have not been run against a live tenant.