What it means
Since 1.19, Minecraft signs chat messages to prove who sent them. If a message's signature doesn't check out, the server kicks the player with:
Chat message validation failure
or the console shows Received chat packet with missing or invalid signature.
Common causes
- A chat plugin or mod changes messages (formatting, filters, prefixes) in a way that breaks the signature.
- The player's game has an old signing key, often after leaving it open a long time or putting the computer to sleep.
- A proxy (Velocity, BungeeCord) or ViaVersion handling chat differently from the backend server.
- The player is on a modified or old client.
Fixes
For one player: restart their game and launcher. That gets them a fresh signing key.
For everyone, on Paper or Purpur: update your chat plugins, proxy and ViaVersion to their latest versions. Most fixed this long ago.
If you don't need signed chat: set this in server.properties and restart:
enforce-secure-profile=false
Players can still join and chat. Their messages just aren't signed, which means Mojang's chat reporting can't verify them. Many community servers run like this.
On Fabric, the No Chat Reports mod does the same job server-side and also stops the "chat messages can't be verified" warning.
Questions
Is it safe to turn off enforce-secure-profile?
Yes for most servers. It only affects chat signing and reporting, not account checks. Keep online-mode on.
Why only some players?
Usually their game has an expired signing key. Restarting the game fixes it.