Skip to content

fix(browser): honor cdpUrl for user default profile#80143

Merged
sallyom merged 1 commit into
openclaw:mainfrom
HemantSudarshan:hemant/48042-browser-cdp-url
Jun 10, 2026
Merged

fix(browser): honor cdpUrl for user default profile#80143
sallyom merged 1 commit into
openclaw:mainfrom
HemantSudarshan:hemant/48042-browser-cdp-url

Conversation

@HemantSudarshan

@HemantSudarshan HemantSudarshan commented May 10, 2026

Copy link
Copy Markdown
Contributor

Fixes #48042

Problem summary

browser.cdpUrl was ignored when browser.defaultProfile selected an existing-session profile such as the built-in user profile. Chrome MCP then launched through its default auto-connect path and could still look for DevToolsActivePort instead of using the configured endpoint.

Root cause

resolveBrowserConfig only carried the legacy top-level browser.cdpUrl into the managed openclaw profile. resolveProfile handles existing-session profiles from their profile-local cdpUrl, so an explicit defaultProfile: "user" left the selected profile with an empty endpoint.

Architectural reasoning

The fix stays inside browser profile resolution, where the legacy single-profile config is normalized. When the selected default profile is existing-session and has no explicit endpoint, the resolver now applies the normalized top-level browser.cdpUrl to that profile. Explicit per-profile cdpUrl still wins. Chrome MCP session creation, caching, cleanup, gateway routes, and action behavior are unchanged; the existing Chrome MCP argument builder already converts HTTP endpoints to --browserUrl and websocket endpoints to --wsEndpoint without combining them with userDataDir.

Testing performed

  • pnpm test extensions/browser/src/browser/config.test.ts
  • pnpm test extensions/browser/src/browser/chrome-mcp.test.ts
  • pnpm exec oxfmt --check --threads=1 extensions/browser/src/browser/config.ts extensions/browser/src/browser/config.test.ts
  • pnpm lint:extensions
  • pnpm tsgo:extensions from temporary P:\ mapping because the local checkout path contains a space and the direct Windows command split C:\Projects\Personal Project.
  • pnpm tsgo:extensions:test from temporary P:\ mapping for the same path reason.
  • git diff --check
  • pnpm check:changed exited 0 in this checkout, but printed no lane details.
  • pnpm test extensions/browser was attempted. It failed on existing local Windows environment assumptions outside this patch: unsupported local browser discovery in chrome.internal.test.ts, LaunchServices default-browser expectations, and POSIX /tmp path expectations resolving as C:\tmp.

Real behavior proof

  • Behavior or issue addressed: browser.defaultProfile: "user" plus top-level browser.cdpUrl now resolves to an existing-session profile with that endpoint, so Chrome MCP receives endpoint flags instead of --autoConnect.
  • Real environment tested: local Windows checkout, pnpm 10.33.2, Node v22.15.0. The repo warns it wants Node >=22.16.0, but targeted tests, lint, and typechecks completed as listed above.
  • Exact steps or command run after this patch:
pnpm exec tsx -e "import { resolveBrowserConfig, resolveProfile } from './extensions/browser/src/browser/config.ts'; import { buildChromeMcpArgs } from './extensions/browser/src/browser/chrome-mcp.ts'; const resolved = resolveBrowserConfig({ defaultProfile: 'user', cdpUrl: 'http://127.0.0.1:9222/' } as any); const profile = resolveProfile(resolved, resolved.defaultProfile); if (!profile) throw new Error('profile missing'); const args = buildChromeMcpArgs(profile); console.log(JSON.stringify({ defaultProfile: resolved.defaultProfile, driver: profile.driver, cdpUrl: profile.cdpUrl, args }, null, 2)); if (!args.includes('--browserUrl') || args.includes('--autoConnect') || args.includes('--userDataDir')) throw new Error('Chrome MCP args did not use configured cdpUrl cleanly');"
  • Evidence after fix:
{
  "defaultProfile": "user",
  "driver": "existing-session",
  "cdpUrl": "http://127.0.0.1:9222",
  "args": [
    "-y",
    "chrome-devtools-mcp@latest",
    "--browserUrl",
    "http://127.0.0.1:9222",
    "--experimentalStructuredContent",
    "--experimental-page-id-routing"
  ]
}
  • Observed result after fix: the selected user existing-session profile carries http://127.0.0.1:9222, and Chrome MCP launch args contain --browserUrl with no --autoConnect or --userDataDir fallback.
  • What was not tested: live attachment to a real Chrome v145 instance on port 9222 was not run in this environment.

Risk analysis

Risk is low to medium. The change is limited to config normalization and only affects an existing-session default profile with a top-level browser.cdpUrl and no profile-local endpoint. It does not modify session caching, concurrency, gateway protocol, route behavior, cleanup logic, or managed browser launch semantics. The main compatibility risk is users who accidentally had both defaultProfile: "user" and browser.cdpUrl; that config now follows the documented endpoint instead of silently ignoring it.

Backward compatibility

Existing defaults are preserved: the built-in user profile still has no endpoint unless selected as the default with a top-level browser.cdpUrl, and explicit browser.profiles.<name>.cdpUrl continues to take precedence. No public API shape, config schema, gateway payload, or protocol version changes are introduced.

@openclaw-barnacle openclaw-barnacle Bot added size: S proof: supplied External PR includes structured after-fix real behavior proof. labels May 10, 2026
@clawsweeper

clawsweeper Bot commented May 10, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed June 10, 2026, 11:02 AM ET / 15:02 UTC.

Summary
The PR applies normalized top-level browser.cdpUrl to the selected existing-session default profile when it has no profile-local endpoint, adds precedence tests, and updates endpoint help/type descriptions.

PR surface: Source +30, Tests +33. Total +63 across 4 files.

Reproducibility: yes. Current-main source provides a high-confidence path: top-level browser.cdpUrl is assigned to the managed profile, while the selected built-in user existing-session profile remains endpoint-free and therefore uses Chrome MCP auto-connect.

Review metrics: 1 noteworthy metric.

  • Config/default behavior: 1 existing setting newly honored in 1 selected-profile case. The patch changes how an existing top-level endpoint is normalized when the default is an existing-session profile, without adding a new config key or default.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🐚 platinum hermit
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

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

Rank-up moves:

  • none.

Next step before merge

  • The patch has no actionable repair finding and should proceed through normal maintainer review and landing rather than a ClawSweeper fix lane.

Security
Cleared: The diff adds no dependency, permission, secret-access, or code-execution source, and inherited endpoints use current main’s credential-redacted diagnostic and status paths.

Review details

Best possible solution:

Land the narrow resolver normalization on current main, keeping explicit per-profile cdpUrl authoritative and relying on the merged existing-session endpoint and redaction paths for runtime behavior.

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

Yes. Current-main source provides a high-confidence path: top-level browser.cdpUrl is assigned to the managed profile, while the selected built-in user existing-session profile remains endpoint-free and therefore uses Chrome MCP auto-connect.

Is this the best way to solve the issue?

Yes. Browser config resolution is the narrow normalization owner, and this implementation reuses the canonical profile-local endpoint runtime added by #91736 instead of adding another connection path.

AGENTS.md: found and applied where relevant.

Codex review notes: reasoning high; reviewed against ade5ac03506e.

Label changes

Label changes:

  • add P2: The PR fixes a bounded browser configuration bug that causes an explicitly configured endpoint to be ignored and selects the wrong Chrome MCP connection path.
  • add proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes after-fix local live output showing the selected user profile carries the normalized endpoint and Chrome MCP receives --browserUrl without --autoConnect or --userDataDir.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (live_output): The PR body includes after-fix local live output showing the selected user profile carries the normalized endpoint and Chrome MCP receives --browserUrl without --autoConnect or --userDataDir.

Label justifications:

  • P2: The PR fixes a bounded browser configuration bug that causes an explicitly configured endpoint to be ignored and selects the wrong Chrome MCP connection path.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (live_output): The PR body includes after-fix local live output showing the selected user profile carries the normalized endpoint and Chrome MCP receives --browserUrl without --autoConnect or --userDataDir.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes after-fix local live output showing the selected user profile carries the normalized endpoint and Chrome MCP receives --browserUrl without --autoConnect or --userDataDir.
Evidence reviewed

PR surface:

Source +30, Tests +33. Total +63 across 4 files.

View PR surface stats
Area Files Added Removed Net
Source 3 33 3 +30
Tests 1 33 0 +33
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 4 66 3 +63

What I checked:

  • Current-main reproduction: Current resolveBrowserConfig only passes the legacy endpoint into ensureDefaultProfile, which creates or updates the managed openclaw profile; ensureDefaultUserBrowserProfile creates user without cdpUrl, and no later normalization copies the top-level endpoint to the selected existing-session default. (extensions/browser/src/browser/config.ts:315, ade5ac03506e)
  • Exact refreshed patch: The PR head adds one resolver helper that fills only a selected existing-session profile with no explicit cdpUrl, then adds tests for inheritance and profile-local precedence. (extensions/browser/src/browser/config.ts:345, 6026eb8ad14a)
  • Merged sibling implementation: The related merged change supports profile-local existing-session endpoints in Chrome MCP, improves connection diagnostics, and redacts endpoint credentials, but its diff does not modify resolveBrowserConfig; this PR remains the missing legacy-config bridge. (extensions/browser/src/browser/chrome-mcp.ts:270, ac21e89c13e4)
  • Redaction coverage: Current main redacts resolved profile endpoints in browser status and formats endpoint diagnostics through CDP URL redaction, so an inherited endpoint follows the same credential-safe output paths as an explicit profile endpoint. (extensions/browser/src/browser/server-context.ts:236, ade5ac03506e)
  • Current-main provenance: Blame ties the current profile construction and legacy endpoint normalization block to the recent browser config refactor on main, while the endpoint runtime was subsequently completed by the merged related PR. (extensions/browser/src/browser/config.ts:417, 7b7e8f6e88e7)
  • Release status: The PR head is not contained by current main or any release tag, while the latest release predates both the refreshed head and the merged downstream endpoint commit; the requested top-level normalization is therefore not shipped or implemented on main. (6026eb8ad14a)

Likely related people:

  • lifuyue: Authored the merged existing-session endpoint routing, diagnostics, CLI/status, and redaction implementation that this normalization patch builds upon. (role: recent feature contributor; confidence: high; commits: ac21e89c13e4; files: extensions/browser/src/browser/chrome-mcp.ts, extensions/browser/src/browser/server-context.ts, extensions/browser/src/browser/profiles-service.ts)
  • Vincent Koc: The current browser config construction and legacy endpoint normalization block trace through the recent config refactor commit, making this a useful routing candidate for resolver behavior. (role: recent area contributor; confidence: medium; commits: 7b7e8f6e88e7; files: extensions/browser/src/browser/config.ts)
  • sallyom: Refreshed the PR head onto the current browser implementation and requested review after the related endpoint support merged. (role: recent integrator; confidence: medium; commits: 6026eb8ad14a; files: extensions/browser/src/browser/config.ts, extensions/browser/src/browser/config.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.

@RomneyDa

Copy link
Copy Markdown
Member

Heads up: this PR needs to be updated against current main before the new required Dependency Guard check can pass.

@sallyom sallyom force-pushed the hemant/48042-browser-cdp-url branch from 3e9e103 to 6026eb8 Compare June 10, 2026 14:56
Copilot AI review requested due to automatic review settings June 10, 2026 14:56
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 10, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes a configuration-resolution bug where top-level browser.cdpUrl was not honored when browser.defaultProfile selected an existing-session profile (notably the built-in user profile), causing Chrome MCP to fall back to --autoConnect behavior instead of using the configured DevTools endpoint.

Changes:

  • Apply the normalized top-level browser.cdpUrl to the selected default profile when that profile is existing-session and has no explicit per-profile cdpUrl.
  • Update config/help text to describe per-profile cdpUrl as a general CDP/DevTools endpoint (remote CDP or existing-session attach).
  • Add regression tests covering default-profile inheritance and precedence of explicit per-profile cdpUrl.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
src/config/types.browser.ts Clarifies cdpUrl documentation for browser profiles.
src/config/schema.help.ts Updates help text for per-profile cdpUrl to reflect existing-session attach semantics.
extensions/browser/src/browser/config.ts Fixes profile resolution to propagate legacy/top-level cdpUrl into an existing-session default profile when needed.
extensions/browser/src/browser/config.test.ts Adds tests validating the new default-profile cdpUrl inheritance and precedence rules.

Comment thread src/config/schema.help.ts
Comment on lines 349 to +350
"browser.profiles.*.cdpUrl":
"Per-profile CDP websocket URL used for explicit remote browser routing by profile name. Use this when profile connections terminate on remote hosts or tunnels.",
"Per-profile CDP/DevTools endpoint URL used for explicit browser routing by profile name. Use this for remote CDP hosts, tunnels, or existing-session profiles that should attach through a running Chrome DevTools endpoint.",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Jun 10, 2026
@sallyom sallyom self-assigned this Jun 10, 2026
@sallyom sallyom force-pushed the hemant/48042-browser-cdp-url branch from 6026eb8 to 625156c Compare June 10, 2026 16:24

sallyom commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Rebased this on current main after #91736 landed, resolved the overlap, and addressed the review finding by updating the top-level browser.cdpUrl help text to match the accepted CDP/DevTools endpoint forms.

The fix still targets #48042’s reported path: top-level browser.cdpUrl with defaultProfile: "user" now resolves into the selected existing-session profile, while explicit per-profile cdpUrl continues to take precedence. Targeted tests, formatting, diff check, and autoreview are clean. I’m comfortable merging this.

@sallyom sallyom merged commit 2e4bf41 into openclaw:main Jun 10, 2026
158 of 160 checks passed
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 11, 2026
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request Jun 12, 2026
…26.6.6) (#1040)

This PR contains the following updates:

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

---

### Release Notes

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

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

[Compare Source](openclaw/openclaw@v2026.6.5...v2026.6.6)

##### Highlights

- Security boundaries are substantially tighter across transcripts, sandbox binds, host environment inheritance, MCP stdio, Codex HTTP access, native search policy, elevated sender checks, deleted-agent ACP bypasses, loopback tools, Discord moderation, and Teams group actions; exec approvals now fail closed on timeout. ([#&#8203;91529](openclaw/openclaw#91529), [#&#8203;91618](openclaw/openclaw#91618), [#&#8203;91615](openclaw/openclaw#91615), [#&#8203;91619](openclaw/openclaw#91619), [#&#8203;91741](openclaw/openclaw#91741), [#&#8203;91745](openclaw/openclaw#91745), [#&#8203;91746](openclaw/openclaw#91746), [#&#8203;91748](openclaw/openclaw#91748), [#&#8203;91749](openclaw/openclaw#91749), [#&#8203;91750](openclaw/openclaw#91750), [#&#8203;91751](openclaw/openclaw#91751), [#&#8203;91752](openclaw/openclaw#91752), [#&#8203;91763](openclaw/openclaw#91763), [#&#8203;89938](openclaw/openclaw#89938)) Thanks [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;pgondhi987](https://github.com/pgondhi987), [@&#8203;mmaps](https://github.com/mmaps), [@&#8203;eleqtrizit](https://github.com/eleqtrizit), [@&#8203;shakkernerd](https://github.com/shakkernerd), and [@&#8203;drobison00](https://github.com/drobison00).
- Telegram delivery is safer and more coherent: account-scoped topics route to the right agent, streamed text survives tool calls, `/compact` works on generic ingress, callback handling uses concrete APIs, draft chunking is shared, durable dispatch dedupe moved into the SDK, and unauthorized DM text stays out of cache and prompt context. ([#&#8203;91189](openclaw/openclaw#91189), [#&#8203;88682](openclaw/openclaw#88682), [#&#8203;89588](openclaw/openclaw#89588), [#&#8203;90212](openclaw/openclaw#90212), [#&#8203;91876](openclaw/openclaw#91876), [#&#8203;91874](openclaw/openclaw#91874), [#&#8203;91904](openclaw/openclaw#91904), [#&#8203;91478](openclaw/openclaw#91478), [#&#8203;91915](openclaw/openclaw#91915)) Thanks [@&#8203;codysai001](https://github.com/codysai001), [@&#8203;alexzhu0](https://github.com/alexzhu0), [@&#8203;joelnishanth](https://github.com/joelnishanth), [@&#8203;snowzlm](https://github.com/snowzlm), [@&#8203;obviyus](https://github.com/obviyus), and [@&#8203;sallyom](https://github.com/sallyom).
- iMessage recovery and delivery now cover always-on inbound restart, durable echo markers, block streaming, idle approval discovery, hardened outbound transport, and actionable inbound startup diagnostics. ([#&#8203;91335](openclaw/openclaw#91335), [#&#8203;91449](openclaw/openclaw#91449), [#&#8203;88969](openclaw/openclaw#88969), [#&#8203;88530](openclaw/openclaw#88530), [#&#8203;91783](openclaw/openclaw#91783), [#&#8203;91785](openclaw/openclaw#91785)) Thanks [@&#8203;omarshahine](https://github.com/omarshahine), [@&#8203;jmissig](https://github.com/jmissig), and [@&#8203;colmbrogan](https://github.com/colmbrogan).
- Browser and MCP connectivity gained existing-session CDP support, discovered WebSocket validation, default-profile `cdpUrl` handling, safer browser-output boundaries, Streamable HTTP loopback transport, corrected OAuth/SSE authorization handling, and broader schema compatibility. ([#&#8203;91422](openclaw/openclaw#91422), [#&#8203;89851](openclaw/openclaw#89851), [#&#8203;91736](openclaw/openclaw#91736), [#&#8203;91747](openclaw/openclaw#91747), [#&#8203;91451](openclaw/openclaw#91451), [#&#8203;80143](openclaw/openclaw#80143)) Thanks [@&#8203;pgondhi987](https://github.com/pgondhi987), [@&#8203;anagnorisis2peripeteia](https://github.com/anagnorisis2peripeteia), [@&#8203;lifuyue](https://github.com/lifuyue), [@&#8203;eleqtrizit](https://github.com/eleqtrizit), [@&#8203;LiuwqGit](https://github.com/LiuwqGit), and [@&#8203;HemantSudarshan](https://github.com/HemantSudarshan).
- Control UI startup and first-reply latency are lower through cached model metadata, removal of the startup catalog wait, lazy slash-command loading, and first-event tracing with slow-reply diagnostics. ([#&#8203;91531](openclaw/openclaw#91531), [#&#8203;91538](openclaw/openclaw#91538), [#&#8203;91568](openclaw/openclaw#91568), [#&#8203;91583](openclaw/openclaw#91583), [#&#8203;91598](openclaw/openclaw#91598))
- Provider support expands with OpenRouter OAuth onboarding and Claude Fable 5 adaptive thinking, while Codex sessions keep correct compaction ownership, local models skip guardian review, dynamic tool progress normalizes cleanly, and Gemma 4 reasoning replay is preserved. ([#&#8203;91830](openclaw/openclaw#91830), [#&#8203;91882](openclaw/openclaw#91882), [#&#8203;91590](openclaw/openclaw#91590), [#&#8203;88630](openclaw/openclaw#88630), [#&#8203;88768](openclaw/openclaw#88768), [#&#8203;91696](openclaw/openclaw#91696)) Thanks [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;bdjben](https://github.com/bdjben), and [@&#8203;Coder-Wangyankun](https://github.com/Coder-Wangyankun).

##### Changes

- CLI progress: emit Claude CLI commentary progress events and bridge inter-tool commentary into channel progress without exposing internal protocol scaffolding. ([#&#8203;89834](openclaw/openclaw#89834), [#&#8203;90883](openclaw/openclaw#90883)) Thanks [@&#8203;anagnorisis2peripeteia](https://github.com/anagnorisis2peripeteia).
- Observability: allow trusted diagnostics channels to capture tool input/output content, add first-assistant-event traces, and warn on slow initial replies. ([#&#8203;91256](openclaw/openclaw#91256), [#&#8203;91568](openclaw/openclaw#91568), [#&#8203;91583](openclaw/openclaw#91583)) Thanks [@&#8203;amknight](https://github.com/amknight).
- Plugins/ClawHub: dogfood reusable package publishing, let dry runs skip publish approval, allow declared installed trusted hooks, report managed plugin version drift, and warn instead of failing on retired Skill Workshop configuration. ([#&#8203;91574](openclaw/openclaw#91574), [#&#8203;91591](openclaw/openclaw#91591), [#&#8203;90004](openclaw/openclaw#90004), [#&#8203;90927](openclaw/openclaw#90927), [#&#8203;90838](openclaw/openclaw#90838)) Thanks [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@&#8203;brokemac79](https://github.com/brokemac79), and [@&#8203;lonexreb](https://github.com/lonexreb).
- Memory/providers: move the local llama.cpp runtime into its provider plugin, batch embeddings across files, persist the agent model catalog cache, and keep QMD JSON search one-shot while filtering stale REM recall previews. ([#&#8203;91324](openclaw/openclaw#91324), [#&#8203;89138](openclaw/openclaw#89138), [#&#8203;90457](openclaw/openclaw#90457), [#&#8203;91837](openclaw/openclaw#91837), [#&#8203;91851](openclaw/openclaw#91851)) Thanks [@&#8203;osolmaz](https://github.com/osolmaz), [@&#8203;mushuiyu886](https://github.com/mushuiyu886), [@&#8203;ai-hpc](https://github.com/ai-hpc), and [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Channels/mobile: add the QQBot group mention toggle, improve iPad and iPhone control surfaces, and expose the active connection host in the TUI footer. ([#&#8203;91423](openclaw/openclaw#91423), [#&#8203;91557](openclaw/openclaw#91557), [#&#8203;89909](openclaw/openclaw#89909)) Thanks [@&#8203;cxyhhhhh](https://github.com/cxyhhhhh), [@&#8203;Solvely-Colin](https://github.com/Solvely-Colin), and [@&#8203;baskduf](https://github.com/baskduf).
- Performance: prewarm TUI runtime plugins, deduplicate plugin auto-enable fanout, trim dense text-delta snapshots, and reuse prepared startup model metadata. ([#&#8203;90782](openclaw/openclaw#90782), [#&#8203;89978](openclaw/openclaw#89978), [#&#8203;91580](openclaw/openclaw#91580), [#&#8203;91531](openclaw/openclaw#91531)) Thanks [@&#8203;RomneyDa](https://github.com/RomneyDa) and [@&#8203;ai-hpc](https://github.com/ai-hpc).

##### Fixes

- Agent/session recovery: drop stale approval follow-ups after session rebind, remove drained reply-queue items by identity, recover stale main and visible replies, preserve Codex context-engine compaction ownership, lower the default compaction timeout to 180 seconds while respecting explicit configuration, and keep provider-failure terminal lifecycle state correct. ([#&#8203;85679](openclaw/openclaw#85679), [#&#8203;91450](openclaw/openclaw#91450), [#&#8203;91566](openclaw/openclaw#91566), [#&#8203;91840](openclaw/openclaw#91840), [#&#8203;91590](openclaw/openclaw#91590), [#&#8203;91361](openclaw/openclaw#91361), [#&#8203;91895](openclaw/openclaw#91895)) Thanks [@&#8203;openperf](https://github.com/openperf), [@&#8203;yetval](https://github.com/yetval), [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;wangmiao0668000666](https://github.com/wangmiao0668000666), and [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- User-visible content boundaries: suppress Codex/Harmony protocol artifacts, neutralize browser and LanceDB memory media directives, redact transcript images, and preserve native `/compact` replies through source suppression. ([#&#8203;89151](openclaw/openclaw#89151), [#&#8203;91422](openclaw/openclaw#91422), [#&#8203;91425](openclaw/openclaw#91425), [#&#8203;91529](openclaw/openclaw#91529), [#&#8203;90212](openclaw/openclaw#90212)) Thanks [@&#8203;joelnishanth](https://github.com/joelnishanth), [@&#8203;pgondhi987](https://github.com/pgondhi987), [@&#8203;joshavant](https://github.com/joshavant), and [@&#8203;snowzlm](https://github.com/snowzlm).
- Channel delivery: keep WhatsApp captured replies attached to the successor controller after restart, retry Feishu rate limits, preserve Mattermost thread replies, canonicalize LINE webhook paths, restore Discord reply hydration and runtime timeout exports, and show OpenAI Realtime WebRTC assistant transcripts. ([#&#8203;85823](openclaw/openclaw#85823), [#&#8203;89659](openclaw/openclaw#89659), [#&#8203;91684](openclaw/openclaw#91684), [#&#8203;91649](openclaw/openclaw#91649), [#&#8203;90263](openclaw/openclaw#90263), [#&#8203;91686](openclaw/openclaw#91686), [#&#8203;90426](openclaw/openclaw#90426)) Thanks [@&#8203;itsuzef](https://github.com/itsuzef), [@&#8203;ladygege](https://github.com/ladygege), [@&#8203;jacobtomlinson](https://github.com/jacobtomlinson), [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev), and [@&#8203;shushushv](https://github.com/shushushv).
- Cron: cancel active task runs cleanly, preserve terminal timeout/cancel state, and recover no-deliver tool warnings instead of silently losing the outcome. ([#&#8203;90666](openclaw/openclaw#90666), [#&#8203;90678](openclaw/openclaw#90678)) Thanks [@&#8203;ai-hpc](https://github.com/ai-hpc).
- Gateway/config/auth: share the approval runtime socket token, replace arrays explicitly in `config.patch`, skip the deleted-agent guard only for valid ACP harness sessions, surface headless LaunchAgent state, verify SQLite auth migration before cleanup, and arm QMD startup maintenance. ([#&#8203;87105](openclaw/openclaw#87105), [#&#8203;91551](openclaw/openclaw#91551), [#&#8203;91219](openclaw/openclaw#91219), [#&#8203;91614](openclaw/openclaw#91614), [#&#8203;91740](openclaw/openclaw#91740), [#&#8203;91978](openclaw/openclaw#91978)) Thanks [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev) and [@&#8203;scotthuang](https://github.com/scotthuang).
- Providers/Codex: clarify quota errors, restore the Codex synthetic usage line, canonicalize Codex protocol assets, require API-key auth for realtime voice, normalize ACP model refs, preserve Gemma 4 `reasoning_content`, and avoid guardian review for local models. ([#&#8203;91390](openclaw/openclaw#91390), [#&#8203;91709](openclaw/openclaw#91709), [#&#8203;91507](openclaw/openclaw#91507), [#&#8203;91567](openclaw/openclaw#91567), [#&#8203;88630](openclaw/openclaw#88630), [#&#8203;91696](openclaw/openclaw#91696)) Thanks [@&#8203;hxy91819](https://github.com/hxy91819), [@&#8203;brokemac79](https://github.com/brokemac79), [@&#8203;RomneyDa](https://github.com/RomneyDa), [@&#8203;joshavant](https://github.com/joshavant), and [@&#8203;Coder-Wangyankun](https://github.com/Coder-Wangyankun).
- Updates/builds: recover package Gateway restarts after refresh failure, expose plugin convergence repair, fall back to Corepack in PATH-less pnpm environments, seed the correct Docker store packages, and keep ClawHub dry-run and publish paths reusable. ([#&#8203;91581](openclaw/openclaw#91581), [#&#8203;91599](openclaw/openclaw#91599), [#&#8203;91547](openclaw/openclaw#91547), [#&#8203;91591](openclaw/openclaw#91591)) Thanks [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev), [@&#8203;sallyom](https://github.com/sallyom), and [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- UI: require explicit user intent before opening chat sessions and drain restored chat queues after session switches. ([#&#8203;91480](openclaw/openclaw#91480)) Thanks [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Android: avoid the `dataSync` foreground-service type for persistent nodes. ([#&#8203;80082](openclaw/openclaw#80082)) Thanks [@&#8203;davelutztx](https://github.com/davelutztx).
- Native hooks: bound relay lifetimes so abandoned native hook connections cannot linger indefinitely. ([#&#8203;91550](openclaw/openclaw#91550)) Thanks [@&#8203;joshavant](https://github.com/joshavant).

</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/1040
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: S status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

browser.cdpUrl config ignored — tool still looks for DevToolsActivePort file

4 participants