Why "Per My Last Message" Is Quietly Wrecking Your Team's Trust

Passive-aggression in workplace chat rarely looks aggressive. Here's how it actually shows up in Slack — and what to write instead.

Most passive-aggressive messages at work don't look angry. They look polite. That's what makes them effective, and also what makes them corrosive over time.

The tell isn't tone, it's function

A message is passive-aggressive when its literal content and its actual function point in different directions. "Per my last message" reads as a neutral reference. Its function, in most contexts, is to say you didn't read this the first time, and I want that on record.

The words are civil. The subtext isn't. And subtext is what people remember.

Where it shows up most

In distributed teams, almost all of this friction happens in writing — Slack threads, PR comments, status updates — where there's no tone of voice to soften a pointed line. A few patterns show up constantly:

  • The reintroduced fact: "Just to reiterate what I said on Monday..."
  • The public correction: replying in a channel instead of a DM when a DM would do
  • The exaggerated politeness: "No worries at all!!" attached to something that clearly involved worry

None of these are rule violations. That's exactly why they're hard to flag and easy to deny — "I was just being clear" is a defensible read of almost any of them.

Why it's worth catching before you hit send

Passive-aggression is expensive precisely because it's deniable. The recipient can't call it out without sounding thin-skinned, so it usually goes unaddressed — and unaddressed friction compounds. Teams that communicate this way for long enough don't have fewer disagreements; they just stop having them out loud.

The fix isn't to over-correct into blunt. It's to say the actual thing:

Instead of: "Per my last message, the deadline is Friday." Try: "Flagging again in case it got buried — deadline's Friday. Let me know if that's tight."

Same information. No subtext to decode.

Catching it before it's sent

This is the exact pattern Tonalyzer's Passive-Aggression detector is built to catch — one of four detectors in its Interpersonal Friction family, alongside Condescension, Performative Bluntness, and Microaggression. It reads a draft the way a candid colleague would, before it reaches Slack.

Tonalyzer is currently in development. See what it's built to catch →