openclaw - ✅(Solved) Fix [Bug]: Plugin-registered provider models return 'model not allowed' unless using alias [1 pull requests, 2 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#65763Fetched 2026-04-14 05:40:26
View on GitHub
Comments
2
Participants
2
Timeline
4
Reactions
0
Author
Timeline (top)
commented ×2cross-referenced ×1referenced ×1

Error Message

  1. Observe error: "model not allowed"

Root Cause

This is the same root cause as issue #30152. In buildAllowedModelSet, plugin-registered providers are not recognized as "configured providers", so models from those providers are silently dropped from the allowlist.

The three conditions checked:

  • isCliProvider() → false for API providers
  • catalogKeys.has(key) → false (plugin models not in generated catalog)
  • configuredProviders[providerKey] != null → false (provider registered via plugin, not explicit config)

Since none match, the model key is dropped.

Fix Action

Workaround

Add an alias in agents.defaults.models:

"models": {
  "stepfun-plan/step-3.5-flash": {
    "alias": "step"
  }
}

Then use /model step instead of /model stepfun-plan/step-3.5-flash.

PR fix notes

PR #65780: fix(agents+misc): compaction reload + memory-alt dedup + plugin model allowlist

Description (problem / solution / changelog)

Fixes\n\n### #65602 — reserveTokens overwritten by resourceLoader.reload()\nresourceLoader.reload() calls settingsManager.reload() which resets the override state set by applyPiCompactionSettingsFromConfig(). Fix: call it again after reload.\n\n### #65769 — memory-alt-main collection not found on macOS case-insensitive fs\nOn macOS HFS+/APFS, MEMORY.md and memory.md resolve to the same inode. Fix: stat both files and skip memory-alt if inode matches memory-root.\n\n### #65763 — Plugin-registered provider models return 'model not allowed'\nWhen allowAny=false (explicit allowlist configured), plugin-registered provider models were silently dropped because they are not in cfg.models.providers. Fix: mark plugin entries isFromPlugin=true in augmentModelCatalogWithProviderPlugins, then auto-add them to allowedKeys in buildAllowedModelSet.\n\n## Testing\n- pi-settings (8✅) + backend-config (19✅) + qmd-manager (83✅) + model-selection (82✅) + model-catalog (10✅)\n

Changed files

  • extensions/google/provider-models.ts (modified, +2/-2)

Code Example

Model \`stepfun-plan/step-3.5-flash\` is not allowed

---

"models": {
  "stepfun-plan/step-3.5-flash": {
    "alias": "step"
  }
}
RAW_BUFFERClick to expand / collapse

Bug Description

When a model provider is registered via an OpenClaw plugin (not explicitly in models.providers), attempting to switch to that model directly via /model stepfun-plan/step-3.5-flash fails with:

Model \`stepfun-plan/step-3.5-flash\` is not allowed

However, creating an alias (step -> stepfun-plan/step-3.5-flash) makes it work correctly.

Steps to Reproduce

  1. Install stepfun-openclaw-plugin (registers stepfun and stepfun-plan providers)
  2. Try to switch model using /model stepfun-plan/step-3.5-flash
  3. Observe error: "model not allowed"

Expected Behavior

Should be able to switch to stepfun-plan/step-3.5-flash without needing an alias.

Root Cause

This is the same root cause as issue #30152. In buildAllowedModelSet, plugin-registered providers are not recognized as "configured providers", so models from those providers are silently dropped from the allowlist.

The three conditions checked:

  • isCliProvider() → false for API providers
  • catalogKeys.has(key) → false (plugin models not in generated catalog)
  • configuredProviders[providerKey] != null → false (provider registered via plugin, not explicit config)

Since none match, the model key is dropped.

Workaround

Add an alias in agents.defaults.models:

"models": {
  "stepfun-plan/step-3.5-flash": {
    "alias": "step"
  }
}

Then use /model step instead of /model stepfun-plan/step-3.5-flash.

Environment

  • OpenClaw version: Latest
  • Provider: stepfun-plan (via stepfun-openclaw-plugin)
  • Model: step-3.5-flash
  • Config: Provider registered via plugin, no explicit models.providers entry

Related Issues

  • #30152 (same root cause, closed due to inactivity)
  • #19774 (attempted fix, closed without merging)

extent analysis

TL;DR

The most likely fix is to update the buildAllowedModelSet function to recognize plugin-registered providers as "configured providers".

Guidance

  • Verify that the issue is indeed caused by the buildAllowedModelSet function not recognizing plugin-registered providers by checking the conditions checked in the function: isCliProvider(), catalogKeys.has(key), and configuredProviders[providerKey] != null.
  • Consider adding a temporary workaround by creating an alias in agents.defaults.models for the model, as described in the issue.
  • Investigate the related issues (#30152 and #19774) to see if there are any existing solutions or workarounds that can be applied.
  • Check if updating the OpenClaw plugin or the stepfun-openclaw-plugin can resolve the issue.

Example

No code example is provided as the issue does not contain enough information to create a specific code snippet.

Notes

The issue seems to be related to a known problem (issue #30152) and a previous attempted fix (issue #19774). However, without more information about the buildAllowedModelSet function and the OpenClaw plugin, it is difficult to provide a definitive solution.

Recommendation

Apply workaround: create an alias in agents.defaults.models for the model, as this is a known and tested solution that can mitigate the issue until a more permanent fix is found.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING