#Codex Vs openai-codex
1 messages · Page 1 of 1 (latest)
For ChatGPT/OpenAI subscription via OAuth, use:
openclaw models auth login --provider openai-codex --set-default
openclaw models set openai-codex/gpt-5.5
If you have an allowlist (agents.defaults.models), add it there too:
openclaw config set agents.defaults.models '{"openai-codex/gpt-5.5":{}}' --strict-json --merge
Key distinction:
openai/gpt-5.5= normal OpenAI API-key routeopenai-codex/gpt-5.5= ChatGPT/Codex subscription OAuth route
codex/gpt-*= legacy / native Codex harness style; don’t use this if you just want normal OpenClaw with OAuth
So for your case, openai-codex/gpt-5.5 is the right one. OpenClaw docs call out that openai-codex/* is the Codex OAuth/subscription provider route, while native Codex harness is a separate runtime choice. (raw.githubusercontent.com)
For the TG selector showing gpt-5.4-mini: check the exact resolved state with:
openclaw models status
openclaw config get agents.defaults.model --json
openclaw config get agents.defaults.models --json
If agents.defaults.models is set, it acts as the /model allowlist; missing/full-vs-mini entries there can make the picker confusing. (raw.githubusercontent.com)
After changing defaults, use /new in Telegram if the current session stays pinned to the old model.
Yep — that error is probably separate from the model config issue.
Completion cache update failed ... ETIMEOUT means the updater tried to regenerate shell autocomplete and the spawned Node command timed out. It’s usually non-fatal if the update itself finished.
Check:
openclaw --version
openclaw status --all
openclaw completion --write-state
If openclaw --version shows the newer version, you can mostly ignore the cache warning. If completion --write-state also hangs, run:
which node
node -v
If the path is literally /use/bin/node, that’s wrong — it should probably be /usr/bin/node or an nvm path. If that was just a typo and it’s /usr/bin/node, then it’s a timeout during completion generation.
Also: since you’re on 2026.4.25, I’d try getting to 2026.4.26 if the update completed weirdly:
openclaw update
openclaw doctor --fix
openclaw gateway restart
For your model: with ChatGPT/OpenAI OAuth, you want:
openclaw models set openai-codex/gpt-5.5
not codex/gpt-5.5. codex/* is the legacy/native Codex harness side; openai-codex/* is the OpenAI subscription OAuth provider route.
No — your status shows OAuth is already working:
openai-codex effective=profiles ... oauth=1 ... openai-codex:default=OAuth
So don’t re-run auth login unless it’s expired/broken.
To add/set GPT 5.5 for that same OAuth route:
openclaw models set openai-codex/gpt-5.5
Optional, if you also want image understanding on it:
openclaw models set-image openai-codex/gpt-5.5
Your picker confusion is probably from this alias:
gpt-5.4 -> litellm/gpt-5.4
openai-gpt-5.4 -> openai-codex/gpt-5.4
So plain gpt-5.4 means LiteLLM, not OpenAI OAuth. For the OAuth model, use the exact ref:
/model openai-codex/gpt-5.4
or after adding 5.5:
/model openai-codex/gpt-5.5
The codex effective=synthetic:codex-app-server line is the native Codex app-server side. For “normal subscription OAuth”, ignore that and stick with openai-codex/*.
You’re not on Codex app-server just because codex shows in auth status.
Your default is:
openai-codex/gpt-5.4
That means OpenAI subscription/OAuth route. Good.
To confirm runtime, run /status in TG/Discord:
Runtime: OpenClaw Pi Default= normal OpenClaw runner withopenai-codex/*OAuth âś…Runtime: OpenAI Codex= Codex app-server harness
What I’d do:
openclaw models set openai-codex/gpt-5.5
openclaw models set-image openai-codex/gpt-5.5
openclaw gateway restart
Then in Telegram:
/new
For aliases: yes, I’d simplify them. The confusing part is this:
gpt-5.4 -> litellm/gpt-5.4
openai-gpt-5.4 -> openai-codex/gpt-5.4
So if you type/select “gpt-5.4”, you’re getting LiteLLM, not OpenAI OAuth.
Safer cleanup:
openclaw models aliases remove gpt-5.4
openclaw models aliases add gpt-5.4 openai-codex/gpt-5.4
openclaw models aliases add gpt-5.5 openai-codex/gpt-5.5
If you still want LiteLLM aliases, make them explicit like:
openclaw models aliases add litellm-gpt-5.4 litellm/gpt-5.4
Main rule: use openai-codex/gpt-5.5 for your ChatGPT OAuth model. Ignore codex/* unless you intentionally want Codex app-server.
Your config is basically fine — it’s just missing openai-codex/gpt-5.5.
Do this:
openclaw models set openai-codex/gpt-5.5
openclaw models set-image openai-codex/gpt-5.5
openclaw gateway restart
That should add it to agents.defaults.models and make it the default.
I would not remove all OpenAI aliases. I’d just make the aliases less ambiguous. Right now:
"litellm/gpt-5.4": { "alias": "gpt-5.4" }
"openai-codex/gpt-5.4": { "alias": "openai-gpt-5.4" }
So plain gpt-5.4 means LiteLLM. If you want plain aliases to mean OpenAI OAuth, change to something like:
"litellm/gpt-5.4": { "alias": "litellm-gpt-5.4" },
"openai-codex/gpt-5.4": {
"alias": "gpt-5.4",
"params": { "thinking": "high" }
},
"openai-codex/gpt-5.5": {
"alias": "gpt-5.5",
"params": { "thinking": "high" }
}
Keep using openai-codex/*. Ignore codex/* unless /status says Runtime: OpenAI Codex and you intentionally configured the Codex app-server harness.
Run this:
openclaw models set openai-codex/gpt-5.5
Optional, to use it for images too:
openclaw models set-image openai-codex/gpt-5.5
If you want it in your picker with the same style alias/thinking params as your other OpenAI OAuth models:
openclaw config set agents.defaults.models '{"openai-codex/gpt-5.5":{"alias":"openai-gpt-5.5","params":{"thinking":"high"}}}' --strict-json --merge
Then restart and start a fresh chat/session:
openclaw gateway restart
In Telegram:
/new
It should add it to the picker, but probably as the full ref:
openai-codex/gpt-5.5
openclaw models set openai-codex/gpt-5.5 does two things:
- sets it as the default model
- adds it to
agents.defaults.modelsif missing
But it won’t add your nice alias/params automatically. So I’d run this instead/afterward:
openclaw config set agents.defaults.models '{"openai-codex/gpt-5.5":{"alias":"openai-gpt-5.5","params":{"thinking":"high"}}}' --strict-json --merge
Then check:
openclaw models status
You should see openai-codex/gpt-5.5 under Configured models. If Telegram still doesn’t show it, restart gateway and open a fresh picker/session:
openclaw gateway restart
Then in TG:
/new
/models
Your current image model from the status you pasted is:
openai-codex/gpt-5.4
and image fallback is:
litellm/gpt-5.4
If you want image to use 5.5 too:
openclaw models set-image openai-codex/gpt-5.5
Yes. If you remove the alias, the model still exists in the picker/config — it just shows/uses the full ref:
litellm/claude-opus-4-6
instead of:
opus-4-6
Aliases are just shortcuts/display helpers. They don’t change auth or routing.
So this:
"litellm/claude-opus-4-6": {}
is valid, just less pretty than:
"litellm/claude-opus-4-6": {
"alias": "opus-4-6"
}
For avoiding confusion, I’d keep aliases only where they’re unambiguous, e.g. litellm-opus-4-6 vs openai-gpt-5.5.
There isn’t a dedicated aliases clear command right now — only one-by-one:
openclaw models aliases remove <alias>
If you want to strip all aliases but keep the models + params, use this:
cp "$(openclaw config file)" "$(openclaw config file).bak.$(date +%Y%m%d-%H%M%S)"
MODELS="$(openclaw config get agents.defaults.models --json | node -e '
let s="";
process.stdin.on("data", d => s += d);
process.stdin.on("end", () => {
const models = JSON.parse(s || "{}");
for (const entry of Object.values(models)) delete entry.alias;
process.stdout.write(JSON.stringify(models));
});
')"
openclaw config set agents.defaults.models "$MODELS" --strict-json --replace
openclaw gateway restart
That leaves entries like:
"openai-codex/gpt-5.4": {
"params": { "thinking": "high" }
}
So the picker will show full names like openai-codex/gpt-5.4 / litellm/claude-opus-4-6, which is less pretty but much less confusing.
That’s Telegram tool-progress preview, not really a GPT-5.4 thing.
OpenClaw is showing live status while the agent uses tools, e.g.:
tool: execexec run openclaw config ...- gateway/config calls
- snippets of command output
To hide those tool-progress lines but keep normal streaming replies:
openclaw config set channels.telegram.streaming.preview.toolProgress false --strict-json
openclaw gateway restart
If you want to disable Telegram preview edits entirely:
openclaw config set channels.telegram.streaming.mode off
openclaw gateway restart
Docs: https://docs.openclaw.ai/channels/telegram
If those tool lines remain as the final message after the run finishes, that’s more bug-like; update to latest first, then file an issue if it still happens.
Yeah — that’s expected/new-ish behavior.
Telegram tool-progress preview has been enabled by default since v2026.4.22. It reuses the same streaming preview message to show “what the agent is doing” while tools run, then the final answer replaces it.
If you like answer streaming but don’t want the tool chatter, this is the sweet spot:
openclaw config set channels.telegram.streaming.preview.toolProgress false --strict-json
openclaw gateway restart
That keeps normal streaming on, but hides the tool: exec / command-output progress lines.
Docs mention this here: https://docs.openclaw.ai/channels/telegram
also is this new behaviour?
i ask agent to do a task in discord, i get results in discord but i also get async completion log in my TG main session, things like
Both async runs completed successfully.
• amber-sh (2026-04-25 23:18 UTC)
• Output snippet show
That one sounds like async/subagent completion delivery, not the Telegram streaming preview.
Expected behavior: if you start async work from Discord, the completion announce should go back to that Discord requester chat/thread. It should not also notify your Telegram main session unless the task was created from/for that TG session, or direct Discord delivery failed and it fell back to a queued session wake.
Since you’re on 2026.4.25, I’d update first — 2026.4.26 has subagent/completion routing fixes around requester delivery and missing conversation signal.
openclaw update
openclaw doctor --fix
openclaw gateway restart
If it still happens after that, grab the task/run details:
openclaw tasks list
openclaw tasks show <runId>
and file it as a GitHub issue. The useful detail is: “started from Discord thread, result also surfaced in Telegram main session,” plus the tasks show output with tokens redacted.
Use config set --merge, not models set.
To add it to the picker/config without changing your default:
openclaw config set agents.defaults.models '{"openai-codex/gpt-5.5":{"alias":"openai-gpt-5.5","params":{"thinking":"high"}}}' --strict-json --merge
openclaw gateway restart
Then verify:
openclaw models status
Your Default should stay whatever it currently is, and openai-codex/gpt-5.5 should appear under Configured models.
Correct — if you only want it available in the picker, that one config merge is enough:
openclaw config set agents.defaults.models '{"openai-codex/gpt-5.5":{"alias":"openai-gpt-5.5","params":{"thinking":"high"}}}' --strict-json --merge
openclaw gateway restart
You do not need openclaw models set unless you want to make it the default.
Your OAuth is already enabled for openai-codex, so no extra auth step either.
Then use it manually with:
/model openai-codex/gpt-5.5
or pick openai-gpt-5.5 / openai-codex/gpt-5.5 from the picker.
Then add it like this:
openclaw config set agents.defaults.models '{"openai-codex/gpt-5.5":{"params":{"thinking":"high"}}}' --strict-json --merge
openclaw gateway restart
No alias, not default. It’ll show/use the full name:
openai-codex/gpt-5.5
Then make it a totally plain picker entry:
openclaw config set agents.defaults.models '{"openai-codex/gpt-5.5":{}}' --strict-json --merge
openclaw gateway restart
That does not set it as default, does not add an alias, and does not set thinking params.
Not quite — this command:
openclaw config set agents.defaults.models '{"openai-codex/gpt-5.5":{}}' --strict-json --merge
will not reliably remove the existing params; merge keeps existing nested fields.
Use this instead to make that entry plain:
openclaw config set 'agents.defaults.models["openai-codex/gpt-5.5"]' '{}' --strict-json --replace
openclaw gateway restart
Or just remove the thinking params:
openclaw config unset 'agents.defaults.models["openai-codex/gpt-5.5"].params'
openclaw gateway restart
If you accidentally added an alias too:
openclaw config unset 'agents.defaults.models["openai-codex/gpt-5.5"].alias'
Yep, the two enableds are intentional — but your current combo means plugin loaded, active memory globally paused:
"active-memory": {
"enabled": true, // plugin is installed/available
"config": {
"enabled": false // active memory itself is globally off
}
}
So this is valid if you want /active-memory on --global to be able to turn it back on later.
If you actually want Active Memory running, change the inner one:
openclaw config set 'plugins.entries["active-memory"].config.enabled' true --strict-json
openclaw gateway restart
Your rest looks reasonable. Only note: allowedChatTypes: ["direct", "channel"] means it can run in channel/thread contexts too, not just DMs. If you only want it in private chats, use just ["direct"].
Yes — the most definitive local check is the diagnostic model.usage event, because it records the provider/model actually used for a completed model call.
Do this:
openclaw gateway stability --type model.usage --limit 20 --json \
| jq -r '.events[] | "\(.ts/1000|todateiso8601) channel=\(.channel) provider=\(.provider) model=\(.model) total=\(.usage.total)"'
You want to see:
provider=openai-codex model=gpt-5.5
If that shows gpt-5.4-mini or litellm/gpt-5.4, then the actual call used that instead.
To make a clean test:
- In TG/Discord:
/model openai-codex/gpt-5.5
- Ask a tiny prompt.
- Run the
gateway stability --type model.usagecommand above.
If you get no events, check diagnostics:
openclaw config get diagnostics.enabled
If disabled:
openclaw config set diagnostics.enabled true --strict-json
openclaw gateway restart
openclaw models status confirms config/allowlist/defaults. /status confirms the current session. model.usage confirms what actually got called.
Disable it with:
openclaw config set diagnostics.enabled false --strict-json
openclaw gateway restart
Verify:
openclaw config get diagnostics.enabled
If you only enabled it temporarily for model.usage, that’s all you need.
Most likely one of these:
-
You selected 5.5, then ran
/new
/newresets the session back to the configured default. If your default is stillopenai-codex/gpt-5.4/ mini, the new session won’t stay on 5.5. Use either:/new openai-codex/gpt-5.5or run
/newfirst, then:/model openai-codex/gpt-5.5 -
The picker selection didn’t actually submit/apply
In Discord the picker has a Submit step. In TG, safest is to type the full ref:
/model openai-codex/gpt-5.5
-
5.5 failed and OpenClaw auto-fell back
/statusshould show fallback reason if that happened. The definitive check is:openclaw gateway stability --type model.usage --limit 20 --jsonLook for
provider: "openai-codex"andmodel: "gpt-5.5".
Quick clean test:
/new openai-codex/gpt-5.5
/status
Then ask “say model test” and check model.usage. If it still says 5.4-mini after that, it’s either fallback or a picker/session bug.
Yeah, your agent’s diagnosis makes sense. This was not a memory database problem — it was a packaging / staged plugin runtime deps problem.
Why it happened:
- Recent releases moved more bundled plugin deps into
~/.openclaw/plugin-runtime-deps/...instead of relying on the root OpenClaw package. - The memory status probe loads the memory-core/status runtime through that staged plugin deps path.
- That staged path was missing
chokidar, so status failed while importing the memory manager. memory_search/memory_getcan still work because they don’t necessarily hit the same status/import path, and your SQLite memory DB/index was healthy.
So the misleading part is:
Memory enabled · unavailable
really meant:
memory status probe unavailable because plugin runtime dependency import failed
not:
memory is broken
Best fix path is:
openclaw update
openclaw doctor --fix
openclaw gateway restart
openclaw status --all
I wouldn’t manually patch plugin-runtime-deps unless you’re just unblocking yourself temporarily — doctor --fix / update should own that staged folder.
Also notable: your error path says openclaw-2026.4.25-.... If you’re now on a newer release but the error still references .25, that suggests stale staged deps or an old gateway process/service still running. Restarting the gateway after doctor --fix is important.
If it reproduces after latest + doctor, this is worth a GitHub issue with the exact Cannot find package 'chokidar'... line.
No, you shouldn’t need to move your plugins.
This is an upgrade/runtime-deps staging issue from the newer packaged plugin layout. memory-core now has its own staged deps under:
~/.openclaw/plugin-runtime-deps/...
and chokidar is supposed to be installed there. If it’s missing, the staged deps folder is incomplete/stale.
Do this first:
openclaw doctor --fix
openclaw gateway restart
openclaw status --all
If it still says missing chokidar, force a clean restage by moving the staged deps aside:
openclaw gateway stop
mv ~/.openclaw/plugin-runtime-deps ~/.openclaw/plugin-runtime-deps.bak.$(date +%Y%m%d-%H%M%S)
openclaw doctor --fix
openclaw gateway start
openclaw status --all
That doesn’t move your actual plugins/config/memory DB — it only makes OpenClaw recreate the managed runtime-deps cache.
Also, if you can update past .25, do that; runtime-deps repair has been getting fixes:
openclaw update
openclaw doctor --fix
openclaw gateway restart
If clean restage still reproduces the Cannot find package 'chokidar' error, that’s GitHub-issue worthy with the exact error line.
You can roll back and manually add it. .22 predates the GPT-5.5 catalog/docs, so treat this as “manual model ref config,” not officially nice picker support.
Rollback to 2026.4.22:
openclaw update --tag 2026.4.22
openclaw doctor --fix
openclaw gateway restart
openclaw --version
If that doesn’t work because your install is weird/npm state is broken, use installer pin:
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method npm --version 2026.4.22 --no-onboard
openclaw doctor --fix
openclaw gateway restart
Add GPT-5.5 to picker without making it default:
openclaw config set agents.defaults.models '{"openai-codex/gpt-5.5":{}}' --strict-json --merge
openclaw gateway restart
Then use it manually:
/model openai-codex/gpt-5.5
If you want it as default on .22:
openclaw config set agents.defaults.model.primary openai-codex/gpt-5.5
openclaw gateway restart
Caveat: if .22’s OpenAI/Codex transport rejects the new upstream model ID, you’ll need a newer OpenClaw. But I’d expect the manual openai-codex/gpt-5.5 ref to be the right thing to try first.
summarise all we discussed
Here’s the bundled summary:
-
OpenAI OAuth model route
- For ChatGPT/OpenAI subscription OAuth, use
openai-codex/*. openai-codex/gpt-5.5= normal OpenClaw/PI route using OpenAI/Codex OAuth.codex/*= legacy/native Codex app-server-ish side; ignore it unless you intentionally want Codex app-server.- Your auth was already good:
openai-codexshowed OAuth present, so no need to re-run auth login.
- For ChatGPT/OpenAI subscription OAuth, use
-
Adding GPT-5.5
-
To add to picker only, no default, no alias, no thinking params:
openclaw config set agents.defaults.models '{"openai-codex/gpt-5.5":{}}' --strict-json --merge openclaw gateway restart -
To make it default:
-
openclaw models set openai-codex/gpt-5.5
```
- To set image model too:
```bash
openclaw models set-image openai-codex/gpt-5.5
```
- **Aliases / picker confusion**
- Your plain `gpt-5.4` alias pointed to `litellm/gpt-5.4`, not OpenAI OAuth.
- Removing aliases makes picker show full refs like `litellm/claude-opus-4-6`.
- There’s no built-in “clear all aliases” command; we discussed using config manipulation / scripted cleanup.
- **Session model mismatch**
- `/status` is session-specific.
-
/newresets back to the configured default unless you do:/new openai-codex/gpt-5.5-
Definitive actual-call check:
openclaw gateway stability --type model.usage --limit 20 --json -
Disable diagnostics afterward:
openclaw config set diagnostics.enabled false --strict-json openclaw gateway restart
-
- **Telegram tool-progress spam**
- The `tool: exec`, command output, gateway calls, etc. are Telegram tool-progress preview lines.
- This was added/enabled by default around `v2026.4.22`.
- Keep streaming but hide tool chatter:
```bash
openclaw config set channels.telegram.streaming.preview.toolProgress false --strict-json
openclaw gateway restart
```
- **Async completion showing in Telegram**
- Async/subagent completions from Discord should normally announce back to the Discord requester/thread.
- If they also show in TG main session, likely completion routing/fallback weirdness.
- Suggested updating and checking:
openclaw update
openclaw doctor --fix
openclaw gateway restart
openclaw tasks list
openclaw tasks show <runId>
```
- **Active memory config**
- Two `enabled`s are intentional:
- `plugins.entries.active-memory.enabled` = plugin loaded.
- `plugins.entries.active-memory.config.enabled` = active memory globally on/off.
- Your shown config had plugin enabled but active memory globally off.
- **Memory status unavailable / chokidar**
- Your memory DB/search was fine.
- `openclaw status` failed because staged plugin runtime deps under `~/.openclaw/plugin-runtime-deps/...` missed `chokidar`.
-
First fix:
openclaw doctor --fix openclaw gateway restart-
If still broken, clean-restage managed deps:
openclaw gateway stop mv ~/.openclaw/plugin-runtime-deps ~/.openclaw/plugin-runtime-deps.bak.$(date +%Y%m%d-%H%M%S) openclaw doctor --fix openclaw gateway start
-
-
Rollback to 2026.4.22