Your AI Text Is Now Watermarked: Article 50 of the EU AI Act for Developers
Canonical note: this is a shortened version. The full article, with sources and the downloadable checklist, was first published at https://bookpilot.org/blog/ai-act-article-50-watermarking-ai-text/. General information
Canonical note: this is a shortened version. The full article, with sources and the downloadable checklist, was first published at https://bookpilot.org/blog/ai-act-article-50-watermarking-ai-text/.
General information only, not legal advice.
If your app calls Claude or Grok, the text coming back carries, or will very soon carry, an invisible watermark. No code change, no new characters in the response, no extra tokens.
What changed
- Claude: Anthropic signed the EU Code of Practice on AI-generated content. Its Help Center says supported models watermark text across the API, apps and Claude Code, worldwide. Older models (Opus 4.7, Opus 4.6, Sonnet 4.6) are now on the list; Amazon Bedrock rollout completes by 10 November. ⚠️ The 3 November start date comes only from press reports citing an Anthropic email.
- Grok: per the official docs, from 7 November 2026 seven Grok models watermark by default, including structured outputs and tool-call arguments.
- OpenAI: ⚠️ a "textGrain" feature in ChatGPT, Europe only, is reported by a single press source.
The dates people get wrong
Article 50 has applied since 2 August 2026. 2 December 2026 is only the transition for generative systems already on the market before 2 August, and only for the machine-readable marking duty (Art. 50(2)).
Who does what
- Providers mark outputs (Art. 50(2)) and tell users they're talking to AI (Art. 50(1)).
- Deployers visibly disclose deepfakes and unreviewed AI text on matters of public interest (Art. 50(4)). The provider's watermark doesn't replace that.
- Building on a third-party API under your own brand? Whether that makes you a provider is ⚠️ a question for a lawyer.
Quick wins in your code
import { xai } from '@ai-sdk/xai';
import { generateText } from 'ai';
const { text, response } = await generateText({
model: xai.responses('grok-4.7'),
prompt: 'Summarise this product page.',
});
// log per request: 'true' means the output was watermarked
logger.info({ watermark: response.headers?.['x-watermark'] });
- Don't opt out of the Grok watermark without a documented legal exception.
- Sonnet 4.6 / Opus 4.6 with non-default
temperature,top_portop_kmay not carry the mark. - Keep C2PA metadata on generated images.
- Add an "you're chatting with AI" notice to your chatbot.
👉 Read the full article: https://bookpilot.org/blog/ai-act-article-50-watermarking-ai-text/
📋 Get the 11-point checklist (PDF): https://bookpilot.org/checklists/ai-act-article-50/
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.