openai / openai/codex

multi_agent_v1__spawn_agent can deliver work into an existing durable task and change its model

Open
#46,061 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Summary

A multi_agent_v1__spawn_agent call intended to create a temporary subagent instead delivered the assignment into an existing user-owned durable task.

The durable task's model was changed from gpt-6-astra to gpt-5.6-sol as a result.

Environment
  • Codex Desktop on macOS
  • Local Codex CLI: 0.154.0
  • Affected persisted task metadata was created under CLI 0.153.4
  • Parent task: gpt-5.6-luna, effective Multi-Agent V1
  • Existing durable task: initially gpt-6-astra, effective Multi-Agent V2
  • No local multi_agent_v2 configuration change was made
Reproduction

From a user-owned task using Multi-Agent V1, invoke:

{
  "model": "gpt-5.6-sol",
  "reasoning_effort": "medium",
  "fork_context": true,
  "message": "Perform a bounded, read-only critique. Do not edit files."
}

Expected behavior:

  • A new subordinate agent is created.
  • The child has its own agent/task identity.
  • Existing user-owned tasks are unaffected.
  • The requested model applies only to the new child.

Actual behavior:

  • The assignment appeared inside an existing durable user-owned task.
  • The UI displayed “Sent by ChatGPT from another task.”
  • The existing task's model changed from gpt-6-astra to gpt-5.6-sol.
  • No explicit create_thread or send_message_to_thread call was made by the parent.
Expected safeguards

spawn_agent should never resolve to, reuse, or mutate an existing user-owned durable task.

The system should:

  1. Create a new child identity for every spawn.
  2. Reject any destination that is not a valid child-agent record owned by the current parent.
  3. Keep model overrides scoped to the newly created child.
  4. Surface a clear error if child creation cannot be completed.
  5. Preserve the existing task's model and lifecycle state.
Evidence
  • Parent tool call requested gpt-5.6-sol.
  • Existing task metadata shows gpt-6-astra before the delegation and gpt-5.6-sol afterward.
  • The target task was an existing durable user-owned task, not a newly created subagent.
  • The UI showed the cross-task delegation marker.
  • No project files were changed.
Related issues
  • #38687 — subagents can access task-management controls and create or message user-owned durable tasks.
  • #34821 — V2 subagents can resume with the parent's model.
  • #32031 — V2 spawn model overrides and fork behavior are unreliable.

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 tracing the multi_agent_v1__spawn_agent entry point and how it resolves child identities and destinations. Reproduce the request from the issue, then verify that each spawn creates a child-owned identity, rejects existing user-owned tasks, scopes model overrides to the child, and preserves the existing task.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
authorization, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.