#Codex Vs openai-codex

1 messages · Page 1 of 1 (latest)

fallow tundraBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

wet veldtBOT
#

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 route
  • openai-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.

wet veldtBOT
#

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:

#

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 with openai-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
#

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:

  1. sets it as the default model
  2. adds it to agents.defaults.models if 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: exec
  • exec 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

broken oak
#

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

wet veldtBOT
#

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.

Docs: https://docs.openclaw.ai/automation/tasks

#

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"].

wet veldtBOT
#

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:

  1. In TG/Discord:
/model openai-codex/gpt-5.5
  1. Ask a tiny prompt.
  2. Run the gateway stability --type model.usage command 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:

  1. You selected 5.5, then ran /new
    /new resets the session back to the configured default. If your default is still openai-codex/gpt-5.4 / mini, the new session won’t stay on 5.5. Use either:

    /new openai-codex/gpt-5.5
    

    or run /new first, then:

    /model openai-codex/gpt-5.5
    
  2. 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
  1. 5.5 failed and OpenClaw auto-fell back
    /status should show fallback reason if that happened. The definitive check is:

    openclaw gateway stability --type model.usage --limit 20 --json
    

    Look for provider: "openai-codex" and model: "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.

wet veldtBOT
#

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_get can 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.

Docs: https://docs.openclaw.ai/install/development-channels

broken oak
#

summarise all we discussed

wet veldtBOT
#

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-codex showed OAuth present, so no need to re-run auth login.
  • 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.
#
  • /new resets 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