Summary
On openai-codex/gpt-5.5 (and openai-codex/gpt-5.4), the xhigh thinking level is not advertised by /think and typed directives like /think xhigh get remapped to high with the message:
Thinking level set to high (xhigh not supported for openai-codex/gpt-5.5).
This contradicts both the upstream source code and the published documentation, and is a regression from v2026.4.22 (where xhigh was correctly available for openai-codex/gpt-5.4* — gpt-5.5 did not exist in that version).
Why this is a regression, not "expected behavior"
Source code says xhigh should be supported
extensions/openai/openai-codex-provider.ts at tag v2026.4.23, lines 103-112:
const OPENAI_CODEX_XHIGH_MODEL_IDS = [
OPENAI_CODEX_GPT_55_MODEL_ID, // "gpt-5.5"
OPENAI_CODEX_GPT_55_PRO_MODEL_ID, // "gpt-5.5-pro"
OPENAI_CODEX_GPT_54_MODEL_ID, // "gpt-5.4"
OPENAI_CODEX_GPT_54_PRO_MODEL_ID, // "gpt-5.4-pro"
OPENAI_CODEX_GPT_54_MINI_MODEL_ID, // "gpt-5.4-mini"
OPENAI_CODEX_GPT_53_MODEL_ID, // "gpt-5.3"
"gpt-5.2-codex",
"gpt-5.1-codex",
] as const;
And at lines 474-478, the provider's resolveThinkingProfile unconditionally adds xhigh when the modelId matches any entry in this list:
resolveThinkingProfile: ({ modelId }) => ({
levels: [
{ id: "off" }, { id: "minimal" }, { id: "low" },
{ id: "medium" }, { id: "high" },
...(matchesExactOrPrefix(modelId, OPENAI_CODEX_XHIGH_MODEL_IDS)
? [{ id: "xhigh" as const }]
: []),
],
}),
Documentation says xhigh should be supported
From docs.openclaw.ai/tools/thinking:
xhigh → "ultrathink+" (GPT-5.2+ and Codex models, plus Anthropic Claude Opus 4.7 effort)
openai-codex/gpt-5.4 and openai-codex/gpt-5.5 are both (a) GPT-5.2+ generation and (b) served via Codex OAuth, so they match both phrasings.
v2026.4.22 advertised xhigh for openai-codex/gpt-5.4*
User was on v2026.4.22 immediately before upgrading, and /think for openai-codex/gpt-5.4 listed xhigh as an option. After upgrading to v2026.4.23, /think for the same model no longer lists xhigh. v2026.4.22's XHIGH list (same file, same path) was:
const OPENAI_CODEX_XHIGH_MODEL_IDS = [
OPENAI_CODEX_GPT_54_MODEL_ID,
OPENAI_CODEX_GPT_54_PRO_MODEL_ID,
OPENAI_CODEX_GPT_54_MINI_MODEL_ID,
OPENAI_CODEX_GPT_53_MODEL_ID,
OPENAI_CODEX_GPT_53_SPARK_MODEL_ID,
"gpt-5.2-codex",
] as const;
So the list expanded in v4.23 (added 5.5 + 5.5-pro on top of existing 5.4 family), but in practice none of the entries produce xhigh in the live profile query.
Reproduction
Environment:
- OpenClaw 2026.4.23 (a979721), Linux VM, Node v24.14.0, npm 11.9.0
- Primary agent model:
openai-codex/gpt-5.5 via Codex OAuth profile
openclaw plugins list shows the openai plugin as loaded
- Chat via primary model works normally (so the provider is fully functional for chat)
Steps:
- Set
agents.defaults.model.primary to openai-codex/gpt-5.5 (also reproduces with openai-codex/gpt-5.4).
- Restart the gateway.
- Send
/think to the agent (via Telegram, CLI, or any other channel).
- Observe the
Options: line.
Actual
Current thinking level: high. Options: off, minimal, low, medium, high.
(no xhigh listed)
Typing /think xhigh replies:
Thinking level set to high (xhigh not supported for openai-codex/gpt-5.5).
Expected
Current thinking level: high. Options: off, minimal, low, medium, high, xhigh.
(per OPENAI_CODEX_XHIGH_MODEL_IDS containing gpt-5.5 and gpt-5.4*)
Attempted local workaround: did not help
We added reasoning: true to each openai-codex entry in models.providers.openai-codex.models[] in case the catalog merge was masking a capability flag the profile resolver needed:
"models": {
"providers": {
"openai-codex": {
"baseUrl": "https://chatgpt.com/backend-api",
"models": [
{ "id": "gpt-5.5", "name": "GPT-5.5", "contextWindow": 1000000, "maxTokens": 128000, "reasoning": true },
{ "id": "gpt-5.4", "name": "GPT-5.4", "contextWindow": 1050000, "maxTokens": 128000, "reasoning": true },
{ "id": "gpt-5.4-mini", "name": "GPT-5.4 Mini", "contextWindow": 272000, "maxTokens": 64000, "reasoning": true }
]
}
}
}
Synced to the VM, restarted the gateway: /think still does not list xhigh. So the regression is independent of catalog capability flags.
Root-cause hypothesis
The source chain for /think options eventually calls, in src/plugins/provider-thinking.ts:
export function resolveProviderThinkingProfile(params) {
return resolveActiveThinkingProvider(params.provider)?.resolveThinkingProfile?.(params.context);
}
Given that the source-level resolveThinkingProfile on the openai-codex provider plugin cleanly appends xhigh for matching modelIds, the most likely failure mode is that resolveActiveThinkingProvider("openai-codex") returns undefined at runtime — i.e. the openai-codex provider plugin is never entered into the thinking registry (globalThis[Symbol.for("openclaw.pluginRegistryState")].activeRegistry.providers), even though the overall openai plugin status is loaded and the provider is fully functional for auth, catalog, and chat.
This would be consistent with a registration ordering or wiring regression introduced somewhere between v4.22 (where the full openai-codex/* thinking profile including xhigh worked end-to-end) and v4.23 (where it silently degrades to the base levels).
Suggested upstream investigation
- Verify at gateway startup that both
openai and openai-codex provider plugin entries appear in activeRegistry.providers — i.e. add a startup log line (debug-level is fine) naming each registered thinking provider id.
- If only
openai is present but openai-codex is missing, trace the registerProvider(buildOpenAICodexProviderPlugin()) call in extensions/openai/index.ts and ensure it is wired through to the thinking registry the same way registerProvider(buildOpenAIProvider()) is.
- A QA scenario similar to
qa/scenarios/models/thinking-slash-model-remap.md but covering openai-codex/gpt-5.5 and openai-codex/gpt-5.4 (not just openai/gpt-5.5) would catch this class of regression.
Related
Environment
- OpenClaw:
2026.4.23 (a979721)
- Node:
v24.14.0 (NodeSource setup_24.x, apt-held)
- npm:
11.9.0
- OS: Ubuntu 24.04.3 LTS, aarch64 (Linux VM on macOS host)
- Install path:
/usr/lib/node_modules/openclaw (via sudo npm install -g openclaw@2026.4.23)
- Run mode: user-level
systemd --user unit (openclaw-gateway.service)
Summary
On
openai-codex/gpt-5.5(andopenai-codex/gpt-5.4), thexhighthinking level is not advertised by/thinkand typed directives like/think xhighget remapped tohighwith the message:This contradicts both the upstream source code and the published documentation, and is a regression from v2026.4.22 (where
xhighwas correctly available foropenai-codex/gpt-5.4*—gpt-5.5did not exist in that version).Why this is a regression, not "expected behavior"
Source code says
xhighshould be supportedextensions/openai/openai-codex-provider.tsat tagv2026.4.23, lines 103-112:And at lines 474-478, the provider's
resolveThinkingProfileunconditionally addsxhighwhen the modelId matches any entry in this list:Documentation says
xhighshould be supportedFrom
docs.openclaw.ai/tools/thinking:openai-codex/gpt-5.4andopenai-codex/gpt-5.5are both (a) GPT-5.2+ generation and (b) served via Codex OAuth, so they match both phrasings.v2026.4.22 advertised
xhighforopenai-codex/gpt-5.4*User was on v2026.4.22 immediately before upgrading, and
/thinkforopenai-codex/gpt-5.4listedxhighas an option. After upgrading to v2026.4.23,/thinkfor the same model no longer listsxhigh. v2026.4.22's XHIGH list (same file, same path) was:So the list expanded in v4.23 (added 5.5 + 5.5-pro on top of existing 5.4 family), but in practice none of the entries produce
xhighin the live profile query.Reproduction
Environment:
openai-codex/gpt-5.5via Codex OAuth profileopenclaw plugins listshows theopenaiplugin asloadedSteps:
agents.defaults.model.primarytoopenai-codex/gpt-5.5(also reproduces withopenai-codex/gpt-5.4)./thinkto the agent (via Telegram, CLI, or any other channel).Options:line.Actual
(no
xhighlisted)Typing
/think xhighreplies:Expected
(per
OPENAI_CODEX_XHIGH_MODEL_IDScontaininggpt-5.5andgpt-5.4*)Attempted local workaround: did not help
We added
reasoning: trueto eachopenai-codexentry inmodels.providers.openai-codex.models[]in case the catalog merge was masking a capability flag the profile resolver needed:Synced to the VM, restarted the gateway:
/thinkstill does not listxhigh. So the regression is independent of catalog capability flags.Root-cause hypothesis
The source chain for
/thinkoptions eventually calls, insrc/plugins/provider-thinking.ts:Given that the source-level
resolveThinkingProfileon theopenai-codexprovider plugin cleanly appendsxhighfor matching modelIds, the most likely failure mode is thatresolveActiveThinkingProvider("openai-codex")returnsundefinedat runtime — i.e. theopenai-codexprovider plugin is never entered into the thinking registry (globalThis[Symbol.for("openclaw.pluginRegistryState")].activeRegistry.providers), even though the overallopenaiplugin status isloadedand the provider is fully functional for auth, catalog, and chat.This would be consistent with a registration ordering or wiring regression introduced somewhere between v4.22 (where the full
openai-codex/*thinking profile includingxhighworked end-to-end) and v4.23 (where it silently degrades to the base levels).Suggested upstream investigation
openaiandopenai-codexprovider plugin entries appear inactiveRegistry.providers— i.e. add a startup log line (debug-level is fine) naming each registered thinking provider id.openaiis present butopenai-codexis missing, trace theregisterProvider(buildOpenAICodexProviderPlugin())call inextensions/openai/index.tsand ensure it is wired through to the thinking registry the same wayregisterProvider(buildOpenAIProvider())is.qa/scenarios/models/thinking-slash-model-remap.mdbut coveringopenai-codex/gpt-5.5andopenai-codex/gpt-5.4(not justopenai/gpt-5.5) would catch this class of regression.Related
Environment
2026.4.23(a979721)v24.14.0(NodeSourcesetup_24.x, apt-held)11.9.0/usr/lib/node_modules/openclaw(viasudo npm install -g openclaw@2026.4.23)systemd --userunit (openclaw-gateway.service)