# fix\(mcp\): launch parallel children before waiting · PR \#23241 · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/pull/23241)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

State: open

Source repository: pingdotgg/t3code

Source branch: fix/issue-23191

Target branch: main

Head commit: 5f90bd3add7ede32d1fa75c2c298a324d4629d45

[Discussion and reviews](https://git.cafe/pingdotgg/t3code/pull/23241)

[Commits](https://git.cafe/pingdotgg/t3code/pull/23241/commits?format=markdown)

[Files changed](https://git.cafe/pingdotgg/t3code/pull/23241/diffs?format=markdown)

## Description

---

## Problem

Submitting two `delegate_task` calls with `mode:"wait"` together can delay the second launch until the first wait returns because the provider's MCP client serializes the calls. The guidance did not explain this or require launch confirmation before reporting a child as running.

## Change

Tell agents to launch all parallel children with `mode:"async"`, retain the returned task IDs, and confirm launch responses before describing children as running. Apply the guidance to orchestration instructions, the tool description, and the mode parameter description.

## Scope and approval

Fixes #23175
GitCafe: https://git.cafe/pingdotgg/t3code/issues/23191
Triaged bug via the automated issue flow. Guidance only; no scheduling or wire-schema changes.

## Verification

- `vp test run apps/server/src/provider/CodexDeveloperInstructions.test.ts`: 16 tests passed on the final head, including the instruction byte limit and delivery order.
- Scoped lint, formatting, and `git diff --check`: passed.
- Two independent diff reviews: MERGE, no confirmed findings.
- Runtime probe: Codex `gpt-6.1-sol`; two batched 10-second waits with children running `sleep 15`. B's tool call started 74 ms after A's wait returned. With async launches, both responses confirmed running task IDs within 795 ms. These baseline probes used the installed host.
- Fixed current-main dev build: actual provider context and MCP `tools/list` expose all three updated guidance surfaces; two async child launches completed before status checks.

[Runtime evidence index](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cfd3f754d2d8b244/issue-23191-evidence-index.md), [sanitized fixed-build transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9393e2d08280d07c/issue-23191-dev-transcript.json), and [proof matrix](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b91b924e8d1fed2b/issue-23191-proof-audit-pass1.md).

No visual paths changed; the visual fixture matrix is empty. No new unit test was added: the serialization occurs in the provider's MCP client before the second request reaches T3, and a source-string assertion would only repeat the guidance. Runtime verification used Codex; Claude direct parallel tool use was not independently rerun.

Models: GPT-6.1-Sol and Claude Opus 5.5. Harness: T3 Code through Codex and Claude Code.


<!-- gc2-pull-create:ebf7b2a040a73b30e0f7af9dbd2c4c9678b73a74ef7c9f519b746b4432d74176 -->
