Silent Failure: How a Missing Provider ID Broke GPT-5.5 Hands in OpenClaw — And How We Traced It
A single incomplete Set in a plugin’s harness file silently disabled all GPT-5.5 tool execution. No error message. No warning. Just silent fallback to a weaker model. Here is the full trace, the fix, and a template you can use to test your own OpenClaw setup before you rely on it.
📋 TL;DR
OpenClaw 5.27’s built-in Codex plugin bundles its own copy of harness.js with a hardcoded Set of only one provider ID: "codex". Any request using openai-codex/gpt-5.5 or openai/gpt-5.5 silently failed because the provider was not recognised. The core OpenClaw harness had the full set — but the plugin’s bundled copy overrode it.
Result: GPT-5.5 could think but could not use tools. No error, no log, just silent fallback. Our team of three spent six hours tracing through five layers of bundled JavaScript to find the root cause.
🔍 The Bug
OpenClaw routes AI model requests through a “harness” that determines whether a model is allowed to use the Codex runtime (which gives the model hands — shell execution, file access, browser control, etc.). The harness checks if the model’s provider ID is in an allowed set.
The Codex plugin (@openclaw/codex) bundles its own harness.js at:
~/.openclaw/extensions/codex/dist/harness.js
Inside that file, the default provider set was:
const DEFAULT_CODEX_HARNESS_PROVIDER_IDS = new Set(["codex"]);
Only "codex". Missing:
"openai-codex"— the actual provider ID used by GPT-5.5 via Codex"openai"— the standard OpenAI provider
The core OpenClaw harness file (dist/harness-CyCnEyfS.js) had the correct full set — but the plugin’s bundled copy was loaded instead, completely overriding it.
🧭 How We Found It
This was not a simple grep job. The bug sat behind five layers of bundled, minified JavaScript. Here is the actual trace path our team followed:
Layer 1: "provider is not one of: codex" error in runtime
→ Layer 2: runtime-plugin-Cfk1SXkA.js — fallback path rejects provider
→ Layer 3: harness-CyCnEyfS.js — has full Set but never loaded
→ Layer 4: Plugin system loads extension harness instead of core
→ Layer 5: ~/.openclaw/extensions/codex/dist/harness.js
→ Line: DEFAULT_CODEX_HARNESS_PROVIDER_IDS = new Set(["codex"])
→ 🎯 ROOT CAUSE: Missing "openai-codex" and "openai"
We spent time patching layers 2 and 3 first — adding the missing IDs to the core harness and the runtime plugin. Those patches had zero effect because the plugin system loaded the extension’s own copy at layer 5.
A second AI agent (running on a separate sandboxed instance) independently identified the ACP protocol mismatch at layer 1. The two findings converged at layer 5 — the plugin harness.
🔧 The Fix
Change the default provider set in the plugin’s harness to include all three provider IDs:
// BEFORE (broken — only "codex")
const DEFAULT_CODEX_HARNESS_PROVIDER_IDS = new Set(["codex"]);
// AFTER (fixed — all three providers)
const DEFAULT_CODEX_HARNESS_PROVIDER_IDS = new Set(["codex","openai-codex","openai"]);
⚠️ Important: This patch is local only. Every npm update -g openclaw or npm update -g @openclaw/codex will overwrite this file. You must re-apply the patch after every update.
Also clear the V8 compile cache after patching: rm -rf /tmp/node-compile-cache/openclaw/
📦 Copy-Paste Bug Report Template
Use this template to report OpenClaw harness bugs. Fill in the blanks and submit to the OpenClaw GitHub issues or your internal tracker.
---
title: "OpenClaw Codex harness DEFAULT_CODEX_HARNESS_PROVIDER_IDS missing providers"
severity: high
component: @openclaw/codex (extension harness)
affected_versions: ">=5.27-beta.1"
date_reported: 2026-05-29
reporter: WM IT Solutions / Mismoosh Ltd
---
## Summary
The bundled harness.js in the @openclaw/codex extension
only includes "codex" in DEFAULT_CODEX_HARNESS_PROVIDER_IDS.
Requests using "openai-codex" or "openai" providers
silently fail and fall back to a non-hands model.
## Impact
- GPT-5.5 via openai-codex/gpt-5.5 cannot use tools
- No error message is shown to the user
- Silent fallback to weaker model without notification
- Plugin harness overrides core harness silently
## Root Cause
File: ~/.openclaw/extensions/codex/dist/harness.js
Line: DEFAULT_CODEX_HARNESS_PROVIDER_IDS = new Set(["codex"])
Missing: "openai-codex", "openai"
## Fix
Change to: new Set(["codex","openai-codex","openai"])
## Reproduction
1. Configure model: openai-codex/gpt-5.5 with agentRuntime: "codex"
2. Send any tool-use request
3. Observe: tools not available, silent fallback occurs
## Workaround
Patch the harness.js file manually after every update.
---
📋 Click the box above to select all. Paste into GitHub issues, internal trackers, or email.
🤖 How AI Can Test This Before You Rely On It
If you are running OpenClaw with any AI model — whether it is a cloud model like GPT-5.5 or Gemini, a local model via Ollama, or a specialised agent like Hermes — test tool access before you trust it. Here is how:
# Step 1: Check which model is active
openclaw status
# Step 2: Test if the model has hands (tool access)
# In your OpenClaw chat, ask:
# "List your available tools"
# "Run: echo hello"
# "Read a file from the workspace"
# Step 3: If tools are missing or commands fail silently:
# Check the harness provider set:
grep -r "DEFAULT_CODEX_HARNESS_PROVIDER_IDS"
~/.openclaw/extensions/codex/dist/harness.js
# Step 4: If the Set only has "codex":
# Patch it:
sed -i 's/new Set(["codex"])/new Set(["codex","openai-codex","openai"])/'
~/.openclaw/extensions/codex/dist/harness.js
# Step 5: Clear V8 compile cache and restart
rm -rf /tmp/node-compile-cache/openclaw/
systemctl --user restart openclaw-gateway.service
# Step 6: Re-test
# Ask the model again: "List your available tools"
Using a cloud AI to debug: You can ask GPT-5.5, Gemini, or Claude to check your OpenClaw harness configuration by providing them with the output of openclaw status and the contents of your harness files.
Using OpenClaw itself: Spawn a test subagent with a simple tool-use task. If it completes, hands work. If it falls back or produces no tool calls, the harness is blocking.
Using Hermes or similar sandboxed agents: Run an isolated test outside OpenClaw’s tool chain. If the same model works in a sandbox but not through OpenClaw, the problem is in the harness/routing layer, not the model.
⏱️ The Six-Hour Trace
A team of three — a senior systems engineer, a healthcare and operations specialist, and an AI operations agent — traced this bug from symptom to root cause in six hours on 28-29 May 2026.
The first two hours went to patching the wrong layers. The core harness file looked right. The runtime plugin looked fixable. Neither patch worked. The AI agent independently identified the ACP protocol mismatch — a different symptom of the same root cause — and that clue pushed the investigation to the extension plugin layer.
Hours three through five were spent reading bundled, minified JavaScript across five files, mapping call paths, and understanding how the extension system overrides the core harness.
Hour six: the one-line fix. Then two hours of verification, defensive patching, and documentation. Total: eight hours from first symptom to verified fix. The actual fix was one line. Finding it took everything we had.
⚠️ Other Bugs Found in 5.27
While tracing the harness bug, we found and patched two additional issues:
Bug 2 — ACP protocol detection mismatch
File: dist/runtime-ClyQRfts.js
The function isCodexAcpCommand() only recognised @zed-industries/codex-acp but the built-in Codex uses @agentclientprotocol/codex-acp. Patched to recognise both.
Bug 3 — Gemini CLI flag change
File: dist/cli-backend-BtKnTf6Z.js
Gemini CLI v0.37.0 dropped the --skip-trust flag and replaced it with --yolo. OpenClaw was still passing the old flag. Patched to use the new one.
📝 Key Lessons
- Plugin code overrides core code. If an extension bundles its own copy of a core module, patching the core version does nothing. Always check extension directories first.
- Silent failures are the worst failures. No error message, no log entry — just a weaker model taking over without telling you. Test tool access explicitly after every update.
- Two heads are better than one. An independent AI agent caught a symptom we initially dismissed. Converging from two different angles found the root cause faster than either angle alone.
- Local patches need maintenance. Every npm update will overwrite these fixes. Document what you patched, where, and why. Re-apply after every update.
- Test before you trust. After any OpenClaw update, run a simple tool-use test. One minute of testing beats six hours of debugging.
Need Help With AI Debugging?
WM IT Solutions provides specialist AI operations support — from OpenClaw setup and debugging to custom AI agent deployment, cloud model integration, and hands-on troubleshooting. If your AI stack is silently failing or your tools are not working as expected, we can help trace and fix it.
Published: 29 May 2026 | Author: Mismoosh Ltd / WM IT Solutions | Category: Bug Report, AI Operations
OpenClaw is open-source software. This bug report is provided to help the community. The patches described are local workarounds until official fixes are released. Always test after applying any patch.
🔧 Full Repair Board Available
This blog post is the story. For the full diagnostic and repair resource — with bug report template, AI investigation prompt, proof checklist, and patch instructions — see the dedicated repair board:
