Anthropic is rolling out semantic watermarking across all Claude models — including API — to comply with the EU AI Act. The technique trades word precision for detectability. John Gruber called it "text adulteration" and a "perversion of writing." He's not wrong.
Here's how it works. At each token generation step, candidate words are sorted into a "green list" and a "red list" using a deterministic function keyed to the preceding context. The model is slightly biased toward green-list words. Over enough tokens, a statistical signature emerges that a detector with the secret key can recognize. Anthropic's docs originally claimed this would be "imperceptible" and wouldn't "change the meaning, quality, or readability."
Gruber's rebuttal, published on Daring Fireball yesterday and sitting at the top of Hacker News today, is devastating:
"The exact words we choose when writing matter. I want any LLM I use to choose the very best, most precise words at every single decision point. An obvious constraint that I accept is time and computation. Within the constraint of executing inference quickly, and at a certain cost per token, I want the best words."
The math is not subtle. Google's own SynthID paper shows that watermarked and unwatermarked text differ by 0.01% on automatic metrics. But the relevant metric isn't BLEU — it's word choice. When Claude writes "mango and bananas" instead of "mango and pineapple" because the watermark pushed it to the green list, the meaning is preserved but the precision is gone. For creative writing, argumentation, or code comments where every word carries weight, this is a real degradation.
And the EU compliance angle is its own farce. The regulation requires detection, but watermarks can be trivially stripped by paraphrasing — Declaude.app already exists specifically for this purpose. Anthropic is degrading quality for every user worldwide to satisfy a regulation that doesn't actually work.
The immediate effect on anyone building on Claude: your API responses will be subtly different starting soon. If you're using Claude for structured output where specific word choices matter (code generation, classification, data extraction), the watermark introduces a small but real noise signal into every response. If you're using it for creative or editorial work, the degradation is semantic.
This is a textbook case of a well-intentioned regulation producing a worse outcome for everyone. And it's happening to every Claude user, whether they want it or not.