Add automatic lifecycle cleanup for completed/idle sub-agents (and unused MCP clients)

Resolved 💬 4 comments Opened Feb 20, 2026 by ginishuh Closed Mar 3, 2026
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

What variant of Codex are you using?

CLI (multi-agent)

What feature would you like to see?

A built-in lifecycle policy so completed/idle sub-agents are automatically closed, and their MCP clients are torn down when no longer needed.

In current multi-agent usage, completed work often leaves long-lived agent/MCP processes behind. Over time this accumulates memory usage and makes long sessions expensive.

Why this matters

In practice, multi-agent sessions can leave many long-lived MCP subprocesses (especially stdio MCPs). For Serena, this can cascade into additional language-server child processes, amplifying memory use.

This appears related to MCP connection sharing/lifecycle concerns discussed in #12333, but this request is specifically about automatic agent closure + MCP teardown policy.

Proposed behavior

  1. Auto-close completed sub-agents by default (or configurable policy).
  2. If an agent is idle for N minutes and has no pending work/messages, auto-close it.
  3. When an agent closes, release/teardown MCP client resources associated with that agent.
  4. Keep explicit opt-out behavior for workflows that want persistent idle agents.

Suggested config knobs

[agents.lifecycle]
auto_close_completed = true
idle_timeout_sec = 300
keep_failed_agents_open = true

[mcp.lifecycle]
shutdown_when_unused = true
unused_ttl_sec = 120

Expected UX

  • Multi-agent runs should not require manual close_agent cleanup for normal cases.
  • Process count should naturally return toward a baseline after tasks complete.
  • Long-running sessions should remain memory-stable.

What steps can reproduce the underlying pain point?

  1. Enable one or more stdio MCP servers (e.g., Serena) in Codex CLI.
  2. Run multi-agent tasks repeatedly / keep multiple active threads.
  3. Observe that completed work still leaves many long-lived agent/MCP processes.

Additional information

Related (not duplicate):

  • #12333 (MCP duplication / sharing pressure in multi-agent runs)
  • #12047 (broader multi-agent UX/DX proposal; includes idle-state ideas)
  • #9902 (TUI sidepanel / manual close affordances)

This issue is focused on default automatic lifecycle cleanup for finished/idle agents and unused MCP clients.

View original on GitHub ↗

4 Comments

github-actions[bot] contributor · 6 months ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #11324

Powered by Codex Action

ginishuh · 6 months ago

Refinement proposal (to reduce risk):

Use state-based auto-close with a grace timeout, and only target agents in completed state.

Suggested policy:

1) Start a close timer only when an agent transitions to completed.
2) Auto-close after completed_ttl_sec (e.g., default 300s).
3) Cancel/reset the timer if new work is assigned before timeout.
4) Do not auto-close running, waiting_for_input, or failed agents by default.
5) On auto-close, release that agent’s MCP client references; if a stdio MCP has no remaining refs, shut it down after a short unused TTL.

This keeps behavior predictable and avoids killing agents that are waiting on user input or need debugging.

kirso · 6 months ago

This is a good proposal, agents get exhaused and without IDs its impossible to restart without forking https://github.com/openai/codex/issues/13006

etraut-openai contributor · 5 months ago

This is a duplicate of #12976.