openai / openai/codex-plugin-cc
Broker process not cleaned up on session exit — no idle timeout
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 33.3k
- Forks
- 2.3k
- PR merge metrics
- No merged PRs in 30d
Description
Bug
The Codex companion app-server broker process (app-server-broker.mjs) persists indefinitely after the Claude Code session that spawned it exits. Found a stale broker (3 processes, ~185 MB) running 5+ hours after the originating session ended.
Root Cause
The plugin has a well-implemented session-lifecycle-hook.mjs with handleSessionEnd() that sends broker/shutdown — but this hook doesn't appear to fire reliably. The broker itself has no idle timeout — it only shuts down upon receiving an explicit broker/shutdown RPC or SIGTERM/SIGINT.
When the session-end hook fails to fire (or the session crashes/is killed), the broker runs forever.
Suggested Fix
Add an idle timeout to app-server-broker.mjs as a defensive fallback. If no RPC messages are received for N minutes (e.g., 15-30), the broker should self-terminate. This complements the existing session-end hook rather than replacing it.
The lifecycle hook approach is correct, but defense-in-depth with an idle timeout would prevent orphaned brokers when the hook doesn't fire.
Environment
- Ubuntu 22.04, Claude Code CLI
@openai/codex-plugin-ccv1.0.2- Broker was spawned for
intake-portalproject, outlived the session by 5+ hours
Workaround
Manually killing the broker processes after session exit.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with app-server-broker.mjs and compare its shutdown behavior with session-lifecycle-hook.mjs, especially handleSessionEnd(). Confirm the broker terminates after the configured period without RPC messages while preserving the existing broker/shutdown and SIGTERM/SIGINT shutdown paths.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 74/100