1.
The invisible payload in your clipboard
A paragraph copied from a LinkedIn post carried something the eye never sees: a run of Unicode tag characters encoding a prompt-injection instruction. Pasted into a frontier model, it halted the session. The visible text was clean; the clipboard was not. This is a known bug class -- invisible tag-character smuggling into LLM contex -- and what follows is a clean field observation of it on a major platform, the byte-level proof, and the mitigation. The part the bytes can't prove is marked as such and left open.
2.
Triage by blast radius: a working methodology for teams with more findings than engineers.
Every security team has more findings than capacity to fix them. The methodology you use to decide what gets fixed first — and what gets ignored — is the difference between a program that reduces risk and one that generates reports.
3.
What your developers are sending to their AI tools, and why your legal team would be upset.
Your developers are pasting proprietary code, internal architecture, credentials, and customer data into AI tools right now. The tools' providers are keeping it. Here's what that means for your legal exposure, your IP, and your security posture.
4.
Tenant isolation failures in multi-tenant SaaS: a pattern catalogue
Tenant isolation failures are authorization failures. Not configuration failures, not framework failures, not database failures. This is a catalogue of how they happen, why they're hard to see coming, and what the underlying patterns actually look like.
5.
Coverage ≠ progress. Why your scan numbers are lying to you.
Closing a thousand vulnerabilities in three months sounds like a win. It isn't. And the fact that it sounds like one is exactly the problem.
6.
The trust problem in AppSec isn't technical. It's political.
Most AppSec programs don't fail because the tools stopped working. They fail because the people stopped listening. Here's what that actually looks like, and what you do about it.
7.
Before you write a rule, read the code
Most SAST implementations fail not because the tool is wrong, but because the rules weren't written for the codebase they're running against. Generic rulesets generate noise. Noise gets ignored. Ignored findings don't get fixed. Here's how to build rules that match how your organization actually writes code.