mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-20 01:04:47 +00:00
* refactor: remove stale file-backed shims * fix: harden sqlite state ci boundaries * refactor: store matrix idb snapshots in sqlite * fix: satisfy rebased CI guardrails * refactor: store current conversation bindings in sqlite table * refactor: store tui last sessions in sqlite table * refactor: reset sqlite schema history * refactor: drop unshipped sqlite table migration * refactor: remove plugin index file rollback * refactor: drop unshipped sqlite sidecar migrations * refactor: remove runtime commitments kv migration * refactor: preserve kysely sync result types * refactor: drop unshipped sqlite schema migration table * test: keep session usage coverage sqlite-backed * refactor: keep sqlite migration doctor-only * refactor: isolate device legacy imports * refactor: isolate push voicewake legacy imports * refactor: isolate remaining runtime legacy imports * refactor: tighten sqlite migration guardrails * test: cover sqlite persisted enum parsing * refactor: isolate legacy update and tui imports * refactor: tighten sqlite state ownership * refactor: move legacy imports behind doctor * refactor: remove legacy session row lookup * refactor: canonicalize memory transcript locators * refactor: drop transcript path scope fallbacks * refactor: drop runtime legacy session delivery pruning * refactor: store tts prefs only in sqlite * refactor: remove cron store path runtime * refactor: use cron sqlite store keys * refactor: rename telegram message cache scope * refactor: read memory dreaming status from sqlite * refactor: rename cron status store key * refactor: stop remembering transcript file paths * test: use sqlite locators in agent fixtures * refactor: remove file-shaped commitments and cron store surfaces * refactor: keep compaction transcript handles out of session rows * refactor: derive transcript handles from session identity * refactor: derive runtime transcript handles * refactor: remove gateway session locator reads * refactor: remove transcript locator from session rows * refactor: store raw stream diagnostics in sqlite * refactor: remove file-shaped transcript rotation * refactor: hide legacy trajectory paths from runtime * refactor: remove runtime transcript file bridges * refactor: repair database-first rebase fallout * refactor: align tests with database-first state * refactor: remove transcript file handoffs * refactor: sync post-compaction memory by transcript scope * refactor: run codex app-server sessions by id * refactor: bind codex runtime state by session id * refactor: pass memory transcripts by sqlite scope * refactor: remove transcript locator cleanup leftovers * test: remove stale transcript file fixtures * refactor: remove transcript locator test helper * test: make cron sqlite keys explicit * test: remove cron runtime store paths * test: remove stale session file fixtures * test: use sqlite cron keys in diagnostics * refactor: remove runtime delivery queue backfill * test: drop fake export session file mocks * refactor: rename acp session read failure flag * refactor: rename acp row session key * refactor: remove session store test seams * refactor: move legacy session parser tests to doctor * refactor: reindex managed memory in place * refactor: drop stale session store wording * refactor: rename session row helpers * refactor: rename sqlite session entry modules * refactor: remove transcript locator leftovers * refactor: trim file-era audit wording * refactor: clean managed media through sqlite * fix: prefer explicit agent for exports * fix: use prepared agent for session resets * fix: canonicalize legacy codex binding import * test: rename state cleanup helper * docs: align backup docs with sqlite state * refactor: drop legacy Pi usage auth fallback * refactor: move legacy auth profile imports to doctor * refactor: keep Pi model discovery auth in memory * refactor: remove MSTeams legacy learning key fallback * refactor: store model catalog config in sqlite * refactor: use sqlite model catalog at runtime * refactor: remove model json compatibility aliases * refactor: store auth profiles in sqlite * refactor: seed copied auth profiles in sqlite * refactor: make auth profile runtime sqlite-addressed * refactor: migrate hermes secrets into sqlite auth store * refactor: move plugin install config migration to doctor * refactor: rename plugin index audit checks * test: drop auth file assumptions * test: remove legacy transcript file assertions * refactor: drop legacy cli session aliases * refactor: store skill uploads in sqlite * refactor: keep subagent attachments in sqlite vfs * refactor: drop subagent attachment cleanup state * refactor: move legacy session aliases to doctor * refactor: require node 24 for sqlite state runtime * refactor: move provider caches into sqlite state * fix: harden virtual agent filesystem * refactor: enforce database-first runtime state * refactor: rename compaction transcript rotation setting * test: clean sqlite refactor test types * refactor: consolidate sqlite runtime state * refactor: model session conversations in sqlite * refactor: stop deriving cron delivery from session keys * refactor: stop classifying sessions from key shape * refactor: hydrate announce targets from typed delivery * refactor: route heartbeat delivery from typed sqlite context * refactor: tighten typed sqlite session routing * refactor: remove session origin routing shadow * refactor: drop session origin shadow fixtures * perf: query sqlite vfs paths by prefix * refactor: use typed conversation metadata for sessions * refactor: prefer typed session routing metadata * refactor: require typed session routing metadata * refactor: resolve group tool policy from typed sessions * refactor: delete dead session thread info bridge * Show Codex subscription reset times in channel errors (#80456) * feat(plugin-sdk): consolidate session workflow APIs * fix(agents): allow read-only agent mount reads * [codex] refresh plugin regression fixtures * fix(agents): restore compaction gateway logs * test: tighten gateway startup assertions * Redact persisted secret-shaped payloads [AI] (#79006) * test: tighten device pair notify assertions * test: tighten hermes secret assertions * test: assert matrix client error shapes * test: assert config compat warnings * fix(heartbeat): remap cron-run exec events to session keys (#80214) * fix(codex): route btw through native side threads * fix(auth): accept friendly OpenAI order for Codex profiles * fix(codex): rotate auth profiles inside harness * fix: keep browser status page probe within timeout * test: assert agents add outputs * test: pin cron read status * fix(agents): avoid Pi resource discovery stalls Co-authored-by: dataCenter430 <titan032000@gmail.com> * fix: retire timed-out codex app-server clients * test: tighten qa lab runtime assertions * test: check security fix outputs * test: verify extension runtime messages * feat(wake): expose typed sessionKey on wake protocol + system event CLI * fix(gateway): await session_end during shutdown drain and track channel + compaction lifecycle paths (#57790) * test: guard talk consult call helper * fix(codex): scale context engine projection (#80761) * fix(codex): scale context engine projection * fix: document Codex context projection scaling * fix: document Codex context projection scaling * fix: document Codex context projection scaling * fix: document Codex context projection scaling * chore: align Codex projection changelog * chore: realign Codex projection changelog * fix: isolate Codex projection patch --------- Co-authored-by: Eva (agent) <eva+agent-78055@100yen.org> Co-authored-by: Josh Lehman <josh@martian.engineering> * refactor: move agent runtime state toward piless * refactor: remove cron session reaper * refactor: move session management to sqlite * refactor: finish database-first state migration * chore: refresh generated sqlite db types * refactor: remove stale file-backed shims * test: harden kysely type coverage # Conflicts: # .agents/skills/kysely-database-access/SKILL.md # src/infra/kysely-sync.types.test.ts # src/proxy-capture/store.sqlite.test.ts # src/state/openclaw-agent-db.test.ts # src/state/openclaw-state-db.test.ts * refactor: remove cron store path runtime * refactor: keep compaction transcript handles out of session rows * refactor: derive embedded transcripts from sqlite identity * refactor: remove embedded transcript locator handoff * refactor: remove runtime transcript file bridges * refactor: remove transcript file handoffs * refactor: remove MSTeams legacy learning key fallback * refactor: store model catalog config in sqlite * refactor: use sqlite model catalog at runtime # Conflicts: # docs/cli/secrets.md # docs/gateway/authentication.md # docs/gateway/secrets.md * fix: keep oauth sibling sync sqlite-local # Conflicts: # src/commands/onboard-auth.test.ts * refactor: remove task session store maintenance # Conflicts: # src/commands/tasks.ts * refactor: keep diagnostics in state sqlite * refactor: enforce database-first runtime state * refactor: consolidate sqlite runtime state * Show Codex subscription reset times in channel errors (#80456) * fix(codex): refresh subscription limit resets * fix(codex): format reset times for channels * Update CHANGELOG with latest changes and fixes Updated CHANGELOG with recent fixes and improvements. * fix(codex): keep command load failures on codex surface * fix(codex): format account rate limits as rows * fix(codex): summarize account limits as usage status * fix(codex): simplify account limit status * test: tighten subagent announce queue assertion * test: tighten session delete lifecycle assertions * test: tighten cron ops assertions * fix: track cron execution milestones * test: tighten hermes secret assertions * test: assert matrix sync store payloads * test: assert config compat warnings * fix(codex): align btw side thread semantics * fix(codex): honor codex fallback blocking * fix(agents): avoid Pi resource discovery stalls * test: tighten codex event assertions * test: tighten cron assertions * Fix Codex app-server OAuth harness auth * refactor: move agent runtime state toward piless * refactor: move device and push state to sqlite * refactor: move runtime json state imports to doctor * refactor: finish database-first state migration * chore: refresh generated sqlite db types * refactor: clarify cron sqlite store keys * refactor: remove stale file-backed shims * refactor: bind codex runtime state by session id * test: expect sqlite trajectory branch export * refactor: rename session row helpers * fix: keep legacy device identity import in doctor * refactor: enforce database-first runtime state * refactor: consolidate sqlite runtime state * build: align pi contract wrappers * chore: repair database-first rebase * refactor: remove session file test contracts * test: update gateway session expectations * refactor: stop routing from session compatibility shadows * refactor: stop persisting session route shadows * refactor: use typed delivery context in clients * refactor: stop echoing session route shadows * refactor: repair embedded runner rebase imports # Conflicts: # src/agents/pi-embedded-runner/run/attempt.tool-call-argument-repair.ts * refactor: align pi contract imports * refactor: satisfy kysely sync helper guard * refactor: remove file transcript bridge remnants * refactor: remove session locator compatibility * refactor: remove session file test contracts * refactor: keep rebase database-first clean * refactor: remove session file assumptions from e2e * docs: clarify database-first goal state * test: remove legacy store markers from sqlite runtime tests * refactor: remove legacy store assumptions from runtime seams * refactor: align sqlite runtime helper seams * test: update memory recall sqlite audit mock * refactor: align database-first runtime type seams * test: clarify doctor cron legacy store names * fix: preserve sqlite session route projections * test: fix copilot token cache test syntax * docs: update database-first proof status * test: align database-first test fixtures * docs: update database-first proof status * refactor: clean extension database-first drift * test: align agent session route proof * test: clarify doctor legacy path fixtures * chore: clean database-first changed checks * chore: repair database-first rebase markers * build: allow baileys git subdependency * chore: repair exp-vfs rebase drift * chore: finish exp-vfs rebase cleanup * chore: satisfy rebase lint drift * chore: fix qqbot rebase type seam * chore: fix rebase drift leftovers * fix: keep auth profile oauth secrets out of sqlite * fix: repair rebase drift tests * test: stabilize pairing request ordering * test: use source manifests in plugin contract checks * fix: restore gateway session metadata after rebase * fix: repair database-first rebase drift * fix: clean up database-first rebase fallout * test: stabilize line quick reply receipt time * fix: repair extension rebase drift * test: keep transcript redaction tests sqlite-backed * fix: carry injected transcript redaction through sqlite * chore: clean database branch rebase residue * fix: repair database branch CI drift * fix: repair database branch CI guard drift * fix: stabilize oauth tls preflight test * test: align database branch fast guards * test: repair build artifact boundary guards * chore: clean changelog rebase markers --------- Co-authored-by: pashpashpash <nik@vault77.ai> Co-authored-by: Eva <eva@100yen.org> Co-authored-by: stainlu <stainlu@newtype-ai.org> Co-authored-by: Jason Zhou <jason.zhou.design@gmail.com> Co-authored-by: Ruben Cuevas <hi@rubencu.com> Co-authored-by: Pavan Kumar Gondhi <pavangondhi@gmail.com> Co-authored-by: Shakker <shakkerdroid@gmail.com> Co-authored-by: Kaspre <36520309+Kaspre@users.noreply.github.com> Co-authored-by: dataCenter430 <titan032000@gmail.com> Co-authored-by: Kaspre <kaspre@gmail.com> Co-authored-by: pandadev66 <nova.full.stack@outlook.com> Co-authored-by: Eva <admin@100yen.org> Co-authored-by: Eva (agent) <eva+agent-78055@100yen.org> Co-authored-by: Josh Lehman <josh@martian.engineering> Co-authored-by: jeffjhunter <support@aipersonamethod.com>
219 lines
9.4 KiB
Markdown
219 lines
9.4 KiB
Markdown
---
|
|
summary: "CLI reference for `openclaw models` (status/list/set/scan, aliases, fallbacks, auth)"
|
|
read_when:
|
|
- You want to change default models or view provider auth status
|
|
- You want to scan available models/providers and debug auth profiles
|
|
title: "Models"
|
|
---
|
|
|
|
# `openclaw models`
|
|
|
|
Model discovery, scanning, and configuration (default model, fallbacks, auth profiles).
|
|
|
|
Related:
|
|
|
|
- Providers + models: [Models](/providers/models)
|
|
- Model selection concepts + `/models` slash command: [Models concept](/concepts/models)
|
|
- Provider auth setup: [Getting started](/start/getting-started)
|
|
|
|
## Common commands
|
|
|
|
```bash
|
|
openclaw models status
|
|
openclaw models list
|
|
openclaw models set <model-or-alias>
|
|
openclaw models scan
|
|
```
|
|
|
|
`openclaw models status` shows the resolved default/fallbacks plus an auth overview.
|
|
When provider usage snapshots are available, the OAuth/API-key status section includes
|
|
provider usage windows and quota snapshots.
|
|
Current usage-window providers: Anthropic, GitHub Copilot, Gemini CLI, OpenAI
|
|
Codex, MiniMax, Xiaomi, and z.ai. Usage auth comes from provider-specific hooks
|
|
when available; otherwise OpenClaw falls back to matching OAuth/API-key
|
|
credentials from auth profiles, env, or config.
|
|
In `--json` output, `auth.providers` is the env/config/store-aware provider
|
|
overview, while `auth.oauth` is auth-store profile health only.
|
|
Add `--probe` to run live auth probes against each configured provider profile.
|
|
Probes are real requests (may consume tokens and trigger rate limits).
|
|
Use `--agent <id>` to inspect a configured agent's model/auth state. When omitted,
|
|
the command uses `OPENCLAW_AGENT_DIR`/`PI_CODING_AGENT_DIR` if set, otherwise the
|
|
configured default agent.
|
|
Probe rows can come from auth profiles, env credentials, or the stored model catalog.
|
|
For Codex OAuth troubleshooting, `openclaw models status`,
|
|
`openclaw models auth list --provider openai-codex`, and
|
|
`openclaw config get agents.defaults.model --json` are the quickest way to
|
|
confirm whether an agent has a usable `openai-codex` auth profile for
|
|
`openai/*` through the native Codex runtime. See [OpenAI provider setup](/providers/openai#check-and-recover-codex-oauth-routing).
|
|
|
|
Notes:
|
|
|
|
- `models set <model-or-alias>` accepts `provider/model` or an alias.
|
|
- `models list` is read-only: it reads config, auth profiles, existing catalog
|
|
state, and provider-owned catalog rows, but it does not rewrite the stored
|
|
model catalog.
|
|
- The `Auth` column is provider-level and read-only. It is computed from local
|
|
auth profile metadata, env markers, configured provider keys, local-provider
|
|
markers, AWS Bedrock env/profile markers, and plugin synthetic-auth metadata;
|
|
it does not load provider runtime, read keychain secrets, call provider
|
|
APIs, or prove exact per-model execution readiness.
|
|
- `models list --all --provider <id>` can include provider-owned static catalog
|
|
rows from plugin manifests or bundled provider catalog metadata even when you
|
|
have not authenticated with that provider yet. Those rows still show as
|
|
unavailable until matching auth is configured.
|
|
- `models list` keeps the control plane responsive while provider catalog
|
|
discovery is slow. The default and configured views fall back to configured or
|
|
synthetic model rows after a short wait and let discovery finish in the
|
|
background. Use `--all` when you need the exact full discovered catalog and
|
|
are willing to wait for provider discovery.
|
|
- Broad `models list --all` merges manifest catalog rows over registry rows
|
|
without loading provider runtime supplement hooks. Provider-filtered manifest
|
|
fast paths use only providers marked `static`; providers marked `refreshable`
|
|
stay registry/cache-backed and append manifest rows as supplements, while
|
|
providers marked `runtime` stay on registry/runtime discovery.
|
|
- `models list` keeps native model metadata and runtime caps distinct. In table
|
|
output, `Ctx` shows `contextTokens/contextWindow` when an effective runtime
|
|
cap differs from the native context window; JSON rows include `contextTokens`
|
|
when a provider exposes that cap.
|
|
- `models list --provider <id>` filters by provider id, such as `moonshot` or
|
|
`openai-codex`. It does not accept display labels from interactive provider
|
|
pickers, such as `Moonshot AI`.
|
|
- 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`).
|
|
- If you omit the provider, OpenClaw resolves the input as an alias first, then
|
|
as a unique configured-provider match for that exact model id, and only then
|
|
falls back to the configured default provider with a deprecation warning.
|
|
If that provider no longer exposes the configured default model, OpenClaw
|
|
falls back to the first configured provider/model instead of surfacing a
|
|
stale removed-provider default.
|
|
- `models status` may show `marker(<value>)` in auth output for non-secret placeholders (for example `OPENAI_API_KEY`, `secretref-managed`, `minimax-oauth`, `oauth:chutes`, `ollama-local`) instead of masking them as secrets.
|
|
|
|
### Models scan
|
|
|
|
`models scan` reads OpenRouter's public `:free` catalog and ranks candidates for
|
|
fallback use. The catalog itself is public, so metadata-only scans do not need
|
|
an OpenRouter key.
|
|
|
|
By default OpenClaw tries to probe tool and image support with live model calls.
|
|
If no OpenRouter key is configured, the command falls back to metadata-only
|
|
output and explains that `:free` models still require `OPENROUTER_API_KEY` for
|
|
probes and inference.
|
|
|
|
Options:
|
|
|
|
- `--no-probe` (metadata only; no config/secrets lookup)
|
|
- `--min-params <b>`
|
|
- `--max-age-days <days>`
|
|
- `--provider <name>`
|
|
- `--max-candidates <n>`
|
|
- `--timeout <ms>` (catalog request and per-probe timeout)
|
|
- `--concurrency <n>`
|
|
- `--yes`
|
|
- `--no-input`
|
|
- `--set-default`
|
|
- `--set-image`
|
|
- `--json`
|
|
|
|
`--set-default` and `--set-image` require live probes; metadata-only scan
|
|
results are informational and are not applied to config.
|
|
|
|
### Models status
|
|
|
|
Options:
|
|
|
|
- `--json`
|
|
- `--plain`
|
|
- `--check` (exit 1=expired/missing, 2=expiring)
|
|
- `--probe` (live probe of configured auth profiles)
|
|
- `--probe-provider <name>` (probe one provider)
|
|
- `--probe-profile <id>` (repeat or comma-separated profile ids)
|
|
- `--probe-timeout <ms>`
|
|
- `--probe-concurrency <n>`
|
|
- `--probe-max-tokens <n>`
|
|
- `--agent <id>` (configured agent id; overrides `OPENCLAW_AGENT_DIR`/`PI_CODING_AGENT_DIR`)
|
|
|
|
`--json` keeps stdout reserved for the JSON payload. Auth-profile, provider,
|
|
and startup diagnostics are routed to stderr so scripts can pipe stdout directly
|
|
into tools such as `jq`.
|
|
|
|
Probe status buckets:
|
|
|
|
- `ok`
|
|
- `auth`
|
|
- `rate_limit`
|
|
- `billing`
|
|
- `timeout`
|
|
- `format`
|
|
- `unknown`
|
|
- `no_model`
|
|
|
|
Probe detail/reason-code cases to expect:
|
|
|
|
- `excluded_by_auth_order`: a stored profile exists, but explicit
|
|
`auth.order.<provider>` omitted it, so probe reports the exclusion instead of
|
|
trying it.
|
|
- `missing_credential`, `invalid_expires`, `expired`, `unresolved_ref`:
|
|
profile is present but not eligible/resolvable.
|
|
- `no_model`: provider auth exists, but OpenClaw could not resolve a probeable
|
|
model candidate for that provider.
|
|
|
|
## Aliases + fallbacks
|
|
|
|
```bash
|
|
openclaw models aliases list
|
|
openclaw models fallbacks list
|
|
```
|
|
|
|
## Auth profiles
|
|
|
|
```bash
|
|
openclaw models auth add
|
|
openclaw models auth list [--provider <id>] [--json]
|
|
openclaw models auth login --provider <id>
|
|
openclaw models auth setup-token --provider <id>
|
|
openclaw models auth paste-token
|
|
```
|
|
|
|
`models auth add` is the interactive auth helper. It can launch a provider auth
|
|
flow (OAuth/API key) or guide you into manual token paste, depending on the
|
|
provider you choose.
|
|
|
|
`models auth list` lists saved auth profiles for the selected agent without
|
|
printing token, API-key, or OAuth secret material. Use `--provider <id>` to
|
|
filter to one provider, such as `openai-codex`, and `--json` for scripting.
|
|
|
|
`models auth login` runs a provider plugin's auth flow (OAuth/API key). Use
|
|
`openclaw plugins list` to see which providers are installed.
|
|
Use `openclaw models auth --agent <id> <subcommand>` to write auth results to a
|
|
specific configured agent store. The parent `--agent` flag is honored by
|
|
`add`, `list`, `login`, `setup-token`, `paste-token`, and
|
|
`login-github-copilot`.
|
|
|
|
Examples:
|
|
|
|
```bash
|
|
openclaw models auth login --provider openai-codex --set-default
|
|
openclaw models auth list --provider openai-codex
|
|
```
|
|
|
|
Notes:
|
|
|
|
- `setup-token` and `paste-token` remain generic token commands for providers
|
|
that expose token auth methods.
|
|
- `setup-token` requires an interactive TTY and runs the provider's token-auth
|
|
method (defaulting to that provider's `setup-token` method when it exposes
|
|
one).
|
|
- `paste-token` accepts a token string generated elsewhere or from automation.
|
|
- `paste-token` requires `--provider`, prompts for the token value, and writes
|
|
it to the default profile id `<provider>:manual` unless you pass
|
|
`--profile-id`.
|
|
- `paste-token --expires-in <duration>` stores an absolute token expiry from a
|
|
relative duration such as `365d` or `12h`.
|
|
- 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.
|
|
- Anthropic `setup-token` / `paste-token` remain available as a supported OpenClaw token path, but OpenClaw now prefers Claude CLI reuse and `claude -p` when available.
|
|
|
|
## Related
|
|
|
|
- [CLI reference](/cli)
|
|
- [Model selection](/concepts/model-providers)
|
|
- [Model failover](/concepts/model-failover)
|