Anthropic published a support article on how Claude marks AI-generated content, and it spent this morning on the Hacker News front page. The document itself is short and mostly technical. The discussion was neither, because it lands on a question most content teams using AI have been quietly deferring: when a model touches your content, is there a record, and whose job is it to keep one?
Here is what actually shipped, what it can and cannot prove, and the part that falls to you.
What Anthropic shipped
Anthropic signed the EU AI Act's Article 50(2) Code of Practice on Transparency of AI-Generated Content. Claude models launched in the EU on or after August 2, 2026 support machine-readable marking at launch, and Anthropic says it is working to add marking support to models released before that date.
There are two mechanisms.
Imperceptible watermarks in text. Claude weaves a mark directly into the text it generates. A reader cannot see it, and Anthropic states it does not change the meaning, quality, or readability of the output. Because the watermark is part of the text, it travels with the text when it is copied and pasted, and it may persist through some editing.
C2PA signed provenance metadata on files. When Claude generates a supported file type, including .svg, .png, and .jpg, it attaches signed provenance metadata following the Coalition for Content Provenance and Authenticity open standard. A signed label signals the file was processed by Claude and lets you detect whether it has been tampered with.
Marking is applied at the model level, so it follows the models across the surfaces they run on: Claude Platform (API), Claude, Claude Code, Claude Cowork, and Claude Tag. Embedded watermarks also apply when supported models are accessed through AWS, Google Cloud, or Microsoft Foundry. Anthropic is explicit that coverage is not uniform, and that signed file metadata in particular may not be supported on every platform. Marking applies worldwide, not only to users in the EU. Detection documentation is described as forthcoming.
If you build products on Claude, Anthropic's own guidance is that you should independently assess what Article 50 requires of you. Signing the code of practice covers Anthropic's models. It does not discharge your obligations for the thing you shipped.
What a detected mark tells you, and what it does not
The limitations section is the most useful part of that document for anyone running a publishing pipeline, and Anthropic is unusually direct about it.
A mark means Claude processed the text. It does not establish that Claude wrote it. Anthropic gives the examples itself: people use Claude to proofread, translate, summarize, and convert files, and the output can carry a mark even when the underlying ideas, text, or data came from somewhere else. Any policy that treats a detected mark as proof of machine authorship will produce false accusations against your own writers.
Absence of a mark proves nothing. Anthropic lists the cases: content from a model released before marking was supported, text that has been heavily edited or paraphrased or translated, passages too short to carry a reliable signal, and files whose metadata was stripped.
File metadata is fragile in completely ordinary ways. Anthropic names format conversion, re-saving, and screenshots as things that strip C2PA metadata. If you have ever run images through an optimization or resizing pipeline, you have probably stripped provenance metadata already without noticing. Verify what actually survives your own media pipeline before you rely on it.
So the honest summary: watermarking is a meaningful transparency measure for the open internet and a weak internal record for your team. Detection answers "did a model touch this" with a qualified maybe. It does not answer the questions your team will actually be asked.
The questions you will actually be asked
When a claim in a published post turns out to be wrong, or a customer asks how your documentation is produced, or legal asks what your AI disclosure covers, the questions are specific:
- Which model produced this draft, at what version?
- Was it a person using an assistant, or an agent running unattended?
- Which human reviewed it before it went live, and on what date?
- Were the product facts, pricing, and customer references checked against a source of truth?
- How many published pages are fully machine-generated and have never been read by anyone on the team?
None of those are recoverable from an invisible watermark, even a perfectly detected one. All of them are trivially recoverable from your CMS, if you decided in advance to store them.
Store provenance as typed fields
Provenance that lives in a Slack thread, a spreadsheet, or someone's memory is not provenance. Add it to the content model so it is queryable, reportable, and impossible to skip.
A minimal set of fields that covers the questions above:
| Field | Type | Purpose |
|---|---|---|
ai_assisted |
Switch | Was a model involved at all |
ai_role |
Select |
drafted, edited, translated, researched
|
ai_model |
Text | Model and version, e.g. claude-sonnet-5
|
human_reviewer |
Object | Relationship to your authors type |
review_date |
Date | When a person actually signed off |
facts_verified |
Switch | Product facts and pricing checked against source |
The ai_role distinction is the one that matters most, because it is exactly the distinction watermark detection cannot make. A post Claude drafted end to end and a post Claude proofread can carry the same mark. Your own record separates them.
Writing that record with the Cosmic TypeScript SDK:
npm install @cosmicjs/sdk
import { createBucketClient } from '@cosmicjs/sdk';
const cosmic = createBucketClient({
bucketSlug: 'your-bucket-slug',
readKey: 'your-read-key',
writeKey: 'your-write-key',
});
await cosmic.objects.updateOne('OBJECT_ID', {
metadata: {
ai_assisted: true,
ai_role: 'drafted',
ai_model: 'claude-sonnet-5',
human_reviewer: 'jane-doe',
review_date: '2026-08-11',
facts_verified: true,
},
});
The payoff is the query. Finding every AI-drafted post that no human has signed off on becomes one request instead of an audit:
const { objects: unreviewed } = await cosmic.objects
.find({
type: 'blog-posts',
'metadata.ai_assisted': true,
'metadata.facts_verified': false,
})
.props('slug,title,metadata.ai_model,metadata.review_date')
.limit(100);
Run that on a schedule and the answer to "how much unreviewed machine-generated content is live on our site" stops being a guess. Because the fields are typed and served over the REST API, you can surface the same record on the page itself if your disclosure policy calls for it, without maintaining a second system to track it.
One note on the practical side: adding a field to a content model and backfilling it is a content-team task in a headless CMS, not an engineering ticket. Maximilian Wuhr, Co-Founder at FINN, described the value of that arrangement plainly:
"Cosmic is: us never having to ask a developer to change anything on the backend of our website."
Reporting on it
Provenance fields tell you how a piece was made. The next question is whether it performs, and whether machine-drafted work holds up against human-drafted work on your own site.
Cosmic Insights rolls traffic up by the actor who created the underlying content, splitting it across human users, agents, and automations. That turns a philosophical argument into a measurable one. If agent-drafted pages bounce harder or convert worse than human-drafted pages, you will see it in the numbers rather than debating it in a meeting. If they perform the same, that is worth knowing too.
What to do this quarter
Six things, none of which require a replatform.
- Add provenance fields to your content models. Start with the six above. Ship them before you need them, because retrofitting provenance onto two years of archives is guesswork.
- Backfill the last 90 days only. Recent content is what people are reading and what will get questioned. Older archives can be marked unknown, honestly.
- Test what your media pipeline does to C2PA metadata. Upload a Claude-generated image, run it through your normal transform and optimization path, and check whether the Content Credentials survive. Assume they do not until you have verified it.
- Write down your disclosure policy in one paragraph. What level of model involvement triggers a public disclosure on the page? "Claude drafted this" and "Claude proofread this" are different, and your policy should say so before a reader asks.
- Keep detection out of your enforcement policy. If you are checking freelancer or agency submissions, treat a watermark hit as a reason to open a conversation. Anthropic's own documentation states that a detected mark is not fully conclusive, so it cannot carry a policy violation on its own.
- Scope the keys your agents hold. If an agent can write to production, the provenance record it leaves is the only trail you have. Cosmic issues separate read and write keys, so a client connected with a read-only key gets the read tools while every write tool and all four AI generation tools are blocked with a clear error message. Details are on the MCP server page and in Connect Claude to Your CMS.
The through line
Model-level watermarking is a good development, and it solves a problem at the wrong altitude for your purposes. It helps the broader internet identify synthetic content at scale. It does very little for the team that has to explain how a specific paragraph on a specific page came to exist.
That record is yours to keep, and the only place it can reliably live is next to the content itself, as structured fields you can query. Teams that add those fields now will answer provenance questions in one API call. Teams that wait will reconstruct them from memory, which is another way of saying they will not answer them at all.
If you are already running AI in your publishing workflow, this is a one-afternoon change with a long tail of value. You can model provenance fields on the Cosmic free plan and query them over the REST API today.
Start free or book 15 minutes with our CEO to talk through how your content model should record agent work.
Sources
- Anthropic, How Claude marks AI-generated content, Claude Help Center
- C2PA, Coalition for Content Provenance and Authenticity
Originally published on the Cosmic blog.
Top comments (0)