C2PA provenance does not distinguish Codex, GPT Image 2.5 Flare, and Sunburst outputs
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Summary
This issue is about the signed C2PA provenance contract of the generated artifact, not about adding a model selector to Codex.
Images generated through these three routes all contain the same action metadata:
{
"action": "c2pa.created",
"softwareAgent": {
"name": "gpt-image",
"version": "2.0"
}
}
| Generation route | Requested/selected model | C2PA softwareAgent |
|---|---|---|
| Codex built-in image generation | Not exposed by the tool | gpt-image / 2.0 |
| OpenAI Images API | gpt-image-2.5-flare |
gpt-image / 2.0 |
| OpenAI Images API | gpt-image-2.5-sunburst |
gpt-image / 2.0 |
The Flare and Sunburst requests used the documented model IDs. The resulting files therefore demonstrate that softwareAgent.version = 2.0 cannot safely be interpreted as the effective image-model version.
Why this is distinct from #43965
#43965 tracks the Codex built-in tool contract:
- no caller-visible model selector;
- no effective-model field in the tool result;
- uncertainty about how the Codex route is configured.
This issue tracks a different layer: artifact-level provenance remains unable to distinguish the models even when the caller explicitly selects Flare or Sunburst through the documented API.
Fixing #43965 by adding a Codex selector or response-only effective_model field would not fix this issue. A downloaded image examined later or passed to another system would still carry the same gpt-image / 2.0 C2PA value regardless of which documented 2.5 model generated it.
#44369 was correctly closed into #43965 because it only reproduced the Codex-side ambiguity. The API-controlled comparison here is the differentiating evidence.
Relevant published contracts
OpenAI's Images 2.5 announcement distinguishes:
- Images 2.5 in Codex;
gpt-image-2.5-flarein the API;gpt-image-2.5-sunburstin the API.
https://openai.com/index/introducing-chatgpt-images-2-5/
The official image-generation guide shows callers explicitly selecting gpt-image-2.5-sunburst through POST /v1/images/generations and the Responses image-generation tool:
https://developers.openai.com/api/docs/guides/image-generation
The C2PA 2.4 specification defines an action's softwareAgent as the software or hardware used to perform the action. Its generator-info-map.version is described as a human-readable product version, not specifically an underlying model ID:
https://spec.c2pa.org/specifications/specifications/2.4/specs/C2PA_Specification.html#_softwareagent
This makes gpt-image / 2.0 ambiguous. It may identify a shared media-service software agent or pipeline rather than GPT Image 2 model weights, but OpenAI's image documentation does not define that semantic distinction.
Impact
- Users may incorrectly treat
version: 2.0as proof that GPT Image 2 was used. - Conversely, a caller who explicitly selected Flare or Sunburst cannot verify that fact from the signed artifact.
- Offline provenance consumers cannot distinguish GPT Image 2, 2.5 Flare, and 2.5 Sunburst outputs.
- Integrations such as gateways, audit systems, and qgrid cannot safely derive an effective model from the artifact and must retain separate request/response metadata.
- The identical value has already caused multiple Codex reports to conflate a C2PA software-agent version with the backend model version.
Requested clarification / change
- Document what OpenAI's C2PA
softwareAgent.name = gpt-imageandversion = 2.0identify: the model family, media-service pipeline, claim-generator product, or something else. - Explicitly document that this field is not an effective-model identifier if that is intentional.
- Preferably include a signed, model-specific provenance value for generated images, such as a documented namespaced C2PA action parameter containing the effective model or stable model family.
- If exposing the effective model in the artifact is intentionally unsupported, document the supported verification/audit mechanism and the relationship between requested model, effective model, and C2PA software-agent version.
- Keep Codex and API guidance from presenting
softwareAgent.versionas proof of the model that ran.
Evidence limits
- The observed C2PA value alone does not prove that Codex or the API ran older model weights.
- This report does not claim that Flare or Sunburst selection was ignored.
- The key result is narrower: distinct, explicitly selected API models produce artifacts with the same model-ambiguous signed software-agent identifier.
- The issue is therefore about provenance semantics and auditability, not generation quality or successful image delivery.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the C2PA evidence and the linked OpenAI image-generation and C2PA specifications cited in the issue, then compare the Codex and API provenance contracts. Done means the semantics of softwareAgent are documented, model-specific provenance or its intentional absence is addressed, and guidance no longer treats version 2.0 as proof of the effective model.
Written by the indexing model from the issue text.
Assessment
- Domain
- api, security
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100