Skip to content

fix(doctor): preserve explicit agentRuntime pin during codex model migration [AI-assisted]#84362

Merged
clawsweeper[bot] merged 9 commits into
mainfrom
clawsweeper/automerge-openclaw-openclaw-84142
May 29, 2026
Merged

fix(doctor): preserve explicit agentRuntime pin during codex model migration [AI-assisted]#84362
clawsweeper[bot] merged 9 commits into
mainfrom
clawsweeper/automerge-openclaw-openclaw-84142

Conversation

@clawsweeper

@clawsweeper clawsweeper Bot commented May 19, 2026

Copy link
Copy Markdown
Contributor

Makes #84142 merge-ready for the ClawSweeper automerge loop.
The edit pass should inspect the live PR diff, review comments, and failing checks; rebase if needed; keep the contributor branch credited; and stop only when validation is green or an external blocker is proven.

ClawSweeper 🐠 replacement reef notes:

  • Repair fallback: GitHub rejected the repair branch push because it updates workflow files and the ClawSweeper app token does not have workflows permission

Inherited issue-closing references from the source PR:
Closes #84038

Co-author credit kept:

fish notes: model gpt-5.5, reasoning high; reviewed against 41e5043.

@clawsweeper clawsweeper Bot added commands Command implementations size: S clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge proof: supplied External PR includes structured after-fix real behavior proof. proof: sufficient ClawSweeper judged the real behavior proof convincing. P1 High-priority user-facing bug, regression, or broken workflow. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane. clawsweeper Tracked by ClawSweeper automation labels May 19, 2026
@clawsweeper

clawsweeper Bot commented May 19, 2026

Copy link
Copy Markdown
Contributor Author

Codex review: passed. Reviewed May 29, 2026, 8:22 AM ET / 12:22 UTC.

Summary
The PR updates Codex doctor route repair to preserve explicit non-default agentRuntime pins across agent model maps and provider policies, adds regression coverage, and tightens a live-gateway test helper type guard.

PR surface: Source +240, Tests +574. Total +814 across 3 files.

Reproducibility: yes. The source path is clear from current main's model-map merge behavior and the PR's before/after terminal proof exercises maybeRepairCodexRoutes with the reported config, though this read-only review did not execute the test suite.

Review metrics: 1 noteworthy metric.

  • Runtime-pin carriers: 3 preserved. The patch changes doctor migration semantics for agent model maps, provider-level policy, and provider catalog model policy, which are upgrade-sensitive runtime/auth config carriers.

Merge readiness
Overall: 🦞 diamond lobster
Proof: 🦀 challenger crab
Patch quality: 🦞 diamond lobster
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Risk before merge

  • [P1] This intentionally changes upgrade-sensitive doctor --fix behavior for persisted runtime/auth routing, so exact-head checks should remain the merge gate even though the patch direction is correct.
  • [P1] The proof is focused config-repair/runtime-resolution terminal output and regression tests; this read-only review did not rerun a live OAuth/provider request.

Maintainer options:

  1. Land the exact reviewed head (recommended)
    Once required checks stay green, maintainers can accept the compatibility/auth-provider risk because this head preserves explicit non-default runtime pins and covers the known persisted-policy carriers.
  2. Ask for a live OAuth smoke first
    If maintainers want stronger runtime proof, pause automerge for a live gateway/OAuth run showing the repaired config still selects the intended non-Codex runtime path.

Next step before merge

  • [P2] No repair lane is needed; the exact head has no blocking findings, and the remaining action is normal required-check/automerge gating.

Security
Cleared: The diff changes local config-repair logic and tests only; it does not add dependencies, workflow permissions, network calls, or secret handling.

Review details

Best possible solution:

Land the reviewed exact head once required checks are green so doctor preserves explicit runtime pins during Codex route repair without adding a new config surface.

Do we have a high-confidence way to reproduce the issue?

Yes. The source path is clear from current main's model-map merge behavior and the PR's before/after terminal proof exercises maybeRepairCodexRoutes with the reported config, though this read-only review did not execute the test suite.

Is this the best way to solve the issue?

Yes. Preserving explicit pins at the doctor migration boundary and materializing scoped canonical runtime policy for provider-owned pins is the narrow maintainable fix; no new config option or product decision is needed.

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against 2644f26a3514.

Label changes

Label justifications:

  • P1: The PR fixes a real doctor migration regression that can silently change users' runtime and auth-provider path.
  • merge-risk: 🚨 compatibility: Merging changes doctor --fix behavior for persisted model/runtime configuration during upgrades.
  • merge-risk: 🚨 auth-provider: The preserved agentRuntime pin controls whether repaired OpenAI routes use Codex/native auth or the intended OpenClaw/PI runtime path.
  • rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🦀 challenger crab and patch quality is 🦞 diamond lobster.
  • status: 🚀 automerge armed: This PR is in ClawSweeper's automerge lane. Sufficient (terminal): The linked source proof and related runtime-pin matrix provide before/after terminal output for the doctor repair behavior, and the current PR is labeled proof: sufficient for this exact replacement path.
  • proof: sufficient: Contributor real behavior proof is sufficient. The linked source proof and related runtime-pin matrix provide before/after terminal output for the doctor repair behavior, and the current PR is labeled proof: sufficient for this exact replacement path.
Evidence reviewed

PR surface:

Source +240, Tests +574. Total +814 across 3 files.

View PR surface stats
Area Files Added Removed Net
Source 1 252 12 +240
Tests 2 578 4 +574
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 3 830 16 +814

What I checked:

  • Repository policy read: Read the full root AGENTS.md and the scoped gateway AGENTS.md; their config/auth compatibility guidance is relevant to the merge-risk treatment. (AGENTS.md:1)
  • Current main still has the overwrite-prone merge: Current main's rewriteModelsMap still merges legacy and canonical records with canonical fields last, which is the source-level path that can drop a legacy explicit runtime pin. (src/commands/doctor/shared/codex-route-warnings.ts:1306, 2644f26a3514)
  • PR head preserves pre-repair runtime pins: The PR head derives a target runtime from pinned, legacy, and pre-repair provider/runtime policy and writes a canonical model-scoped policy for provider-owned pins instead of defaulting everything to Codex. (src/commands/doctor/shared/codex-route-warnings.ts:2216, c142ec1ef802)
  • Regression coverage covers the important carriers: The PR adds tests for inherited default pins, provider-level pins, provider catalog model pins, listed-agent shielding, and the reported legacy model entry migration case. (src/commands/doctor/shared/codex-route-warnings.test.ts:3153, c142ec1ef802)
  • Patch hygiene check: The PR diff against its merge base has no whitespace errors from git diff --check. (c142ec1ef802)
  • Proof and review context: The provided GitHub context reports this exact head as mergeable clean with proof: sufficient; the related source PR includes before/after terminal output for the reported doctor repair path, and the previous ClawSweeper review at this SHA passed with no blocking findings. (c142ec1ef802)

Likely related people:

  • @steipete: Recent current-main history and blame on the doctor/gateway live-test surfaces show Peter Steinberger carrying adjacent release/live-gate hardening and the existing route-repair code context. (role: recent area contributor; confidence: medium; commits: 0ad43bbf3d45, 5102e0cabeb2; files: src/commands/doctor/shared/codex-route-warnings.ts, src/gateway/gateway-models.profiles.live.test.ts)
  • @nxmxbbd: The source PR and branch commits add the initial failing repro and focused fix, and the discussion supplied the provider-level/runtime-pin follow-up cases now present in this replacement branch. (role: source fix author and reproduction owner; confidence: medium; commits: 640dcfb0731b, 8f8bd84091da; files: src/commands/doctor/shared/codex-route-warnings.ts, src/commands/doctor/shared/codex-route-warnings.test.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper

clawsweeper Bot commented May 19, 2026

Copy link
Copy Markdown
Contributor Author

🦞✅
ClawSweeper merged this PR after the passing review.

Source: clawsweeper[bot]
Feedback: structured ClawSweeper verdict: pass (sha=c142ec1ef802748e759da3a9e103117a11967ac5)
Merge status: merged by ClawSweeper automerge
Merged at: 2026-05-29T12:22:36Z
Merge commit: 468b971fbad5

What merged:

  • The PR updates Codex doctor route repair to preserve explicit non-default agentRuntime pins across agent model maps and provider policies, adds regression coverage, and tightens a live-gateway test helper type guard.
  • PR surface: Source +240, Tests +574. Total +814 across 3 files.
  • Reproducibility: yes. The source path is clear from current main's model-map merge behavior and the PR's bef ... beRepairCodexRoutes` with the reported config, though this read-only review did not execute the test suite.

Automerge notes:

  • PR branch already contained follow-up commit before automerge: fix(doctor): preserve explicit non-default agentRuntime pin during le…
  • PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8414…

The automerge loop is complete.

Automerge progress:

  • 2026-05-29 10:58:29 UTC review queued c142ec1ef802 (after repair)
  • 2026-05-29 12:15:32 UTC review queued c142ec1ef802 (queued)
  • 2026-05-29 12:22:24 UTC review passed c142ec1ef802 (structured ClawSweeper verdict: pass (sha=c142ec1ef802748e759da3a9e103117a11967...)
  • 2026-05-29 11:13:51 UTC merge check queued c142ec1ef802 (checks and exact-head review are ready)
  • 2026-05-29 12:22:40 UTC merged c142ec1ef802 (merged by ClawSweeper automerge)

@openclaw-barnacle openclaw-barnacle Bot removed the proof: supplied External PR includes structured after-fix real behavior proof. label May 19, 2026
@clawsweeper

clawsweeper Bot commented May 19, 2026

Copy link
Copy Markdown
Contributor Author

ClawSweeper PR egg

✨ Hatched: 🥚 common Frosted Branchling

Hatch command

Comment @clawsweeper hatch when this PR is hatchable.

Hatchability rules:

  • Merged PRs are hatchable.
  • Open PRs are hatchable when they are status: 👀 ready for maintainer look, status: 🚀 automerge armed, or labeled clawsweeper:automerge.
  • Closed unmerged PRs are hatchable only when one of those hatchable labels is still present in the durable record.

Rarity: 🥚 common.
Trait: polishes edge cases.
Image traits: location release reef; accessory proof snapshot camera; palette charcoal, cyan, and signal green; mood proud; pose guarding a tiny green check; shell matte ceramic shell; lighting cool dashboard glow; background delicate sparkle particles.
Share on X: post this hatch
Copy: My PR egg hatched a 🥚 common Frosted Branchling in ClawSweeper.

What is this egg doing here?
  • Eggs appear after the PR passes real-behavior proof. It is here for vibes, not verdicts: it does not change labels, ratings, merge decisions, or automation.
  • The shell reacts to review momentum: open follow-up work warms it up, re-review makes it wobble, and a clean final review lets it hatch.
  • Hatchability usually comes from sufficient real-behavior proof, no blocking P0/P1/P2 findings, no security attention needed, and clean correctness. A merged PR is already final, so merge makes the egg hatchable independently.
  • The hatch is seeded from this repository and PR number, so the same PR keeps the same creature; the reviewed head SHA can only change safe visual details.
  • Rarity is just collectible sparkle: 🥚 common, 🌱 uncommon, 💎 rare, ✨ glimmer, and 🌈 legendary.

@clawsweeper clawsweeper Bot force-pushed the clawsweeper/automerge-openclaw-openclaw-84142 branch from 41e5043 to b3419b5 Compare May 20, 2026 00:32
@clawsweeper clawsweeper Bot added merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 auth-provider 🚨 May break OAuth, tokens, provider routing, model choice, or credentials. labels May 20, 2026
@clawsweeper clawsweeper Bot force-pushed the clawsweeper/automerge-openclaw-openclaw-84142 branch 2 times, most recently from bf76334 to 03086e5 Compare May 20, 2026 02:06
@clawsweeper clawsweeper Bot added size: S proof: supplied External PR includes structured after-fix real behavior proof. labels May 20, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: supplied External PR includes structured after-fix real behavior proof. label May 20, 2026
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. labels May 20, 2026
@Takhoffman

Copy link
Copy Markdown
Contributor

@clawsweeper automerge

@nxmxbbd

nxmxbbd commented May 20, 2026

Copy link
Copy Markdown
Contributor

@Takhoffman Heads up: from the visible state, #84362 looks automerge-armed but idle rather than actively repairing/merging.

It still has clawsweeper:automerge / status: 🚀 automerge armed, but the later maintainer automerge comment appears to have been treated as already-enabled/idempotent, and I do not see a newer visible repair worker for #84142/#84362 after the last related worker. The PR still shows P1 and DIRTY.

While checking this, I also found and locally tested a small follow-up for the remaining runtime-pin cases if useful. I’ve kept that patch local and can provide it as a fork branch or patch if helpful. Could you trigger/restart the ClawSweeper review/repair path here, or let me know what route you prefer?

@nxmxbbd

nxmxbbd commented May 25, 2026

Copy link
Copy Markdown
Contributor

@Takhoffman This workstream currently looks circular.

This PR (#84362) is the ClawSweeper replacement branch for our earlier PR, but it still appears stuck: it is DIRTY, automerge-armed, and the durable review currently rates it rating: 🧂 unranked krab with a blocking provider-level runtime-pin preservation gap. I also cannot push directly to this upstream bot branch.

#84862 was opened as a clean contributor-controlled path because this PR appeared stuck, not as an unrelated duplicate. ClawSweeper has now closed #84862 as superseded by this PR, which routes the work back into the still-stuck branch.

I re-checked #84862 against current main locally. The actual merge is clean:

$ git fetch --filter=blob:none origin main pull/84862/head:pr84862
$ git checkout -b review-84862 origin/main
$ git merge --no-commit --no-ff pr84862
Auto-merging src/commands/doctor/shared/codex-route-warnings.test.ts
Auto-merging src/commands/doctor/shared/codex-route-warnings.ts
Automatic merge went well; stopped before committing as requested

$ git diff --name-only origin/main --
src/commands/doctor/shared/codex-route-warnings.test.ts
src/commands/doctor/shared/codex-route-warnings.ts

The current-main app-server inline-argument warning/test that #84862 was said to drop is still present in the post-merge snapshot:

src/commands/doctor/shared/codex-route-warnings.ts:2672
  collectCodexAppServerCommandWarnings(...)

src/commands/doctor/shared/codex-route-warnings.ts:2688
  "- Codex app-server command override includes inline arguments."

src/commands/doctor/shared/codex-route-warnings.test.ts:137
  it("warns when Codex app-server command includes inline arguments", ...)

The provider-level/runtime-pin cases missing from this PR's current review are also covered in #84862's post-merge snapshot:

src/commands/doctor/shared/codex-route-warnings.test.ts:3155
  preserves provider-level legacy runtime pins while repairing default legacy refs

src/commands/doctor/shared/codex-route-warnings.test.ts:3203
  preserves legacy provider catalog runtime pins while repairing default legacy refs

src/commands/doctor/shared/codex-route-warnings.test.ts:3253
  preserves legacy provider catalog runtime pins while repairing listed-agent legacy refs

src/commands/doctor/shared/codex-route-warnings.test.ts:3308
  shields listed canonical refs when provider-level legacy default pins migrate

src/commands/doctor/shared/codex-route-warnings.test.ts:3386
  preserves provider-level legacy runtime pins while repairing listed-agent legacy refs

src/commands/doctor/shared/codex-route-warnings.ts:2261
  reason: "so legacy provider runtime pins survive Codex route repair"

Could you choose the intended path here?

Either:

  1. reopen/use fix(doctor): preserve runtime pins during codex route repair [AI-assisted] #84862 as the clean contributor path, or
  2. have ClawSweeper apply the fix(doctor): preserve runtime pins during codex route repair [AI-assisted] #84862 fix onto this PR and resolve the DIRTY/blocking state.

Happy to provide the local merge-simulation branch/details if useful.

@clawsweeper clawsweeper Bot force-pushed the clawsweeper/automerge-openclaw-openclaw-84142 branch from e1d8ada to 2035202 Compare May 29, 2026 10:14
@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels May 29, 2026
@openclaw-barnacle openclaw-barnacle Bot added the gateway Gateway runtime label May 29, 2026
@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels May 29, 2026
nxmxbbd and others added 9 commits May 29, 2026 10:58
Adds a regression test in codex-route-warnings.test.ts that mirrors
the exact user-reported config from #84038:

- agents.defaults.model.primary = "openai-codex/gpt-5.4"
- agents.defaults.models["openai-codex/gpt-5.4"].agentRuntime = { id: "pi" }

The user expects doctor --fix to preserve the explicit non-default
runtime pin while migrating the legacy model ref. Current behavior:
the pin is silently overwritten by a synthesized { id: "codex" }
during the rewriteModelsMap spread-merge.

This commit intentionally lands the test RED so a follow-up fix can
flip it to GREEN with a focused diff.

Co-Authored-By: Nex <nex@dbitstec.com>
…gacy model-ref migration

`maybeRepairCodexRoutes` migrates `openai-codex/*` model refs to their
canonical `openai/*` form, then calls `ensureCodexRuntimePolicy` on each
hit so the rewritten ref keeps Codex auth routing. When the user already
had an explicit non-default pin on the legacy form (for example
`models["openai-codex/gpt-5.4"].agentRuntime = { id: "pi" }` as a
deliberate opt-out from the broken native Codex runtime), the previous
sequence silently overwrote it:

1. The `AGENT_MODEL_CONFIG_KEYS` loop rewrote `model.primary`, then
   `preserveCodexRuntimePolicyForNewHits` synthesized
   `models["openai/gpt-5.4"].agentRuntime = { id: "codex" }` because
   that canonical entry did not yet exist.
2. `rewriteModelsMap` then renamed `openai-codex/gpt-5.4` →
   `openai/gpt-5.4`. Its spread merge
   `{ ...legacyRecord, ...canonicalRecord }` placed the synthesized
   `{ id: "codex" }` last, silently dropping the user's `{ id: "pi" }`
   pin.

End state: the explicit PI runtime opt-out was gone, gateway fell back
to the native Codex runtime, and per-request token usage grew 3-4x
because the upstream Codex runtime issue still applies.

Fix: in `ensureCodexRuntimePolicy`, skip synthesizing the default
`{ id: "codex" }` pin when the user already has an explicit non-default
pin on a legacy `openai-codex/*` form of the same canonical model ref.
`rewriteModelsMap` then carries the legacy pin forward unmodified via
its existing `canonicalEntry ?? legacyEntry` falsy branch.

This narrow fix matches the existing behavior covered by
`preserves explicit model-scoped runtime pins when repairing legacy
model map keys` (only the models map, no `model.primary` slot to trigger
synthesis) and `overwrites non-concrete model-scoped runtime pins when
preserving Codex route intent` (auto/default pins still get codex
applied). The combined-config path from #84038 was the previously
uncovered regression.

Fixes #84038.

Co-Authored-By: Nex <nex@dbitstec.com>
…2 (1)

Co-authored-by: David <32288+nxmxbbd@users.noreply.github.com>

Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
…2 (2)

Co-authored-by: David <32288+nxmxbbd@users.noreply.github.com>

Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
…2 (3)

Co-authored-by: David <32288+nxmxbbd@users.noreply.github.com>

Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: David <32288+nxmxbbd@users.noreply.github.com>

Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
…2 (validation-1)

Co-authored-by: David <32288+nxmxbbd@users.noreply.github.com>

Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
@clawsweeper clawsweeper Bot force-pushed the clawsweeper/automerge-openclaw-openclaw-84142 branch from 075cc3d to c142ec1 Compare May 29, 2026 10:58
@clawsweeper clawsweeper Bot added rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. labels May 29, 2026
@clawsweeper clawsweeper Bot merged commit 468b971 into main May 29, 2026
109 of 111 checks passed
@clawsweeper clawsweeper Bot deleted the clawsweeper/automerge-openclaw-openclaw-84142 branch May 29, 2026 12:22
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 30, 2026
…gration [AI-assisted] (openclaw#84362)

Summary:
- The PR updates Codex doctor route repair to preserve explicit non-default `agentRuntime` pins across agent model maps and provider policies, adds regression coverage, and tightens a live-gateway test helper type guard.
- PR surface: Source +240, Tests +574. Total +814 across 3 files.
- Reproducibility: yes. The source path is clear from current main's model-map merge behavior and the PR's bef ... beRepairCodexRoutes` with the reported config, though this read-only review did not execute the test suite.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(doctor): preserve explicit non-default agentRuntime pin during le…
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8414…

Validation:
- ClawSweeper review passed for head c142ec1.
- Required merge gates passed before the squash merge.

Prepared head SHA: c142ec1
Review: openclaw#84362 (comment)

Co-authored-by: David Huang <nxmxbbd@gmail.com>
Co-authored-by: Nex <nex@dbitstec.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request May 31, 2026
…026.5.28) (#759)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/openclaw/openclaw](https://openclaw.ai) ([source](https://github.com/openclaw/openclaw)) | patch | `2026.5.27` → `2026.5.28` |

---

### Release Notes

<details>
<summary>openclaw/openclaw (ghcr.io/openclaw/openclaw)</summary>

### [`v2026.5.28`](https://github.com/openclaw/openclaw/blob/HEAD/CHANGELOG.md#2026528)

[Compare Source](openclaw/openclaw@v2026.5.27...v2026.5.28)

##### Highlights

- Agent and Codex runtime recovery is steadier: subagents keep cwd/workspace separation, hook context stays prompt-local, session locks release on timeout abort while live OpenClaw locks survive cleanup, stale restart continuations are avoided, and Codex app-server/helper failures no longer tear down shared runtime state. ([#&#8203;87218](openclaw/openclaw#87218), [#&#8203;86875](openclaw/openclaw#86875), [#&#8203;87409](openclaw/openclaw#87409), [#&#8203;87399](openclaw/openclaw#87399), [#&#8203;87375](openclaw/openclaw#87375), [#&#8203;88129](openclaw/openclaw#88129))
- Channel delivery and session identity got safer across outbound plugin hooks, Matrix room ids, iMessage reactions/approvals, Slack final replies, Discord recovered tool warnings, runtime-config message actions, WhatsApp profile auth roots, Telegram polling, and Microsoft Teams service URL trust checks. ([#&#8203;73706](openclaw/openclaw#73706), [#&#8203;75670](openclaw/openclaw#75670), [#&#8203;87366](openclaw/openclaw#87366), [#&#8203;87451](openclaw/openclaw#87451), [#&#8203;87334](openclaw/openclaw#87334), [#&#8203;84535](openclaw/openclaw#84535), [#&#8203;82492](openclaw/openclaw#82492), [#&#8203;83304](openclaw/openclaw#83304), [#&#8203;87160](openclaw/openclaw#87160))
- Mobile and chat surfaces got a broader refresh: the iOS Pro UI, hosted push relay default, realtime Talk tab playback, Gateway chat transport, onboarding, Talk permissions, WebChat reconnect delivery, and session picker behavior now preserve more state across reconnects and empty searches. ([#&#8203;87367](openclaw/openclaw#87367), [#&#8203;87531](openclaw/openclaw#87531), [#&#8203;87682](openclaw/openclaw#87682), [#&#8203;88096](openclaw/openclaw#88096), [#&#8203;88105](openclaw/openclaw#88105)) Thanks [@&#8203;ngutman](https://github.com/ngutman) and [@&#8203;BunsDev](https://github.com/BunsDev).
- Browser, channel, and automation inputs are stricter: Browser tool timeouts, viewport/tab indices, Gateway ports, cron retry handling, Discord component ids, schema array refs, Telegram callback pages, and channel progress callbacks now reject malformed values earlier and preserve the intended delivery context. ([#&#8203;82887](openclaw/openclaw#82887))
- Provider, media, and document coverage expands with Claude Opus 4.8, Fal Krea image schemas, NVIDIA featured models, MiniMax streaming music responses, encrypted PDF extraction, voice model catalogs, GitHub Copilot agent runtime support, and a Codex Supervisor plugin path for delegated Codex workflows. ([#&#8203;87845](openclaw/openclaw#87845), [#&#8203;87890](openclaw/openclaw#87890), [#&#8203;80775](openclaw/openclaw#80775), [#&#8203;84764](openclaw/openclaw#84764), [#&#8203;87751](openclaw/openclaw#87751), [#&#8203;87794](openclaw/openclaw#87794))
- CLI, auth, doctor, and provider paths fail faster and recover more clearly: malformed numeric/version options are rejected, workspace dotenv provider credentials are ignored, heartbeat defaults, OAuth/token lifetimes, and local service startup requests are bounded, agent auth health labels are clearer, legacy `api_key` auth profiles migrate to canonical form, and restart guidance is actionable. ([#&#8203;87398](openclaw/openclaw#87398), [#&#8203;86281](openclaw/openclaw#86281), [#&#8203;87361](openclaw/openclaw#87361), [#&#8203;88133](openclaw/openclaw#88133), [#&#8203;83655](openclaw/openclaw#83655), [#&#8203;87559](openclaw/openclaw#87559), [#&#8203;88088](openclaw/openclaw#88088), [#&#8203;85924](openclaw/openclaw#85924)) Thanks [@&#8203;vincentkoc](https://github.com/vincentkoc) and [@&#8203;giodl73-repo](https://github.com/giodl73-repo).
- Plugin and Gateway hot paths do less repeated work while preserving cache correctness for install records, config JSON parsing, tool search catalogs, session stores, manifest model rows, auto-enabled plugin config, browser tokens, viewer assets, and release-split external plugin packages. ([#&#8203;86699](openclaw/openclaw#86699))
- Release, QA, and E2E validation now bound more log, artifact, harness, and cross-OS waits so failing lanes produce proof instead of hanging or false-greening.

##### Changes

- Status: show active subagent details in status output.
- Diffs: split the default language pack and expand default Diffs language coverage while keeping the host floor aligned. ([#&#8203;87370](openclaw/openclaw#87370), [#&#8203;87372](openclaw/openclaw#87372)) Thanks [@&#8203;RomneyDa](https://github.com/RomneyDa).
- ClawHub: add plugin display names plus skill verification and trust surfaces. ([#&#8203;87354](openclaw/openclaw#87354), [#&#8203;86699](openclaw/openclaw#86699)) Thanks [@&#8203;thewilloftheshadow](https://github.com/thewilloftheshadow) and [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- iOS: refresh the dev app with Pro Command, Chat, Agents, Settings, hosted push relay defaults, and realtime Talk playback wired to gateway sessions, diagnostics, chat, and realtime Talk. ([#&#8203;87367](openclaw/openclaw#87367), [#&#8203;88096](openclaw/openclaw#88096), [#&#8203;88105](openclaw/openclaw#88105)) Thanks [@&#8203;Solvely-Colin](https://github.com/Solvely-Colin) and [@&#8203;ngutman](https://github.com/ngutman).
- Docs: clarify Codex computer-use setup, paste-token stdin auth setup, macOS gateway sleep troubleshooting, native Codex hook relay recovery, container model auth, install deployment cards, device-token admin gating, CLI setup flow compatibility, Notte cloud browser CDP setup, and backport targets. ([#&#8203;87313](openclaw/openclaw#87313), [#&#8203;63050](openclaw/openclaw#63050), [#&#8203;87685](openclaw/openclaw#87685)) Thanks [@&#8203;bdjben](https://github.com/bdjben), [@&#8203;liaoandi](https://github.com/liaoandi), and [@&#8203;thewilloftheshadow](https://github.com/thewilloftheshadow).
- PDF/tools: use ClawPDF for PDF extraction, support encrypted PDF extraction, and surface MCP structured content in agent tool results. ([#&#8203;87670](openclaw/openclaw#87670), [#&#8203;87751](openclaw/openclaw#87751))
- Providers: add Claude Opus 4.8 support, Fal Krea image model schemas, NVIDIA featured model catalogs, MiniMax streaming music responses, and provider-backed voice model catalogs. ([#&#8203;87845](openclaw/openclaw#87845), [#&#8203;87890](openclaw/openclaw#87890), [#&#8203;80775](openclaw/openclaw#80775), [#&#8203;84764](openclaw/openclaw#84764), [#&#8203;87794](openclaw/openclaw#87794)) Thanks [@&#8203;eleqtrizit](https://github.com/eleqtrizit) and [@&#8203;vincentkoc](https://github.com/vincentkoc).
- Codex/GitHub: add the GitHub Copilot agent runtime and the Codex Supervisor plugin package.
- Plugins: externalize GitHub Copilot and Tokenjuice as official install-on-demand plugins with npm and ClawHub publish metadata.
- Workboard: add agent coordination tools for tracking and handing off active agent work.
- Discord: show commentary in progress drafts so live Discord runs expose useful in-progress context. ([#&#8203;85200](openclaw/openclaw#85200))
- Plugin SDK: add a reply payload sending hook for plugins that need to deliver channel-owned replies and flatten package types for SDK declarations. ([#&#8203;82823](openclaw/openclaw#82823), [#&#8203;87165](openclaw/openclaw#87165)) Thanks [@&#8203;piersonr](https://github.com/piersonr) and [@&#8203;RomneyDa](https://github.com/RomneyDa).
- Policy: add policy comparison, ingress-channel conformance, and sandbox-posture conformance checks. ([#&#8203;85572](openclaw/openclaw#85572), [#&#8203;85744](openclaw/openclaw#85744), [#&#8203;86768](openclaw/openclaw#86768))

##### Fixes

- Agents: fall back to local config pruning when the optional `agents delete` Gateway probe cannot authenticate, so offline installs can still delete agents without removing shared workspaces.
- Tighten phone-control mutation authorization \[AI]. ([#&#8203;87150](openclaw/openclaw#87150)) Thanks [@&#8203;pgondhi987](https://github.com/pgondhi987).
- Clarify directive persistence authorization policy \[AI]. ([#&#8203;86369](openclaw/openclaw#86369)) Thanks [@&#8203;pgondhi987](https://github.com/pgondhi987).
- Agents/Codex: keep spawned agent cwd/workspace state separated, forward ACP spawn attachments, keep hook context prompt-local, release session locks on timeout abort and runtime teardown without deleting live OpenClaw-owned locks during cleanup, avoid session event queue self-wait, clean up exec abort listeners, stream assistant deltas incrementally, recover raw missing-thread compaction failures, preserve rotated compaction session identity, keep compaction-timeout snapshots continuable, preserve shared app-server state across startup or helper failures, keep native hook relay alive across restarts and prune stale bridge files, close native hook relay replacement races, keep Claude live tool progress visible for watchdog recovery, suppress abandoned requester completion handoff, route workspace memory through tools, resolve Codex runtime models first, report quarantined dynamic tools, format `skills` command output, bind node auto-review to prepared plans, retry Claude CLI transcript probes, and bound compaction/steering retries. ([#&#8203;87218](openclaw/openclaw#87218), [#&#8203;86875](openclaw/openclaw#86875), [#&#8203;86123](openclaw/openclaw#86123), [#&#8203;88129](openclaw/openclaw#88129), [#&#8203;87399](openclaw/openclaw#87399), [#&#8203;87375](openclaw/openclaw#87375), [#&#8203;72574](openclaw/openclaw#72574), [#&#8203;87383](openclaw/openclaw#87383), [#&#8203;87400](openclaw/openclaw#87400), [#&#8203;83022](openclaw/openclaw#83022), [#&#8203;87671](openclaw/openclaw#87671), [#&#8203;87738](openclaw/openclaw#87738), [#&#8203;87747](openclaw/openclaw#87747), [#&#8203;87706](openclaw/openclaw#87706), [#&#8203;87546](openclaw/openclaw#87546), [#&#8203;87541](openclaw/openclaw#87541), [#&#8203;81048](openclaw/openclaw#81048)) Thanks [@&#8203;mbelinky](https://github.com/mbelinky), [@&#8203;Alix-007](https://github.com/Alix-007), [@&#8203;luoyanglang](https://github.com/luoyanglang), [@&#8203;yetval](https://github.com/yetval), [@&#8203;sjf](https://github.com/sjf), [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;benjamin1492](https://github.com/benjamin1492), [@&#8203;c19354837](https://github.com/c19354837), [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev), [@&#8203;pfrederiksen](https://github.com/pfrederiksen), and [@&#8203;dodge1218](https://github.com/dodge1218).
- Codex Supervisor: keep real-home app-server MCP session listing on the loaded state path, bound stored history scans, and close WebSocket probes cleanly.
- Channels: thread canonical session keys into outbound hooks, preserve Matrix room-id case, keep fallback tool warnings mention-inert, retain delivered Slack final replies during late cleanup, continue iMessage polling after denied reactions, suppress duplicate native exec approvals, resolve Gateway message actions against the active runtime config, preserve Telegram SecretRef prompt config and polling keepalives, preserve WhatsApp profile auth roots, QR display, document filenames, and plugin hook config, suppress Discord recovered tool warnings, preserve the Discord voice outbound helper, cap Discord/Signal/Zalo channel request and container timeouts, and block untrusted Teams service URLs while keeping TeamsSDK patterns aligned. ([#&#8203;73706](openclaw/openclaw#73706), [#&#8203;75670](openclaw/openclaw#75670), [#&#8203;87366](openclaw/openclaw#87366), [#&#8203;87451](openclaw/openclaw#87451), [#&#8203;87465](openclaw/openclaw#87465), [#&#8203;87334](openclaw/openclaw#87334), [#&#8203;84535](openclaw/openclaw#84535), [#&#8203;76262](openclaw/openclaw#76262), [#&#8203;83304](openclaw/openclaw#83304), [#&#8203;82492](openclaw/openclaw#82492), [#&#8203;87581](openclaw/openclaw#87581), [#&#8203;77114](openclaw/openclaw#77114), [#&#8203;86426](openclaw/openclaw#86426), [#&#8203;85529](openclaw/openclaw#85529), [#&#8203;87160](openclaw/openclaw#87160)) Thanks [@&#8203;zeroaltitude](https://github.com/zeroaltitude), [@&#8203;lukeboyett](https://github.com/lukeboyett), [@&#8203;jarvis-mns1](https://github.com/jarvis-mns1), [@&#8203;xiaotian](https://github.com/xiaotian), [@&#8203;funmerlin](https://github.com/funmerlin), [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;eleqtrizit](https://github.com/eleqtrizit), [@&#8203;heyitsaamir](https://github.com/heyitsaamir), [@&#8203;amittell](https://github.com/amittell), [@&#8203;lidge-jun](https://github.com/lidge-jun), [@&#8203;liorb-mountapps](https://github.com/liorb-mountapps), [@&#8203;masatohoshino](https://github.com/masatohoshino), [@&#8203;bladin](https://github.com/bladin), and [@&#8203;giodl73-repo](https://github.com/giodl73-repo).
- CLI/auth/doctor/providers: reject malformed numeric/timeout/subcommand-version inputs, ignore workspace dotenv provider credentials, wait for respawn child shutdown, bound heartbeat defaults plus Codex, GitHub Copilot, OpenAI, Anthropic, Google, Feishu, LM Studio, MiniMax, Xiaomi TTS, and local-provider OAuth/token/model requests, harden Codex auth probes, label auth health by agent, preserve explicit agentRuntime pins during Codex model migration, warm provider auth off the main thread, honor Codex response timeouts, stop migrating current Claude Haiku 4.5 profiles to Sonnet, bound local service startup, resolve GPT-5.5 without cached catalog, migrate legacy memory auto-provider config, rewrite non-canonical `api_key` auth profiles, and make doctor restart follow-ups actionable. ([#&#8203;87398](openclaw/openclaw#87398), [#&#8203;86281](openclaw/openclaw#86281), [#&#8203;87361](openclaw/openclaw#87361), [#&#8203;88133](openclaw/openclaw#88133), [#&#8203;83655](openclaw/openclaw#83655), [#&#8203;87559](openclaw/openclaw#87559), [#&#8203;87719](openclaw/openclaw#87719), [#&#8203;88088](openclaw/openclaw#88088), [#&#8203;85924](openclaw/openclaw#85924), [#&#8203;84362](openclaw/openclaw#84362)) Thanks [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@&#8203;samzong](https://github.com/samzong), [@&#8203;giodl73-repo](https://github.com/giodl73-repo), [@&#8203;alkor2000](https://github.com/alkor2000), [@&#8203;mmaps](https://github.com/mmaps), [@&#8203;nxmxbbd](https://github.com/nxmxbbd), and [@&#8203;vincentkoc](https://github.com/vincentkoc).
- Gateway/security/session state: expire browser tokens after auth rotation, scope assistant idempotency dedupe, drain probe client closes, avoid stale restart continuation reuse, preserve retry-after fallbacks and stale rate-limit cooldown probes, bound webchat image and artifact transcript scans, include seconds in inbound metadata timestamps, clear completed session active runs, clear stale chat stream buffers, and evict current plugin-state namespaces at row caps. ([#&#8203;87810](openclaw/openclaw#87810), [#&#8203;87833](openclaw/openclaw#87833), [#&#8203;75089](openclaw/openclaw#75089)) Thanks [@&#8203;joshavant](https://github.com/joshavant) and [@&#8203;litang9](https://github.com/litang9).
- Config/parsing/network: reject partial numeric parsing, parse provider/Discord retry headers and dates strictly, honor IPv6 and bare IPv6 `no_proxy` entries, preserve empty plugin allowlists, canonicalize secret target array indexes, and reject malformed media content lengths, inspected TCP ports, marketplace content lengths, cron epochs, sandbox stat fields, unsafe duration values, empty config path segments, noncanonical schema array refs, unsafe Telegram callback pages, and invalid Teams attachment-fetch DNS targets. ([#&#8203;87883](openclaw/openclaw#87883)) Thanks [@&#8203;zhangguiping-xydt](https://github.com/zhangguiping-xydt).
- Browser/input hardening: reject invalid tab indexes, excessive viewport resizes, explicit zero CDP ports, malformed geolocation options, unsafe screenshot or permission-grant timeouts, loose response-body limits, invalid cookie expiries, and non-finite Browser tool delays/timeouts.
- Cron/automation: retry recurring jobs after transient model rate limits before waiting for the next scheduled slot, and preflight model fallbacks before skipping scheduled work. ([#&#8203;82887](openclaw/openclaw#82887)) Thanks [@&#8203;chen-zhang-cs-code](https://github.com/chen-zhang-cs-code).
- Auto-reply/directives: respect provider and relayed channel metadata during directive persistence so channel-originated decisions keep their intended context. ([#&#8203;87683](openclaw/openclaw#87683))
- WhatsApp: resolve the auth directory from the active profile so profile-scoped WhatsApp installs do not drift to the wrong credential root. ([#&#8203;82492](openclaw/openclaw#82492)) Thanks [@&#8203;lidge-jun](https://github.com/lidge-jun).
- Gateway/session state: clear completed session active runs, avoid cold-loading providers for MCP inventory, cache single-session child indexes, cap handshake timers, and bound preauth, auth-guard, media, transcript, readiness, and port options.
- Channels/replies: preserve channel-owned progress callbacks when verbose output is off, keep group-room progress suppression intact, prefer external session delivery context, escape Discord component id delimiters, force final TUI chat repaints, show Slack reasoning previews, and normalize Discord/Matrix/Mattermost channel numeric options. ([#&#8203;87476](openclaw/openclaw#87476), [#&#8203;87423](openclaw/openclaw#87423))
- Agents/tool args: harden smart-quoted argument repair for edit arrays and exact escaped arguments so model-produced tool calls recover without corrupting valid input. ([#&#8203;86611](openclaw/openclaw#86611)) Thanks [@&#8203;ferminquant](https://github.com/ferminquant).
- Providers/agents: preserve seeded Anthropic signatures, preserve signed thinking payloads, concatenate signature-delta chunks, preserve DeepSeek `reasoning_content` replay across tier suffixes, apply OpenRouter strict9 ids to Mistral routes, promote Ollama plain-text tool calls, load NVIDIA featured model catalogs, stream MiniMax music generation responses, and recover empty preflight compaction. ([#&#8203;87593](openclaw/openclaw#87593), [#&#8203;87493](openclaw/openclaw#87493), [#&#8203;80775](openclaw/openclaw#80775), [#&#8203;84764](openclaw/openclaw#84764)) Thanks [@&#8203;Pluviobyte](https://github.com/Pluviobyte) and [@&#8203;eleqtrizit](https://github.com/eleqtrizit).
- Media/images: skip CLI image cache refs when resolving generated images, allow trusted generated HTML attachments, and bound generated video downloads so stale refs and slow providers fail cleanly. ([#&#8203;87523](openclaw/openclaw#87523), [#&#8203;87982](openclaw/openclaw#87982))
- File transfer: handle late tar stdin pipe errors after archive validation or unpacking has already settled.
- Performance: trust install-record caches between reloads, prefer native JSON parsing, reuse unchanged tool-search catalogs, reuse gateway session and plugin metadata paths, skip unchanged store serialization, patch single-entry session writes, add precomputed session patch writers, reduce store clone allocations, cache manifest model catalog rows and auto-enabled plugin config, avoid full session snapshots for entry reads, defer configured Slack full startup, prefer bundled plugin dist entries, and slim current metadata identity caches. ([#&#8203;87760](openclaw/openclaw#87760))
- Docker/release/QA: package runtime workspace templates, stream cross-OS served artifacts, preserve sparse Crabbox run artifacts, isolate npm plugin installs per package, reject incompatible package plugin API installs, drop the leftover root Sharp dependency from package manifests after the Rastermill migration, bound OpenClaw instance logs, plugin gauntlet relay logs, MCP channel buffers, kitchen-sink scans, agent-turn assertions, QA-Lab credential broker calls, QA Matrix substrate requests, and release scenario logs, and keep release/google live guards current. ([#&#8203;87647](openclaw/openclaw#87647), [#&#8203;87477](openclaw/openclaw#87477)) Thanks [@&#8203;rohitjavvadi](https://github.com/rohitjavvadi) and [@&#8203;vincentkoc](https://github.com/vincentkoc).
- Release/CI: bound manual git fetches, ClawHub verifier responses, ClawHub owner metadata, dependency-guard error bodies, Parallels limits, startup/test/memory budget parsing, and diffs viewer build warnings so release lanes fail with useful proof instead of hanging. ([#&#8203;87839](openclaw/openclaw#87839))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/759
SYU8384 pushed a commit to SYU8384/openclaw that referenced this pull request Jun 3, 2026
…gration [AI-assisted] (openclaw#84362)

Summary:
- The PR updates Codex doctor route repair to preserve explicit non-default `agentRuntime` pins across agent model maps and provider policies, adds regression coverage, and tightens a live-gateway test helper type guard.
- PR surface: Source +240, Tests +574. Total +814 across 3 files.
- Reproducibility: yes. The source path is clear from current main's model-map merge behavior and the PR's bef ... beRepairCodexRoutes` with the reported config, though this read-only review did not execute the test suite.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(doctor): preserve explicit non-default agentRuntime pin during le…
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8414…

Validation:
- ClawSweeper review passed for head c142ec1.
- Required merge gates passed before the squash merge.

Prepared head SHA: c142ec1
Review: openclaw#84362 (comment)

Co-authored-by: David Huang <nxmxbbd@gmail.com>
Co-authored-by: Nex <nex@dbitstec.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
sablehead pushed a commit to sablehead/openclaw that referenced this pull request Jun 10, 2026
…gration [AI-assisted] (openclaw#84362)

Summary:
- The PR updates Codex doctor route repair to preserve explicit non-default `agentRuntime` pins across agent model maps and provider policies, adds regression coverage, and tightens a live-gateway test helper type guard.
- PR surface: Source +240, Tests +574. Total +814 across 3 files.
- Reproducibility: yes. The source path is clear from current main's model-map merge behavior and the PR's bef ... beRepairCodexRoutes` with the reported config, though this read-only review did not execute the test suite.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(doctor): preserve explicit non-default agentRuntime pin during le…
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8414…

Validation:
- ClawSweeper review passed for head c142ec1.
- Required merge gates passed before the squash merge.

Prepared head SHA: c142ec1
Review: openclaw#84362 (comment)

Co-authored-by: David Huang <nxmxbbd@gmail.com>
Co-authored-by: Nex <nex@dbitstec.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge clawsweeper Tracked by ClawSweeper automation commands Command implementations gateway Gateway runtime merge-risk: 🚨 auth-provider 🚨 May break OAuth, tokens, provider routing, model choice, or credentials. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P1 High-priority user-facing bug, regression, or broken workflow. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. size: L status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: doctor --fix silently migrates intentional openai-codex/ config to openai/, breaking PI+OAuth runtime and causing 3-4x token inflation

2 participants