<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aleksei Grebenkin</title>
    <description>The latest articles on DEV Community by Aleksei Grebenkin (@avgrebenkin).</description>
    <link>https://dev.to/avgrebenkin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3840457%2Fa5c207af-16fd-4b4a-95ed-ffb7e22d5136.jpg</url>
      <title>DEV Community: Aleksei Grebenkin</title>
      <link>https://dev.to/avgrebenkin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/avgrebenkin"/>
    <language>en</language>
    <item>
      <title>AI Watermarks Can't Prove Who Wrote Anything — and That's the Point Everyone Misses</title>
      <dc:creator>Aleksei Grebenkin</dc:creator>
      <pubDate>Thu, 13 Aug 2026 06:34:22 +0000</pubDate>
      <link>https://dev.to/avgrebenkin/ai-watermarks-cant-prove-who-wrote-anything-and-thats-the-point-everyone-misses-2g5k</link>
      <guid>https://dev.to/avgrebenkin/ai-watermarks-cant-prove-who-wrote-anything-and-thats-the-point-everyone-misses-2g5k</guid>
      <description>&lt;p&gt;Within 48 hours at the turn of August, both major AI labs switched on watermarking. On July 31, OpenAI embedded SynthID marks into all GPT-Live voice output — one day before Article 50 of the EU AI Act came into force. From August 2, Anthropic began weaving an imperceptible watermark into everything Claude writes.&lt;/p&gt;

&lt;p&gt;My first thought was that this is very hard to do in a way that actually holds. Text has no pixel layer to hide anything in. So I read how Anthropic plans to do it — and dug into how text watermarks work in general. The honest answer: it works, and it also breaks in a lot of ordinary situations.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you even hide a mark in plain text?
&lt;/h2&gt;

&lt;p&gt;There are three generations of this idea. (A good breakdown of the mechanics went viral this week in a &lt;a href="https://x.com/dariadsss/status/2087197486515445924" rel="noopener noreferrer"&gt;thread by ML engineer Daria Berezhnaia&lt;/a&gt; — I'm borrowing her framing for the first two.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero-width Unicode.&lt;/strong&gt; The ancient way: invisible characters tucked between words. Paste the text into Notepad and copy it back out — the mark is gone. Nobody serious uses this anymore.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Token-level (statistical) watermarking.&lt;/strong&gt; When the model generates text, many word choices are near coin-flips: "the cat &lt;em&gt;sits&lt;/em&gt;" vs "the cat &lt;em&gt;lies&lt;/em&gt;" might both be ~50% likely. A secret key decides which of the equally-probable options the model picks, again and again across the text. Where the model is confident — 90% one option — the choice is left alone, so quality barely suffers. A detector with the key checks whether word choices are "skewed" in the right pattern. This is the academic classic (green/red token lists), and Anthropic's "embedded in the text itself" wording points this way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Embedding-space watermarking.&lt;/strong&gt; The subtler one. Inside the model, every step produces hidden states — vectors that trace how the model "thought". You can nudge those vectors slightly in a secret direction; word choices shift almost imperceptibly, nothing visible at the text level, but the statistical fingerprint is there. Research is now pushing this toward semantic clusters, precisely so that paraphrasing won't wash the mark out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it stops working
&lt;/h2&gt;

&lt;p&gt;Taken mostly from Anthropic's own documentation, plus what follows from the mechanics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Short text.&lt;/strong&gt; Their wording: a very short passage leaves "too little text for a reliable signal". A mark spread across word choices needs volume, so a headline, a chat reply or a commit message is out of reach.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Editing.&lt;/strong&gt; Heavy editing, paraphrasing, translating, or mixing the output into your own writing all thin the signal out until it is gone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Older models&lt;/strong&gt;, until the transition period for pre-August releases finishes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screenshots and format conversion&lt;/strong&gt;, which strip file metadata completely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Only the vendor can check.&lt;/strong&gt; The key is secret, so there is no independent verification: Anthropic tells you whether Claude touched a text; you cannot audit the claim, and false positives on short "skewed-looking" text are a real statistical possibility. The detection tooling and its documentation haven't even shipped yet.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The part I did not expect
&lt;/h2&gt;

&lt;p&gt;A detected mark says Claude &lt;em&gt;processed&lt;/em&gt; the text, not that Claude &lt;em&gt;wrote&lt;/em&gt; it. Anthropic states this plainly. Proofreading, translating and summarising leave the same mark as generating from scratch. I dictate my posts and run them through a model to fix grammar, so the thinking is mine and the mark would be there anyway.&lt;/p&gt;

&lt;p&gt;Read it the other way and it is no stronger. No mark found proves nothing.&lt;/p&gt;

&lt;p&gt;So the people this catches reliably are the ones who paste raw output and change nothing. Anyone who edits carefully, translates, or runs the text through a second model comes out clean — today there is no second embedding-space mark to replace the first one, and even when every lab ships one, each key stays locked in its own vault.&lt;/p&gt;

&lt;h2&gt;
  
  
  The voice side has the same hole — plus one more
&lt;/h2&gt;

&lt;p&gt;OpenAI's audio watermarking repeats the pattern: their Verify tool answers one question — whether audio was "made by OpenAI" — not who authored the words. And voice adds its own escape hatch: the moment marked audio is transcribed to text, the audio watermark is gone. Speech-to-text is the analog hole of voice provenance.&lt;/p&gt;

&lt;h2&gt;
  
  
  So is it pointless?
&lt;/h2&gt;

&lt;p&gt;I do not think so. A weak provenance signal beats no signal, someone had to move first, and Anthropic published the limitations instead of burying them. It just cannot carry the weight people will want to put on it, which is proof of who wrote something.&lt;/p&gt;

&lt;p&gt;Would you want your own writing marked because you asked a model to fix your commas?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Sources: &lt;a href="https://support.claude.com/en/articles/16266773-how-claude-marks-ai-generated-content" rel="noopener noreferrer"&gt;Anthropic — How Claude marks AI-generated content&lt;/a&gt; · &lt;a href="https://x.com/dariadsss/status/2087197486515445924" rel="noopener noreferrer"&gt;thread on watermark mechanics by @dariadsss&lt;/a&gt; · &lt;a href="https://www.techtimes.com/articles/322592/20260801/gpt-live-voice-gets-synthid-watermarks-one-day-before-eu-ai-act-enforcement.htm" rel="noopener noreferrer"&gt;OpenAI adds SynthID to GPT-Live voice&lt;/a&gt; · token-level watermarking: Kirchenbauer et al., "A Watermark for Large Language Models" · embedding-space: &lt;a href="https://arxiv.org/html/2605.10977v1" rel="noopener noreferrer"&gt;PASA&lt;/a&gt;, &lt;a href="https://arxiv.org/pdf/2502.02787" rel="noopener noreferrer"&gt;SimMark&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;About: I'm Aleksei, a software engineer. I dictate most of what I write.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>machinelearning</category>
      <category>ethics</category>
    </item>
  </channel>
</rss>
