The Chameleon mutation registers COMSIG_HUMAN_EARLY_UNARMED_ATTACK when it is gained, but never unregisters it when it is lost.
Mutation datums aren't necessarily deleted and can sit in the DNA dormant until activated, as a result there's no nice qdel() handler to clean up the mess.
An example of this is a changeling with Chameleon skin, that adds/activates/deactivates the Chameleon mutation as required.
Honestly, this could probably be refactored into a component since the behaviour is pretty generic and can mostly be applied to any atom. That is a bit more work for another day and a good first PR for someone to learn how to make components.
This at least fixes the underlying issue.