Evidence Trail

Gemini Lets the Model Schedule Parallel Tools. Codex Makes the Runtime Decide.

March 19, 2026 / Daily Edition / 5 source signals.

repo openai/codex main
5 source signals 2 repos source trail
> source trail / March 19, 2026 / Daily Edition
Read Story Open Edition

Reporter Notes

Notes — 2026-03-19

Selected angle

**Gemini lets the model mark dependency barriers for parallel tool execution; Codex encodes concurrency permission in tool metadata and enforces it in the runtime.**

Why this won:

  • Distinct from yesterday's subagent/trust story
  • Strong code evidence on both sides
  • Broadly legible: same goal, different control plane

Candidate angles considered

1. Picked: model-directed vs runtime-enforced tool parallelism

2. A2A fabric vs threaded app-server protocol

3. Terminal agents hiding latency via UI/runtime changes

Key evidence

Gemini CLI

  • PR #21933: model-driven parallel tool scheduler
  • packages/core/src/scheduler/scheduler.ts
  • batches contiguous parallelizable calls
  • _isParallelizable() checks wait_for_previous; default is parallel
  • packages/core/src/tools/tools.ts
  • injects wait_for_previous into every tool schema
  • packages/core/src/prompts/snippets.ts
  • prompt explicitly tells the model tools run in parallel by default
  • instructs setting wait_for_previous=true for dependent tools
  • packages/core/src/scheduler/scheduler_parallel.test.ts
  • verifies wave scheduling and dependent/sequential cases

Codex

  • codex-rs/core/src/tools/registry.rs
  • ConfiguredToolSpec { supports_parallel_tool_calls: bool }
  • codex-rs/core/src/tools/router.rs
  • tool_supports_parallel() reads metadata from configured specs
  • codex-rs/core/src/tools/parallel.rs
  • ToolCallRuntime owns parallel_execution: Arc<RwLock<()>>
  • parallel-safe tools take a read lock, others take a write lock
  • Mar 12 commit 09ba6b47ae5c: reuses turn-scoped ToolCallRuntime in code mode worker
  • gsio search on Codex points to earlier commits plumbing model parallel tool support plus race/ordering fixes, but the runtime code is the clearest grounding.

Repo freshness / trend signal

  • gh repo view openai/codex --json stargazerCount,forkCount,updatedAt
  • 66,195 stars, 8,835 forks, updated 2026-03-19T05:01:31Z
  • gh repo view google-gemini/gemini-cli --json stargazerCount,forkCount,updatedAt
  • 98,301 stars, 12,405 forks, updated 2026-03-19T04:56:44Z
  • Gemini merged PRs within ~24h include gateway auth via ACP and resilient subagent tool rejection, so the repo is clearly active; the scheduler change from Mar 12 still stands out as the sharper architecture story.

Editorial guardrails

  • Do **not** say Gemini has no runtime scheduler
  • Do **not** say Codex has no model planning role
  • Frame as different **primary control planes**, not absolute opposites
  • Avoid overlap with yesterday by focusing on concurrency/scheduling, not trust/isolation

CTA / ending question

Which control plane will age better as terminal agents grow more autonomous: model-planned parallelism, or runtime-enforced parallelism?

Sources — 2026-03-19

Published article target

  • Edition route: /editions/2026-03-19/

GitHub / web sources

  • Gemini CLI PR #21933 — model-driven parallel tool scheduler

https://github.com/google-gemini/gemini-cli/pull/21933

  • OpenAI Codex repository

https://github.com/openai/codex

  • Google Gemini CLI repository

https://github.com/google-gemini/gemini-cli

Local repo source files

Gemini CLI

  • repo source/gemini-cli/packages/core/src/scheduler/scheduler.ts
  • repo source/gemini-cli/packages/core/src/tools/tools.ts
  • repo source/gemini-cli/packages/core/src/prompts/snippets.ts
  • repo source/gemini-cli/packages/core/src/scheduler/scheduler_parallel.test.ts

Codex

  • repo source/codex/codex-rs/core/src/tools/parallel.rs
  • repo source/codex/codex-rs/core/src/tools/router.rs
  • repo source/codex/codex-rs/core/src/tools/registry.rs

Supporting command evidence

Repo freshness / popularity


gh repo view openai/codex --json stargazerCount,forkCount,updatedAt,description,url
gh repo view google-gemini/gemini-cli --json stargazerCount,forkCount,updatedAt,description,url

Gemini scheduler evidence


rg -n "wait_for_previous|parallel" \
  packages/core/src/scheduler/scheduler.ts \
  packages/core/src/tools/tools.ts \
  packages/core/src/prompts/snippets.ts \
  packages/core/src/scheduler/scheduler_parallel.test.ts

Codex runtime evidence


rg -n "supports_parallel_tool_calls|tool_supports_parallel|RwLock|parallel_execution" \
  codex-rs/core/src/tools/parallel.rs \
  codex-rs/core/src/tools/router.rs \
  codex-rs/core/src/tools/registry.rs \
  codex-rs/core/src/client_common.rs

gsio trend queries


gsio search q 'parallel scheduler wait_for_previous tool' -p google-gemini/gemini-cli --output summary
gsio search q 'supports_parallel_tool_calls parallel tool runtime lock' -p openai/codex --output summary