subcodex-mcp
Allows Claude Code to use OpenAI Codex as a subagent for code generation, debugging, and implementation tasks with stall detection and auto-recovery.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@subcodex-mcp refactor the auth middleware to use async/await"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
subcodex
MCP server for Claude Code to use OpenAI Codex as a subagent, with stall detection and auto-recovery.
Why subcodex?
Claude Code and Codex have complementary strengths:
Role | Claude Code | Codex |
Analogy | Product Manager who understands requirements | Technical expert in deep focus |
Strengths | Planning, communication, context understanding | Coding, debugging, implementation |
Best at | Breaking down tasks, writing specs, verification | Writing code, fixing bugs, refactoring |
subcodex bridges these two, letting Claude Code orchestrate Codex as a subagent:
Claude Code handles the "what" and "why" (requirements, planning, verification)
Codex handles the "how" (implementation, debugging)
This combination delivers better results than either tool alone.
Related MCP server: codex-bridge
Features
Run Codex sessions with streaming progress
Automatic stall detection (configurable timeout)
Auto-recovery attempts when stalled
Progress logging to
~/.claude/codex-logs/Thread continuation support via
codex-reply
Usage Modes
Configure in your CLAUDE.md to control when subcodex is used:
Mode 1: Full Subagent
All code modifications go through subcodex. Claude only does analysis, planning, and verification.
## Subagent Mode: full-subagent
All code changes must go through `mcp__subcodex__run`:
- Claude: analyze, plan, write Codex Contract, verify results
- Subcodex: all file edits, code generation, refactoringMode 2: Directory-Based
Different directories are handled by different executors.
## Subagent Mode: directory-based
| Scope | Executor |
|-------|----------|
| `apps/web/**/*` | Claude direct |
| `apps/api/**/*`, `packages/**/*` | subcodex |
| docs, config | Claude direct |Mode 3: Fallback
Claude handles everything, but falls back to subcodex on failure.
## Subagent Mode: fallback
- Claude attempts all code changes directly
- After 2 failed attempts → automatically use subcodex
- Windows file lock errors → immediately use subcodexInstallation
From npm
npx subcodex-mcpFrom source
git clone https://github.com/G0d2i11a/subcodex.git
cd subcodex
pnpm install
pnpm buildConfiguration
Add to your Claude Code MCP config (~/.claude.json):
{
"mcpServers": {
"subcodex": {
"command": "npx",
"args": ["-y", "subcodex-mcp"],
"env": {},
"type": "stdio"
}
}
}Or for local development:
{
"mcpServers": {
"subcodex": {
"command": "node",
"args": ["/path/to/subcodex/dist/index.js"],
"env": {},
"type": "stdio"
}
}
}Tools
run
Start a new Codex session.
Parameter | Type | Required | Description |
| string | Yes | The prompt to send to Codex |
| string | No | Working directory for the session |
| string | No | Model override (e.g., 'gpt-5.2') |
| string | No |
|
| string | No |
|
| string | No | Execution level: |
| number | No | Minutes of inactivity before detecting stall (default: 5) |
| number | No | Max auto-recovery attempts when stalled (default: 2) |
reply
Continue an existing Codex conversation.
Parameter | Type | Required | Description |
| string | Yes | The thread ID from a previous session |
| string | Yes | The next prompt to continue the conversation |
| string | No | Execution level for log naming |
| number | No | Minutes of inactivity before detecting stall (default: 5) |
| number | No | Max auto-recovery attempts when stalled (default: 2) |
Stall Detection
The server monitors Codex sessions for activity. If no events are received within the timeout period:
Marks the session as stalled
Attempts auto-recovery by sending a recovery prompt
Retries up to
maxRecoveryAttemptstimesReturns
TIMEOUTstatus withneedsUserInput: trueif all recovery attempts fail
Handling needsUserInput
When the response contains needsUserInput: true, Claude should use AskUserQuestion to ask the user how to proceed. Add this rule to your CLAUDE.md:
## Subcodex Stall Handling
When `mcp__subcodex__run` returns `needsUserInput: true`:
- Use AskUserQuestion to ask the user how to proceed
- Options: retry, skip current task, manual interventionResponse Format
{
"threadId": "abc123...",
"level": "L2",
"content": "Final response from Codex",
"progressLog": "~/.claude/codex-logs/progress-L2-xxx-PASS.log",
"stats": {
"totalItems": 10,
"commands": 3,
"fileChanges": 2,
"mcpCalls": 0,
"usage": {
"input_tokens": 1000,
"output_tokens": 500
}
},
"filesModified": ["create: src/foo.ts", "modify: src/bar.ts"],
"recovery": {
"attempted": false
},
"needsUserInput": false
}When stalled and recovery fails:
{
"threadId": "abc123...",
"level": "L2",
"content": "",
"progressLog": "~/.claude/codex-logs/progress-L2-xxx-TIMEOUT.log",
"recovery": {
"attempted": true,
"attempts": 2,
"recovered": false,
"lastError": "Still stalled after recovery attempt"
},
"needsUserInput": true
}Result Levels
Log files are renamed with result level suffix:
PASS- Success (log file deleted)FAIL- Command or file change failedERROR- Exception occurredTIMEOUT- Stalled and recovery failed
Requirements
Node.js 18+
OpenAI Codex SDK credentials configured
License
MIT
Available Tools
2 toolsTool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 2 tools
The two tools are clearly distinct: 'run' starts a new Codex session, while 'reply' continues an existing one. The descriptions emphasize different purposes, so there is no ambiguity about which tool to use.
Both tools are named with a single lowercase verb ('run' and 'reply'), following a consistent pattern. There is no mixing of naming conventions or unpredictable styles.
With only 2 tools, the server feels thin, especially since it handles session management. However, for the narrow scope of starting and continuing a Codex conversation, the count is reasonable but borderline.
The core workflow of starting and continuing a session is covered, but there are notable gaps such as listing existing sessions, canceling a run, or retrieving status. This prevents full lifecycle coverage.
Maintenance
Related MCP Connectors
Shared memory MCP server for Claude Code, Codex, Gemini CLI and Cursor. Cited, editable.
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
A paid remote MCP for OpenAI Codex memory MCP, built to return verdicts, receipts, usage logs, and a
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server that enables Claude Code to send code and plans for review by OpenAI Codex, returning structured feedback inline.5394 npm27MIT
- AlicenseAqualityDmaintenanceMCP server that lets Claude Code ask GPT Codex for adversarial planning, code review, debugging, research, and risk triage without leaving your project workflow.99 npm2MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that allows Claude Code to interact with the OpenAI Codex CLI.40 npm20MIT
- AlicenseNot gradedqualityDmaintenanceA MCP server that enables Claude Code to delegate coding tasks to Codex via the MCP protocol, with task management, security checks, and result verification.46 npmMIT