openai / openai/codex

Bug report: Sol subagents inherit GPT-6 identity instructions; serving-model provenance is unavailable in inspected records

Open
#44,598 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app bug model-behavior subagent
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What version of the Codex App are you using (From “About Codex” dialog)?

26.903.61454

What subscription do you have?

Pro

What platform is your computer?

Microsoft Windows NT 10.0.19045.0 x64

What issue are you seeing?

Bug report: Sol subagents inherit GPT-6 identity instructions; serving-model provenance is unavailable in inspected records

Summary

In Codex desktop on Windows, three subagents explicitly requested as gpt-5.6-sol answered “What model are you?” by identifying as GPT-6. Their saved base instructions contain “You are Codex, an agent based on GPT-6.” Session configuration, turn metadata, and sampling-request traces consistently specify gpt-5.6-sol for all three identity tests and three earlier sentence tests.

This is an observed identity-instruction inconsistency and a model-provenance observability gap. It is not evidence that the model override was ignored, that GPT-6 actually served these responses, or that reinforcement learning caused the answers.

Environment and scope

  • Codex desktop, Windows, local tasks.
  • Tests recorded September 10, 2026 UTC (September 9 in America/Phoenix).
  • Parent task: 01a08849-a34c-71f2-9de1-141f82aa899c; parent model recorded as gpt-6-astra.
  • Explicit child model: gpt-5.6-sol; fresh-context option: fork_turns: "none".
  • Three identity tests; three prior sentence tests corroborate request-model metadata.
  • Exact desktop build was not captured in this audit; developers should resolve it from diagnostic records if available.

Reproduction

  1. From a GPT-6 Astra parent task with subagent support, explicitly request three GPT-5.6 Sol subagents.
  2. For each child, invoke collaboration.spawn_agent with the following arguments, using distinct task names:
{
  "task_name": "sol_identity_repro_1",
  "model": "gpt-5.6-sol",
  "fork_turns": "none",
  "message": "What model are you?"
}
  1. Collect the completed child answers.
  2. Compare each child's saved base instructions, turn model, request trace model, and any server-returned model metadata. Do not treat the generated answer as a provenance check.

Observed versus expected

Check Observed Expected
Identity answer One child: “I’m GPT-6, operating as Codex.” Two: “I’m Codex, based on GPT-6.” The assistant accurately distinguishes its Codex role from the configured model and the limits of runtime verification.
Saved identity instruction GPT-6-specific sentence in all six child sessions Model-neutral shared identity, or model-specific instructions correctly resolved for the child.
Client model records All six specify gpt-5.6-sol in session, turn, and sampling-request metadata Preserve this consistency.
Serving-model evidence Response IDs and usage retained; no server-returned model field found in inspected records Expose requested model and provider-reported serving model separately, with explicit unknown status where unavailable.

Evidence for provider-side investigation

Child Task ID Response ID
sol_model_check_1 01a08a05-37d4-7073-b69d-f78fa17adca7 resp_0494098b1e042a38016aa24f29c8e487d0abf4a5f1c71fbc90
sol_model_check_2 01a08a05-4eee-71a3-b831-a5709d10cc04 resp_0aad90bdfa4781f9016aa24f2f76fc87d0bf0f4191026f668e
sol_model_check_3 01a08a05-665a-7933-a4f9-ca6a1f559104 resp_0084429608f21bd9016aa24f35b49487d0ab817eab76bdc9e3

The accompanying audit records all six runs, timestamps, turn IDs, request-log row IDs, rollout line references, and source hashes. These are correlated client records, not independent backend attestations. Source hashes support later file comparison; they do not authenticate backend execution.

Proposed engineering changes

  1. Inspect child prompt assembly when a model override is applied. Remove the fixed model-family identity from shared role text. A suitable shared opening is “You are Codex, an AI coding assistant.” This is a proposed product change, not a change applied to the current app.
  2. Provide structured model provenance with separate requested-model, resolved client-model, provider-reported model, response ID, and fallback/reroute information. Preserve provenance per response, including retries and model changes. Never populate a provider-reported field by copying the requested model when provider evidence is absent.
  3. Expose that metadata in subagent details and diagnostic exports so users do not need to inspect local databases or ask a model to identify itself. Label missing serving-model metadata as unavailable.
  4. Resolve the three response IDs above against provider-side traces and confirm the serving model and any rerouting. Report the result with its provenance.

Regression and acceptance checks

  • A parent/child model mismatch does not inject the parent's model-family identity into the child's shared instructions.
  • Verify prompt assembly for fresh children and supported history-inheritance paths; explicit unsupported override combinations return a clear error.
  • Explicit Sol selection reaches the sampling request as Sol.
  • Mock provider-reported model differences and verify they remain visible; missing provider fields remain unknown.
  • Retries, fallbacks, resumed tasks, and model switches retain response-specific provenance.
  • A model-identity question distinguishes configured model from provider-reported execution information. Do not use a generated sentence alone as the pass condition.
  • Diagnostic exports contain only necessary provenance, without credentials, raw headers, or unrelated task content.

Attachments and limits

  • model-provenance.md: readable six-run evidence audit.
  • model-provenance.json: structured local evidence; contains local source paths and task identifiers for investigation.
  • Raw sessions, complete prompts, authentication material, and unrelated research transcripts are not included in this report.

The prompt inconsistency is directly observed. Its causal role in the generated identity answers is a strong explanation, not an ablation-tested result. No app-source patch or provider-side verification has been performed. This report has been prepared locally and has not been submitted.

What steps can reproduce the bug?

Feedback ID: 01a08849-a34c-71f2-9de1-141f82aa899c

What is the expected behavior?

Sub agents should respond with their correct underlying models.

Additional information

No response

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 with collaboration.spawn_agent and the child prompt-assembly path, then trace session, turn, sampling-request, and provider-response metadata. Compare requested, resolved, and provider-reported models for fresh children, retries, and fallbacks; done means identity instructions are model-neutral and diagnostic records preserve unknown serving-model status without exposing sensitive data.

Written by the indexing model from the issue text.

Assessment

Domain
ai, backend-api-design, observability
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.