You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
J5's spawn_agent shares its name with Codex's built-in tool #475
J5's spawn_agent tool has the same name as a tool built into Codex. On a Codex thread, a plain request to "use the spawn_agent tool" runs Codex's own tool. That creates a provider Subagent, not a J5 Peer Agent.
Seen on 2026-10-07, while testing the Squadron-fold stack (#456) on a Codex thread:
Prompt: "use the spawn_agent tool"
Result: the app showed a "1 subagent" card, and the agent wrote "Used spawn_agent to create harness_peer_2", describing it as a new peer agent.
What it actually was: a Subagent. It had no thread of its own in the sidebar and no participant_id.
A prompt that named the server worked: "Use the t3-code MCP server's spawn_agent tool to start a Peer Agent. Do not use your native spawn_agent or any collaboration tool." That returned a participant_id and a nested thread.
So J5's tool is attached and works. The bare name is ambiguous, and Codex resolves it to its own tool. The agent's reply also called the result a "peer agent", so the person has no cue that they got the wrong kind.
Why it matters
A Subagent can't be messaged, doesn't appear on the Fleet page, and ends with its parent. Someone who asked for a Peer Agent and got a Subagent may not notice until they look for it.
It affects every Codex thread. Claude isn't affected the same way: its native tool has a different name, and J5's shows as mcp__t3-code__spawn_agent.
What exists today
apps/server/src/provider/T3OrchestrationInstructions.ts already tells agents that Codex's native spawn_agent and collaboration tools create Subagents, not a Crew (added in #393 for Crew requests). That steering didn't stop this case, where the person named the tool directly.
Options
Rename J5's tool to something Codex has no built-in for, such as spawn_peer_agent. That removes the ambiguity at the source. It touches the tool name, its pre-approval entry, the agent instructions, the docs, and the web renderer that recognizes the tool call. Old threads keep the old name in their history.
Steer harder for Codex. Have the instructions say that a request naming spawn_agent means the t3-code tool unless the person asks for a subagent. It's cheaper, but it relies on the model following it, and the existing steering already failed once.
Notes
Codex's multi-agent tools are reported as going stable in Codex CLI rust-v0.145.0 (late July 2026). I didn't confirm when the name first shipped, or which name came first.
Problem
J5's
spawn_agenttool has the same name as a tool built into Codex. On a Codex thread, a plain request to "use the spawn_agent tool" runs Codex's own tool. That creates a provider Subagent, not a J5 Peer Agent.Seen on 2026-10-07, while testing the Squadron-fold stack (#456) on a Codex thread:
spawn_agentto createharness_peer_2", describing it as a new peer agent.participant_id.participant_idand a nested thread.So J5's tool is attached and works. The bare name is ambiguous, and Codex resolves it to its own tool. The agent's reply also called the result a "peer agent", so the person has no cue that they got the wrong kind.
Why it matters
mcp__t3-code__spawn_agent.What exists today
apps/server/src/provider/T3OrchestrationInstructions.tsalready tells agents that Codex's nativespawn_agentand collaboration tools create Subagents, not a Crew (added in #393 for Crew requests). That steering didn't stop this case, where the person named the tool directly.Options
spawn_peer_agent. That removes the ambiguity at the source. It touches the tool name, its pre-approval entry, the agent instructions, the docs, and the web renderer that recognizes the tool call. Old threads keep the old name in their history.spawn_agentmeans thet3-codetool unless the person asks for a subagent. It's cheaper, but it relies on the model following it, and the existing steering already failed once.Notes
rust-v0.145.0(late July 2026). I didn't confirm when the name first shipped, or which name came first.j5/main, though nothing in the stack changes tool names or steering.🤖 Generated with Claude Code