Add automatic lifecycle cleanup for completed/idle sub-agents (and unused MCP clients)
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
- Auto-close completed sub-agents by default (or configurable policy).
- If an agent is idle for N minutes and has no pending work/messages, auto-close it.
- When an agent closes, release/teardown MCP client resources associated with that agent.
- 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_agentcleanup 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?
- Enable one or more stdio MCP servers (e.g., Serena) in Codex CLI.
- Run multi-agent tasks repeatedly / keep multiple active threads.
- 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.
4 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Refinement proposal (to reduce risk):
Use state-based auto-close with a grace timeout, and only target agents in
completedstate.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, orfailedagents 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.
This is a good proposal, agents get exhaused and without IDs its impossible to restart without forking https://github.com/openai/codex/issues/13006
This is a duplicate of #12976.