openai / openai/codex

C2PA provenance does not distinguish Codex, GPT Image 2.5 Flare, and Sunburst outputs

Open
#45,452 2 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

documentation imagen
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-flare in the API;
  • gpt-image-2.5-sunburst in 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

https://spec.c2pa.org/specifications/specifications/2.4/specs/C2PA_Specification.html#_generator_info_map

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.0 as 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
  1. Document what OpenAI's C2PA softwareAgent.name = gpt-image and version = 2.0 identify: the model family, media-service pipeline, claim-generator product, or something else.
  2. Explicitly document that this field is not an effective-model identifier if that is intentional.
  3. 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.
  4. 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.
  5. Keep Codex and API guidance from presenting softwareAgent.version as 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.