LikeWard
Academy5 August 20266 min read

Content Provenance, Explained for Real Platforms

What content provenance is, how signed manifests and C2PA work, and why provenance — not watermarking — is what makes AI consent enforceable.

By LikeWard Engineering Desk
Code on a dark monitor, representing the signed records behind content provenance for AI-generated imagery

Photo via Unsplash

Ask ten platforms how they prove an AI-generated image was authorised and you will get ten answers about watermarking. Watermarking is not the answer. Content provenance is — and the difference decides whether your consent claims survive contact with a regulator, an acquirer or a court.

This explainer covers what a provenance record contains, how signing makes it tamper-evident, why licence status and signature validity must be reported separately, and what breaks when platforms get that last part wrong. We got it wrong ourselves in an early build, which is the most useful part of the story.

In brief

  • Watermarks mark pixels. Provenance records circumstances. Different jobs.
  • A manifest names creator, boundary-set version, requester and timestamp — signed.
  • Signature valid ≠ still licensed. Report both, always.
  • Stripping metadata destroys a true record; it cannot forge a false one.
  • Provenance is what makes a 48-hour takedown duty achievable instead of aspirational.

Sections

What provenance actually is

Provenance, in the art-world sense, is the chain of custody: who owned this, when, and how do we know. Content provenance applies the same idea to a file. Not "is this image real?" — a question that gets harder every year — but "what does the record say about how it came to exist?"

That reframing is the whole trick. You are not trying to detect synthetic content by inspection. You are attaching a durable, verifiable statement at the moment of creation, when you still know everything worth knowing.

What goes in a manifest

A useful manifest for a licensed-likeness platform carries at least:

FieldWhat it answersWhy it matters later
Creator identifierWhose likeness is this?The starting point of any complaint
Boundary-set versionWhich rules applied?Rules change; the output must not float
Permitted scope snapshotWhat was allowed then?Avoids reconstructing history
Requester identifierWho commissioned it?Abuse patterns, and refunds
Age-assurance stateWas the requester verified?Card networks and Ofcom both ask
TimestampWhen?Statutory windows are date-anchored
Engine versionWhich enforcement logic ran?Lets you scope a fix to affected output
SignatureHas this been altered?Makes the rest worth reading

Table: the fields a provenance manifest needs to answer the questions that actually get asked, and who asks them.

Engine version is the field people leave out and then wish they had. When we shipped an enforcement fix and moved from engine 1.0.0 to 1.1.0, that field is what would let anyone identify precisely which outputs were authorised under the older logic. Without it, "which images are affected?" has no answer that is not a guess.

Signing and tamper evidence

A manifest anyone can edit is a rumour. Signing turns it into evidence.

The mechanism is unremarkable and that is a virtue: canonicalise the record, compute a signature with a key only the platform holds, publish a verification endpoint. Change one character and verification fails. You cannot forge a valid record without the key.

Two implementation details worth insisting on. Compare signatures in constant time, or you leak information through timing. And canonicalise properly — if reordering keys in the JSON changes the signature, your verification is brittle in a way that will eventually be reported as a bug by someone who reserialised the record innocently.

What signing does not give you is durability against stripping. Anyone can remove metadata from a copy. The asymmetry is what saves this: a stripped copy is unverifiable, which is the same state as every unlabelled image on the internet. What matters is that a forged authorisation is not producible.

The mistake we made: licence status

Here is the failure we shipped, found in our own hardening pass, and fixed.

Revocation worked — a creator withdrawing consent stopped all future generation immediately. But every image already issued still resolved through the public provenance endpoint as a live licence, signature valid, no indication that anything had changed.

Technically correct. The signature was valid; the record had not been altered. And completely useless, because anyone checking a copy after the creator withdrew consent would be told, in effect, that it was fine.

That gap made the 48-hour removal duty unmeetable in the case that matters most: the creator changing their mind. A platform that cannot tell you which outputs are no longer authorised cannot act on a report in two days.

The fix separates two things that were quietly conflated:

  • signatureValid — has this record been altered since issue?
  • licensed — is the permission it records still in force?

Revoking a creator, or resolving a takedown, now marks outstanding generations revoked. The verification endpoint returns a licence object with status, timestamp and reason; it withholds the output URL; and it caches nothing. The manifest stays readable so distributed copies remain traceable back to a record that now says withdrawn.

"A signature answers a question about the document. People kept reading it as an answer about the permission. Those come apart the moment someone changes their mind — which is the only moment any of this exists for." — LikeWard engineering desk, hardening review

We also updated our OpenAPI spec and llms.txt to document the distinction, because an agent integrator with no reason to re-check a record will cache the first answer forever.

C2PA and the standards picture

The Coalition for Content Provenance and Authenticity publishes the open standard, marketed as Content Credentials. It specifies how assertions are bound to media, how signing works and how a chain survives editing. Camera makers and editing tools have been shipping support, and NIST has engaged with provenance as part of its AI work.

If you want a credential other people's tools can read, C2PA is the target. Being honest about what you have built matters more than the choice, though. LikeWard issues a signed JSON manifest, not a C2PA-conformant embedded credential. It answers every operational question — what was authorised, under which rules, still in force? — and it is not the standard. Calling it C2PA because it rhymes would be the kind of claim that unravels in exactly the meeting where it counts.

Why regulators keep arriving at provenance

Three separate pressures, one artifact:

  • The TAKE IT DOWN Act requires removal within 48 hours of a valid request, plus reasonable efforts on known copies. Both need to know what is affected.
  • The Online Safety Act 2023 requires risk assessment, record-keeping and swift action on illegal content.
  • Card networks require documented consent, produced on request.

None of them mandate a specific format. All of them need the same underlying facts. Build the record once and you have answered three institutions — which is the argument we made in the card network consent rules guide.

Design pitfalls

Reporting signature validity as though it means "authorised". The mistake above. Report both fields, name them unambiguously.

Caching verification responses. A revocation must take effect on the next check, not after a TTL expires.

Omitting the engine version. Then a bug fix has no blast radius you can compute.

Requiring an account to verify. The person most likely to check a suspicious image is the person depicted, who has no account.

Calling a proprietary manifest "C2PA". See above.

Treating stripping as fatal. It is not. Understand the asymmetry and stop worrying about it.


Continue with the watermark versus provenance comparison, or see how the record is used in practice in the TAKE IT DOWN Act compliance guide. You can check any LikeWard output yourself on the verification page.

Frequently asked questions

Is content provenance the same as a watermark?
No. A watermark marks the pixels; provenance records the circumstances. A visible watermark says 'this came from somewhere' and survives screenshots badly. A provenance manifest says who authorised it, under which version of which rules, for whom, and when — and it is signed, so altering it is detectable. They solve different problems and the confusion between them is the most common misunderstanding in this whole area.
What happens if someone strips the metadata?
The copy loses its credential and becomes an unverifiable image, which is exactly what an unlabelled image already is — so stripping does not manufacture a false authorisation, it only discards a true one. The useful property is asymmetric: you cannot forge a valid signed record without the signing key, so anything that does verify is trustworthy even though anything that does not verify is merely unknown.
Does a valid signature mean the image is still licensed?
No, and conflating the two is a real design bug rather than a subtlety. A signature proves the record has not been altered since it was issued. The licence status says whether the permission it records is still in force. Consent revoked yesterday leaves you with a perfectly valid signature over a withdrawn licence, so any verification response needs to report both separately.
Do we need C2PA specifically?
C2PA is the open standard and it is where interoperability is heading, so for anything you expect other tools to read, it is the right target. For internal enforcement — refusing requests, resolving takedowns, answering an acquirer — a signed JSON manifest gives you the same operational answers today. Being clear about which one you have actually implemented matters more than which you chose.
How long should provenance records be kept?
Longer than you expect to need them. Disputes surface late, statutory windows are measured from the report rather than from creation, and the person depicted may not learn of an image for years. Retention should be a deliberate decision recorded somewhere, not a side effect of your database backup policy.