fix(agents): skip wildcard catalog metadata refs#86524
Conversation
|
Codex review: needs maintainer review before merge. Reviewed May 25, 2026, 9:06 PM ET / 01:06 UTC. Summary PR surface: Source +6, Tests +19. Total +25 across 3 files. Reproducibility: yes. Source inspection shows current main treats every default model key as a configured row and alias metadata key while the visibility parser already classifies Review metrics: 1 noteworthy metric.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Risk before merge
Maintainer options:
Next step before merge Security Review detailsBest possible solution: Land the focused skip if maintainers agree wildcard allowlist selectors should stay selection-only and not appear as concrete configured rows; otherwise define explicit wildcard display semantics before merging. Do we have a high-confidence way to reproduce the issue? Yes. Source inspection shows current main treats every default model key as a configured row and alias metadata key while the visibility parser already classifies Is this the best way to solve the issue? Yes. The patch is the narrowest maintainable fix for the reported behavior because it leaves wildcard allowlist selection intact and only prevents wildcard selectors from being resolved as concrete display rows or alias metadata. AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against c9364f03dcbb. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +6, Tests +19. Total +25 across 3 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
f3bc144 to
864653f
Compare
|
ClawSweeper PR egg ✨ Hatched: 🥚 common Clockwork Branchling Hatch commandComment Hatchability rules:
Rarity: 🥚 common. What is this egg doing here?
|
|
@clawsweeper re-review Follow-up for the proof gap:
I updated the PR body with the exact proof command and redacted JSON summary. |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
b4601c0 to
cf53b81
Compare
|
@clawsweeper re-review Current-head refresh for #86524:
|
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
cf53b81 to
a90eb0e
Compare
|
@clawsweeper re-review Current-head refresh for #86524:
No merge performed. |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
a90eb0e to
8ac9707
Compare
|
@clawsweeper re-review Refreshed onto upstream Focused validation after rebase passed:
No merge performed. |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
8ac9707 to
da4b216
Compare
|
@clawsweeper re-review Resolved the current main conflict on #86524 and refreshed the branch.
No merge performed. |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
da4b216 to
d428da7
Compare
|
@clawsweeper re-review Refreshed #86524 onto current upstream Focused validation after the refresh passed:
The existing real |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
d428da7 to
98c8c88
Compare
|
@clawsweeper re-review Refreshed #86524 onto current upstream Focused WSL validation after the refresh passed:
The existing |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
98c8c88 to
01fbfe3
Compare
|
@clawsweeper re-review Refreshed #86524 onto current upstream Focused WSL validation after the refresh passed:
The existing |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
* fix(agents): skip wildcard catalog metadata refs * fix(models): skip wildcard configured rows
* fix(agents): skip wildcard catalog metadata refs * fix(models): skip wildcard configured rows
* fix(agents): skip wildcard catalog metadata refs * fix(models): skip wildcard configured rows
* fix(agents): skip wildcard catalog metadata refs * fix(models): skip wildcard configured rows
Summary
Skips wildcard default model allowlist entries while building concrete model catalog metadata and configured
models listrows.Entries such as
openai-codex/*are valid allowlist selectors, but they are not concrete model ids and do not have per-model alias metadata to resolve or display as configured rows. The catalog metadata builder and configured list resolver now ignore those wildcard keys instead of sending them through concrete model normalization.Split out from #85817 so the policy-scoping PR remains policy-only.
Verification
node scripts/run-vitest.mjs src/commands/models/list.configured.test.ts src/agents/model-catalog-visibility.test.ts --reporter=dot-> 3 files, 9 tests passed./node_modules/.bin/oxfmt --check src/commands/models/list.configured.ts src/commands/models/list.configured.test.ts src/agents/model-selection-shared.ts src/agents/model-catalog-visibility.test.ts./node_modules/.bin/oxlint --tsconfig config/tsconfig/oxlint.core.json src/commands/models/list.configured.ts src/commands/models/list.configured.test.ts src/agents/model-selection-shared.ts src/agents/model-catalog-visibility.test.tsgit diff --check refs/remotes/upstream-safe/main...HEADgit diff --checkSigned head:
01fbfe3ae08446dec418d14af119872a2cea1a23.Real behavior proof
Behavior addressed: wildcard default model allowlist entries are treated as selectors, not concrete catalog model ids or configured model rows.
Real environment tested: WSL Ubuntu 24.04 checkout under
/root/src/openclaw-86524, with a temp OpenClaw home at/tmp/openclaw-86524-proof.Exact steps or command run after this patch:
OPENCLAW_HOME=/tmp/openclaw-86524-proof OPENCLAW_DISABLE_AUTO_UPDATE=1 OPENCLAW_DISABLE_BUNDLED_PLUGINS=1 OPENCLAW_TEST_FAST=1 node --import tsx src/entry.ts models list --jsonEvidence after fix: the temp config set
agents.defaults.modeltoopenai/gpt-5.5and included bothagents.defaults.models["openai-codex/*"] = {}andagents.defaults.models["openai/gpt-5.5"].alias = "Primary".Observed result after fix: the redacted JSON summary was
{ "modelCount": 1, "keys": ["openai/gpt-5.5"], "wildcardRows": [], "configuredRows": [{ "key": "openai/gpt-5.5", "tags": ["default", "configured", "alias:Primary"], "aliases": [] }] }.What was not tested: live provider catalog discovery with external provider credentials.