\n\n\n\n Invisible Ink Is Back, and Your Spam Filter Can't Read It - AgntBox Invisible Ink Is Back, and Your Spam Filter Can't Read It - AgntBox \n

Invisible Ink Is Back, and Your Spam Filter Can’t Read It

📖 4 min read•778 words•Updated Sep 8, 2026

Microsoft’s own framing is the part that stuck with me: the technique showed up in Defender for Office 365 telemetry not because anyone was hunting phishing tricks, but because the team was researching protection against prompt injection. In other words, the people watching for attacks on AI models found spammers already borrowing the playbook. Ars Technica summed the underlying trick up as a once-overlooked block of Unicode that’s invisible to humans and gaining ever wider use.

That’s a small sentence with an uncomfortable implication. The AI security research pipeline and the email security pipeline are now the same pipeline, and neither side seems to have planned for it.

What actually happened

The short version, per Microsoft: ASCII smuggling — embedding Unicode characters that render as nothing to a human reader but still exist in the underlying text — was popular as a way to attack AI systems. Hide instructions where a person can’t see them, let the model read them anyway. Now spammers are using the same approach against email filters, and Microsoft reports a sharp increase starting in February 2026.

That’s the whole verified picture. I’m not going to pad it with numbers nobody published. But the shape of it is enough to say something useful about tooling.

Why this matters for anyone evaluating AI security tools

I review toolkits for a living, which mostly means I read a lot of marketing copy about detection layers. And the pattern I keep running into is that vendors sort threats into tidy buckets. There’s the prompt injection bucket. There’s the email security bucket. There’s the content moderation bucket. Each one gets its own product page, its own dashboard, its own pricing tier.

ASCII smuggling doesn’t respect those buckets. It’s one input-handling weakness — text that looks like one thing to a human and another thing to a machine — that happens to work against models and against filters. The threat didn’t change categories. Our category system was just wrong.

So when you’re assessing a tool, the question isn’t “does it cover prompt injection.” The question is more basic:

  • Does it normalize and inspect text at the byte level, or does it evaluate whatever the renderer shows?
  • Does it flag invisible or zero-width characters as suspicious on their own, independent of what they spell out?
  • Can you see what the tool actually parsed, or do you only see its verdict?
  • When a new evasion method surfaces, does the vendor ship a detection update or a blog post?

That third one is the one I’d push hardest on. A lot of AI security tooling gives you a score and a label and nothing else. If you can’t inspect the normalized input, you have no way to know whether a clean result means clean content or means the tool never saw the hidden part.

The uncomfortable part about timelines

Prompt injection via hidden Unicode has been discussed publicly in AI security circles for a while. The crossover into phishing evasion is the news. What that says to me is that the lag between “researchers demonstrate a trick against models” and “criminals apply it to ordinary email” is short enough to matter.

Which means the AI security research community is now, functionally, doing R&D that gets picked up downstream. Every clever bypass someone publishes for a chatbot is a candidate technique for a spam campaign. I don’t think that argues for less disclosure. I do think it argues for security vendors treating AI-focused findings as general input-validation findings, and shipping fixes across the whole product line rather than the one team that read the paper.

What I’d actually do this week

If you’re running anything that ingests untrusted text — a support inbox, a document pipeline, an agent that reads web pages — the practical move is to normalize before you evaluate. Strip or explicitly flag characters that produce no visual output. Log the raw bytes somewhere you can query them. That’s unglamorous plumbing, not a product purchase, and it’s the layer most toolkits quietly assume someone else handled.

I’d also stop treating “invisible characters detected” as a low-priority signal. There are legitimate uses for zero-width characters, but on inbound untrusted text, their presence is information worth acting on.

The thing I keep coming back to is how ordinary this is. No exotic exploit chain. Just a gap between what humans see and what machines read, sitting in a corner of Unicode that most tooling forgot to check. Attackers found it useful against AI first because AI systems were the newest, least-hardened readers around. Then someone noticed the old readers had the same blind spot.

Check what your tools parse, not what they display. That’s the review note here.

🕒 Published:

🧰
Written by Jake Chen

Software reviewer and AI tool expert. Independently tests and benchmarks AI products. No sponsored reviews — ever.

Learn more →
Browse Topics: AI & Automation | Comparisons | Dev Tools | Infrastructure | Security & Monitoring
Scroll to Top