You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Refactor OpenAI provider identity so OpenAI remains the canonical provider for API-key and OAuth-backed flows while legacy openai-codex state is doctor/migration-only.
Keeps OpenAI Codex Responses as an API/transport class rather than a provider identity, moves auth aliases through providerAuthAliases, updates doctor repair sequencing for old auth/profile state, and refreshes tests/docs around the canonical OpenAI behavior.
Copy file name to clipboardExpand all lines: docs/channels/discord.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -354,7 +354,7 @@ To restrict who can click a button, set `allowedUsers` on that button (Discord u
354
354
355
355
Component callbacks expire after 30 minutes by default. Set `channels.discord.agentComponents.ttlMs` to change that callback registry lifetime for the default Discord account, or `channels.discord.accounts.<accountId>.agentComponents.ttlMs` to override one account in a multi-account setup. The value is milliseconds, must be a positive integer, and is capped at `86400000` (24 hours). Longer TTLs are useful for review or approval workflows that need buttons to remain usable, but they also extend the window where an old Discord message can still trigger an action. Prefer the shortest TTL that fits the workflow, and keep the default when stale callbacks would be surprising.
356
356
357
-
The `/model` and `/models` slash commands open an interactive model picker with provider, model, and compatible runtime dropdowns plus a Submit step. `/models add` is deprecated and now returns a deprecation message instead of registering models from chat. The picker reply is ephemeral and only the invoking user can use it. Discord select menus are limited to 25 options, so add `provider/*` entries to `agents.defaults.models` when you want the picker to show dynamically discovered models only for selected providers such as `openai-codex` or `vllm`.
357
+
The `/model` and `/models` slash commands open an interactive model picker with provider, model, and compatible runtime dropdowns plus a Submit step. `/models add` is deprecated and now returns a deprecation message instead of registering models from chat. The picker reply is ephemeral and only the invoking user can use it. Discord select menus are limited to 25 options, so add `provider/*` entries to `agents.defaults.models` when you want the picker to show dynamically discovered models only for selected providers such as `openai` or `vllm`.
358
358
359
359
File attachments:
360
360
@@ -1197,7 +1197,7 @@ Auto-join example:
1197
1197
discord: {
1198
1198
voice: {
1199
1199
enabled:true,
1200
-
model:"openai-codex/gpt-5.5",
1200
+
model:"openai/gpt-5.5",
1201
1201
autoJoin: [
1202
1202
{
1203
1203
guildId:"123456789012345678",
@@ -1234,7 +1234,7 @@ Notes:
1234
1234
-`voice.followUsers` lets the bot join, move, and leave Discord voice with selected users. See [Follow users in voice](#follow-users-in-voice) for behavior rules and examples.
1235
1235
-`agent-proxy` routes speech through `discord-voice`, which preserves normal owner/tool authorization for the speaker and target session but hides the agent `tts` tool because Discord voice owns playback. By default, `agent-proxy` gives the consult full owner-equivalent tool access for owner speakers (`voice.realtime.toolPolicy: "owner"`) and strongly prefers consulting the OpenClaw agent before substantive answers (`voice.realtime.consultPolicy: "always"`). In that default `always` mode, the realtime layer does not auto-speak filler before the consult answer; it captures and transcribes speech, then speaks the routed OpenClaw answer. If multiple forced consult answers finish while Discord is still playing the first answer, later exact-speech answers are queued until playback idles instead of replacing speech mid-sentence.
1236
1236
- In `stt-tts` mode, STT uses `tools.media.audio`; `voice.model` does not affect transcription.
1237
-
- In realtime modes, `voice.realtime.provider`, `voice.realtime.model`, and `voice.realtime.speakerVoice` configure the realtime audio session. For OpenAI Realtime 2 plus the Codex brain, use `voice.realtime.model: "gpt-realtime-2"` and `voice.model: "openai-codex/gpt-5.5"`.
1237
+
- In realtime modes, `voice.realtime.provider`, `voice.realtime.model`, and `voice.realtime.speakerVoice` configure the realtime audio session. For OpenAI Realtime 2 plus the Codex brain, use `voice.realtime.model: "gpt-realtime-2"` and `voice.model: "openai/gpt-5.5"`.
1238
1238
- Realtime voice modes include small `IDENTITY.md`, `USER.md`, and `SOUL.md` profile files in the realtime provider instructions by default so fast direct turns keep the same identity, user grounding, and persona as the routed OpenClaw agent. Set `voice.realtime.bootstrapContextFiles` to a subset to customize this, or `[]` to disable it. The supported realtime bootstrap files are limited to those profile files; `AGENTS.md` stays in the normal agent context. The injected profile context does not replace `openclaw_agent_consult` for workspace work, current facts, memory lookup, or tool-backed actions.
1239
1239
- In OpenAI `agent-proxy` realtime mode, set `voice.realtime.requireWakeName: true` to keep Discord realtime voice silent until a transcript starts or ends with a wake name. Configured wake names must be one or two words. If `voice.realtime.wakeNames` is unset, OpenClaw uses the routed agent `name` plus `OpenClaw`, falling back to the agent id plus `OpenClaw`. Wake-name gating disables realtime provider auto-response, routes accepted turns through the OpenClaw agent consult path, and gives a short spoken acknowledgement when a leading wake name is recognized from partial transcription before the final transcript arrives.
1240
1240
- The OpenAI realtime provider accepts current Realtime 2 event names and legacy Codex-compatible aliases for output audio and transcript events, so compatible provider snapshots can drift without dropping assistant audio.
-OnLinux, doctorwarnswhentheuser's crontab still runs legacy `~/.openclaw/bin/ensure-whatsapp.sh`; that script is no longer maintained and can log false WhatsApp gateway outages when cron lacks the systemd user-bus environment.
Copy file name to clipboardExpand all lines: docs/cli/infer.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -129,7 +129,7 @@ This table maps common inference tasks to the corresponding infer command.
129
129
- Use `model run --thinking <level>` to pass a one-shot thinking/reasoning level (`off`, `minimal`, `low`, `medium`, `high`, `adaptive`, `xhigh`, or `max`) while keeping the run raw.
130
130
- For `image describe`, `audio transcribe`, and `video describe`, `--model` must use the form `<provider/model>`.
131
131
- For `image describe`, `--file` accepts local paths and HTTP(S) image URLs. Remote URLs use the normal media-fetch SSRF policy.
132
-
- For `image describe`, an explicit `--model` runs that provider/model directly. The model must be image-capable in the model catalog or provider config. `codex/<model>` runs a bounded Codex app-server image-understanding turn; `openai-codex/<model>` uses the OpenAI Codex OAuth provider path.
132
+
- For `image describe`, an explicit `--model` runs that provider/model directly. The model must be image-capable in the model catalog or provider config. `codex/<model>` runs a bounded Codex app-server image-understanding turn; `openai/<model>` uses the OpenAI provider path with either API-key or ChatGPT/Codex OAuth auth.
133
133
- Stateless execution commands default to local.
134
134
- Gateway-managed state commands default to gateway.
135
135
- The normal local path does not require the gateway to be running.
@@ -172,7 +172,7 @@ Notes:
172
172
- Local `model run` is the narrowest CLI smoke for provider/model/auth health because, for non-Codex providers, it sends only the supplied prompt to the selected model.
173
173
- Local `model run --model <provider/model>` can use exact bundled static catalog rows from `models list --all` before that provider is written to config. Provider auth is still required; missing credentials fail as auth errors, not `Unknown model`.
174
174
- For Mistral Medium 3.5 reasoning probes, leave temperature unset/default. Mistral rejects `reasoning_effort="high"` plus `temperature: 0`; use `mistral/mistral-medium-3-5` with default temperature or a non-zero reasoning-mode value such as `0.7`.
175
-
-`openai-codex/*`local probes are the narrow exception: OpenClaw adds a minimal system instruction so the Codex Responses transport can populate its required `instructions` field, without adding full agent context, tools, memory, or session transcript.
175
+
-Codex Responses local probes are the narrow exception: OpenClaw adds a minimal system instruction so the transport can populate its required `instructions` field, without adding full agent context, tools, memory, or session transcript.
176
176
- Local `model run --file` keeps that lean path and attaches image content directly to the single user message. Common image files such as PNG, JPEG, and WebP work when their MIME type is detected as `image/*`; unsupported or unrecognized files fail before the provider is called.
177
177
-`model run --file` is best when you want to test the selected multimodal text model directly. Use `infer image describe` when you want OpenClaw's image-understanding provider selection and default image-model routing.
178
178
- The selected model must support image input; text-only models may reject the request at the provider layer.
Copy file name to clipboardExpand all lines: docs/cli/models.md
+12-12Lines changed: 12 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,8 +28,8 @@ openclaw models scan
28
28
`openclaw models status` shows the resolved default/fallbacks plus an auth overview.
29
29
When provider usage snapshots are available, the OAuth/API-key status section includes
30
30
provider usage windows and quota snapshots.
31
-
Current usage-window providers: Anthropic, GitHub Copilot, Gemini CLI, OpenAI
32
-
Codex, MiniMax, Xiaomi, and z.ai. Usage auth comes from provider-specific hooks
31
+
Current usage-window providers: Anthropic, GitHub Copilot, Gemini CLI, OpenAI,
32
+
MiniMax, Xiaomi, and z.ai. Usage auth comes from provider-specific hooks
33
33
when available; otherwise OpenClaw falls back to matching OAuth/API-key
34
34
credentials from auth profiles, env, or config.
35
35
In `--json` output, `auth.providers` is the env/config/store-aware provider
@@ -40,10 +40,10 @@ Use `--agent <id>` to inspect a configured agent's model/auth state. When omitte
40
40
the command uses `OPENCLAW_AGENT_DIR` if set, otherwise the
41
41
configured default agent.
42
42
Probe rows can come from auth profiles, env credentials, or `models.json`.
43
-
For Codex OAuth troubleshooting, `openclaw models status`,
44
-
`openclaw models auth list --provider openai-codex`, and
43
+
For OpenAI ChatGPT/Codex OAuth troubleshooting, `openclaw models status`,
44
+
`openclaw models auth list --provider openai`, and
45
45
`openclaw config get agents.defaults.model --json` are the quickest way to
46
-
confirm whether an agent has a usable `openai-codex` auth profile for
46
+
confirm whether an agent has a usable `openai` OAuth profile for
47
47
`openai/*` through the native Codex runtime. See [OpenAI provider setup](/providers/openai#check-and-recover-codex-oauth-routing).
48
48
49
49
Notes:
@@ -76,7 +76,7 @@ Notes:
76
76
cap differs from the native context window; JSON rows include `contextTokens`
77
77
when a provider exposes that cap.
78
78
-`models list --provider <id>` filters by provider id, such as `moonshot` or
79
-
`openai-codex`. It does not accept display labels from interactive provider
79
+
`openai`. It does not accept display labels from interactive provider
80
80
pickers, such as `Moonshot AI`.
81
81
- Model refs are parsed by splitting on the **first**`/`. If the model ID includes `/` (OpenRouter-style), include the provider prefix (example: `openrouter/moonshotai/kimi-k2`).
82
82
- If you omit the provider, OpenClaw resolves the input as an alias first, then
@@ -181,7 +181,7 @@ provider you choose.
181
181
182
182
`models auth list` lists saved auth profiles for the selected agent without
183
183
printing token, API-key, or OAuth secret material. Use `--provider <id>` to
184
-
filter to one provider, such as `openai-codex`, and `--json` for scripting.
184
+
filter to one provider, such as `openai`, and `--json` for scripting.
185
185
186
186
`models auth login` runs a provider plugin's auth flow (OAuth/API key). Use
187
187
`openclaw plugins list` to see which providers are installed.
@@ -192,15 +192,15 @@ specific configured agent store. The parent `--agent` flag is honored by
192
192
193
193
For OpenAI models, `--provider openai` defaults to ChatGPT/Codex account login.
194
194
Use `--method api-key` only when you want to add an OpenAI API-key profile,
195
-
usually as a backup for Codex subscription limits. The legacy
196
-
`--provider openai-codex`spelling still works for existing scripts.
195
+
usually as a backup for Codex subscription limits. Run `openclaw doctor --fix`
196
+
to migrate older `openai-codex`auth/profile state to `openai`.
-`setup-token` and `paste-token` remain generic token commands for providers
217
217
that expose token auth methods.
218
218
-`setup-token` requires an interactive TTY and runs the provider's token-auth
@@ -226,7 +226,7 @@ Notes:
226
226
provider credentials do not appear in shell history or process lists.
227
227
-`paste-token --expires-in <duration>` stores an absolute token expiry from a
228
228
relative duration such as `365d` or `12h`.
229
-
- For `openai-codex`, OpenAI API keys and ChatGPT/OAuth token material are
229
+
- For `openai`, OpenAI API keys and ChatGPT/OAuth token material are
230
230
different auth shapes. Use `paste-api-key` for `sk-...` OpenAI API keys and
231
231
`paste-token` only for token auth material.
232
232
- Anthropic note: Anthropic staff told us OpenClaw-style Claude CLI usage is allowed again, so OpenClaw treats Claude CLI reuse and `claude -p` usage as sanctioned for this integration unless Anthropic publishes a new policy.
0 commit comments