Why Codex Still Beats Claude Code for Complex Python Monoliths

Over the last year, a developer working on a complex Python monolith has primarily used Codex. After a month testing Claude Code with Opus 4.6 and 4.7, they still prefer Codex for this codebase. The application is not a simple CRUD server — it has a newer DDD-ish layer, older well-structured code, and fragile legacy spaghetti code. The team avoids rewriting old parts unless necessary.
Key Advantages of Codex
- Harness-engineering principles: Codex reliably follows the harness-engineering workflow without explicit instructions. Claude only does so if
AGENTS.mdcontains a directive like “Read exec_plan.md and follow it.” - Reuses existing tools and patterns: Claude more often creates new tools instead of searching the codebase for existing ones. In a codebase with many project-specific helpers, reuse is critical.
- Better planning and context awareness: Claude frequently reads too little before placing new functionality. The developer had to repeatedly correct:
“Put this functionality in module A instead, not in the controller.”
“Do not construct the response object using the statuses you sent in the request. The API already returns the updated object — use that response.”
“Validate it in the same module that owns this boundary.”
Codex more often notices missing context and asks clarifying questions before making architectural changes.
Where Claude Excels
For frontend work, Opus 4.6 was much better than Codex 5.3 and GPT-5.4. The developer currently prefers Claude for UI tasks. They have not tested GPT-5.5 on UI-heavy work yet.
Tool Configuration
Both LLMs use a single shared skill: commands to start and stop Docker Compose and run tests inside the container.
This is not a benchmark, just daily-use experience from one production codebase.
📖 Read the full source: HN AI Agents
👀 See Also

TOON MCP server reduces tool result tokens by 30-60% in OpenClaw
An MCP server that compresses structured JSON tool results into the TOON format can cut token usage by 30-60% for tabular data like database queries and API responses, helping delay context window compaction in OpenClaw sessions.

llm-idle-timeout Fires at 2 Minutes on N100/WSL2 Despite timeoutSeconds Setting
A user reports that the idle watchdog in OpenClaw fires after 2 minutes on N100/WSL2 hardware, ignoring the timeoutSeconds=300 setting, due to slow gateway startup (45+ seconds) and no configurable noOutputTimeoutMs.

MCP Server Connects Claude to CellarTracker Wine Inventory
A developer built an MCP server that connects Claude directly to CellarTracker accounts, allowing conversational queries about wine inventory, tasting notes, purchase history, and drinking windows without manual CSV exports.

Claude Desktop + Blender via MCP: Real-Time 3D Workflow Closes the Feedback Loop
An open-source Blender add-on runs an MCP server inside Blender, letting Claude Desktop inspect scenes, create objects, render images, and read results—closing the script-paste feedback loop.