openclaw/CHANGELOG/2026.5.5.md
Hannes Rudolph 2227743f74
refactor: split release changelogs and synchronize docs mirrors (#145464)
* refactor: split release changelogs and synchronize docs mirrors

* fix: complete split changelog instructions and validation wiring

* fix: complete release changelog mirror integration

Regenerate existing docs mirrors within the docs-agent publication boundary, preserve one HTML release heading, and package links for oversized mirrors without changing frozen records. Update release publisher and test-routing fixtures for the shared changelog resolver.

* test: align docs agent Git ownership fixtures

Keep failure injection aligned with staged-index validation and mirror staging. Preserve native Git producer exit codes and verify both cached-index producers without weakening process-drain assertions.

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-09-11 21:19:18 -07:00

19 KiB

2026.5.5

Fixes

  • Telegram/Codex: generate DM topic labels with Codex-compatible simple-completion requests so auto-created private topics can be renamed instead of staying New Chat.
  • Doctor/Codex OAuth: preserve working openai-codex/* PI routes during doctor --fix, recover 2026.5.5-rewritten openai/* GPT-5 routes when only Codex OAuth auth is available, and warn without rewriting mixed Codex OAuth plus direct OpenAI PI routes, so update repair does not break subscription-auth setups. Fixes #78407. Thanks @shakkernerd.
  • Plugins/runtime fetch: drop third-party symbol metadata from plain request header dictionaries before passing them into native fetch or Headers, so SDK and guarded/proxy fetch paths do not reject otherwise valid plugin requests. Fixes #77846. Thanks @shakkernerd.
  • Web fetch: bound guarded dispatcher cleanup after request timeouts so timed-out fetches return tool errors instead of leaving Gateway tool lanes active. (#78439) Thanks @obviyus.
  • Mattermost/setup: prompt for and persist the server base URL after the bot token in openclaw setup --wizard, instead of failing validation before --http-url is collected. Fixes #76670. Thanks @jacobtomlinson.
  • Gate Slack startup user allowlist resolution [AI]. (#77898) Thanks @pgondhi987.
  • OpenAI/Codex: suppress stale openai-codex GPT-5.1/5.2/5.3 model refs that ChatGPT/Codex OAuth accounts now reject, keeping model lists, config validation, and forward-compat resolution on current 5.4/5.5 routes. Fixes #67158. Thanks @drpau.
  • CLI/update: keep pnpm package updates on the running custom global install root and pass pnpm's --global-dir so openclaw update does not create a second default-prefix install when OPENCLAW_HOME or the shell points at a custom OpenClaw directory. Fixes #78377. Thanks @amknight.
  • Google Meet/Voice Call: wait longer before playing PIN-derived Twilio DTMF for Meet dial-in prompts and retire stale delegated phone sessions instead of reusing completed calls.
  • PDF/Codex: include extraction-fallback instructions for openai-codex/* PDF tool requests so Codex Responses receives its required system prompt. Fixes #77872. Thanks @anyech.
  • Gateway/startup: keep the Gateway running when a configured optional plugin-owned capability such as a web_search provider or channel points at a known installable plugin that is currently unavailable; startup now logs a config warning and leaves openclaw doctor --fix to install or enable the plugin. (#78642) Thanks @joshavant.
  • Onboard/channels: recover externalized channel plugins from stale channels.<id> config by falling back to ensureChannelSetupPluginInstalled via the trusted catalog when the plugin is missing on disk, so leftover appId/token entries no longer dead-end onboard with " plugin not available." (#78328) Thanks @sliverp.
  • Codex/app-server: forward the OpenClaw workspace bootstrap block through Codex developerInstructions instead of config.instructions, so persona/style guidance reaches the behavior-shaping app-server lane. Fixes #77363. Thanks @lonexreb.
  • MS Teams: route proactive channel sends with stored thread roots through the configured threaded reply path instead of forcing every CLI/message-tool send into a new top-level post. Fixes #78298. Thanks @amknight.
  • CLI/infer: pass minimal instructions to local openai-codex/* model probes and surface provider error details when infer model run returns no text. Fixes #76464. Thanks @lilesjtu.
  • Dependencies: override transitive ip-address to 10.2.0 so the runtime lockfile no longer includes the vulnerable 10.1.0 build flagged by Dependabot alert 109. Thanks @vincentkoc.
  • Plugins/install: apply OpenClaw's npm security overrides inside managed external plugin npm roots so hoisted plugin dependencies inherit the host package hardening. Thanks @vincentkoc.
  • Plugins/install: skip npm peer resolution in managed plugin roots so installing peer-based plugins such as Opik cannot pull a stale registry openclaw copy beside Codex/Discord/WhatsApp and trigger ERESOLVE. Thanks @vincentkoc.
  • Plugins/uninstall: run managed npm cleanup even when a plugin package directory is already missing, preventing stale package manifests from reinstalling removed plugins on the next npm install.
  • Feishu: hydrate missing native topic starter thread IDs before session routing so first turns and follow-ups stay in the same topic session. Fixes #78262. Thanks @joeyzenghuan.
  • LINE: reject dmPolicy: "open" configs without wildcard allowFrom so webhook DMs fail validation instead of being acknowledged and silently blocked before inbound processing. Fixes #78316.
  • Telegram/Codex: keep message-tool-only progress drafts visible and render native Codex tool progress once per tool instead of duplicating item/tool draft lines. Fixes #75641. (#77949)
  • Providers/xAI: stop sending OpenAI-style reasoning effort controls to native Grok Responses models, so xai/grok-4.3 no longer fails live Docker/Gateway runs with Invalid reasoning effort.
  • Providers/xAI: clamp the bundled xAI thinking profile to off so live Gateway runs cannot send unsupported reasoning levels to native Grok Responses models.
  • Matrix/approvals: retry approval delivery up to 3 times with a short backoff so transient Matrix send failures do not strand pending approval prompts. (#78179) Thanks @Patrick-Erichsen.
  • Discord/gateway: measure heartbeat ACK timeouts from the actual heartbeat send, preventing late initial heartbeats from triggering false reconnect loops while the channel is still awaiting readiness. Fixes #77668. (#78087) Thanks @bryce-d-greybeard and @NikolaFC.
  • Discord/guilds: route plain text control commands such as /steer through the normal authorization and mention gate instead of silently dropping them before an agent session can see them. Fixes #78080. Thanks @ramitrkar-hash.
  • Control UI/Sessions: make the compaction count a compact N Checkpoint(s) disclosure and show expanded session-level details with modern checkpoint history cards across responsive table layouts. Thanks @BunsDev.
  • Control UI/performance: keep chat and channel tabs responsive while history payloads and channel probes are slow, label partial channel status, and record slow chat/config render timings in the event log. Thanks @BunsDev.
  • Control UI/sessions: fire the documented /new command and lifecycle hooks only for explicit Control UI session creation, restoring session-memory and custom hook capture without changing SDK parent-session creates. Fixes #76957. Thanks @BunsDev.
  • Exec approvals: fall back to a guarded copy when Windows rejects rename-overwrite for exec-approvals.json, while preserving symlink, hard-link, and owner-only permission safeguards. Fixes #77785. (#77907) Thanks @Alex-Alaniz and @MilleniumGenAI.
  • Status/session store: derive totalTokens for CLI backends from agentMeta.lastCallUsage (and set it on Claude CLI runs) so /status context usage is not shown as ? while cache/token lines are populated. Fixes #78194. Thanks @neeravmakwana.
  • Slack: preserve Socket Mode SDK error context and structured Slack API fields in reconnect logs, so startup failures no longer collapse to a bare unknown error.
  • iOS pairing: allow setup-code and manual ws:// connects for private LAN and .local gateways while keeping Tailscale/public routes on wss://, and prefer explicit gateway passwords over stale bootstrap tokens in mixed-auth reconnects. Fixes #47887; carries forward #65185. Thanks @draix and @BunsDev.
  • Plugins/diagnostics: make source-only TypeScript package warnings actionable by explaining that missing compiled runtime output is a publisher packaging issue and pointing users to update/reinstall or disable/uninstall the plugin. Fixes #77835. Thanks @googlerest.
  • Control UI/chat: keep persisted assistant progress text visible when the same transcript turn also contains tool-use metadata, so chat.history reloads no longer make those replies vanish after the next user message. Fixes #77374. Thanks @BunsDev.
  • Cron: repair persisted future nextRunAtMs values that no longer line up with the cron schedule, so daily timezone-aware jobs do not stay jumped to stale future dates. Fixes #77867. Thanks @hongfangsong.
  • TUI: skip the generic CLI respawn wrapper for interactive launches, exit cleanly on terminal loss, and refuse to restore heartbeat sessions as the remembered chat session, preventing stale heartbeat history and orphaned openclaw-tui processes on first boot. Thanks @vincentkoc.
  • Doctor/sessions: move heartbeat-poisoned default main session store entries to recovery keys and clear stale TUI restore pointers, so doctor --fix can repair instances already stuck on agent:main:main heartbeat history. Thanks @vincentkoc.
  • Agents/context engines: keep hidden OpenClaw runtime-context custom messages out of context-engine assemble, afterTurn, and ingest hooks so transcript reconstruction plugins only see conversation messages. Thanks @vincentkoc.
  • Gateway/shutdown: cancel delayed post-ready maintenance during close and suppress maintenance/cron startup after quick restarts, preventing orphaned background timers. Thanks @vincentkoc.
  • Agents/generated media: treat attachment-style message tool actions as completed chat sends, preventing duplicate fallback media posts when generated files were already uploaded.
  • Control UI/sessions: show each session's agent runtime in the Sessions table and allow filtering by runtime labels, matching the Agents panel runtime wording. Thanks @vincentkoc.
  • Discord/streaming: show live reasoning text in progress drafts instead of a bare Reasoning status line.
  • Gateway/status: avoid marking fast repeated health/status samples as event-loop degraded from CPU/utilization alone until the Gateway has accumulated a sustained sampling window. Thanks @shakkernerd.
  • Plugins/update: keep installed official npm and ClawHub plugins such as Codex, Discord, WhatsApp, and diagnostics plugins synced during host updates even when disabled or previously exact-pinned, while preserving third-party plugin pins. Thanks @vincentkoc.
  • Doctor/status: warn when OPENCLAW_GATEWAY_TOKEN would shadow a different active gateway.auth.token source for local CLI commands, while avoiding false positives when config points at the same env token. Fixes #74271. Thanks @yelog.
  • Gateway/HTTP: avoid loading managed outgoing-image media handlers for unrelated requests, so disabled OpenAI-compatible routes return 404 without waiting on lazy media sidecars. Thanks @vincentkoc.
  • Gateway/OpenAI-compatible: send the assistant role SSE chunk as soon as streaming chat-completion headers are accepted, so cold agent setup cannot leave /v1/chat/completions clients with a bodyless 200 response until their idle timeout fires.
  • Agents/media: avoid direct generated-media completion fallback while the announce-agent run is still pending, so async video and music completions do not duplicate raw media messages. (#77754)
  • WebChat/Codex media: stage Codex app-server generated local images into managed media before Gateway display, so Codex-home image paths no longer hit LocalMediaAccessError while keeping Codex home out of the display allowlist. Thanks @frankekn.
  • TUI/sessions: bound the session picker to recent rows and use exact lookup-style refreshes for the active session, so dusty stores no longer make TUI hydrate weeks-old transcripts before becoming responsive. Thanks @vincentkoc.
  • Doctor/gateway: report recent supervisor restart handoffs in openclaw doctor --deep, using the installed service environment when available so service-managed clean exits are visible in guided diagnostics. Thanks @shakkernerd.
  • Gateway/status: show recent supervisor restart handoffs in openclaw gateway status --deep, including JSON details, so clean service-managed restarts are reported as restart handoffs instead of opaque stopped-service diagnostics. Thanks @shakkernerd.
  • Providers/Fireworks: expose Kimi models as thinking-off-only and keep K2.5/K2.6 requests on thinking: disabled, so manual model switches do not send Fireworks-rejected reasoning* parameters. Refs #74289. Thanks @frankekn.
  • WhatsApp responsiveness: stop only verified stale local TUI clients when they degrade the Gateway event loop and delay replies. Thanks @vincentkoc.
  • Plugins/update: repair stale managed npm-root openclaw peer packages before plugin installs, so beta-channel official plugin updates are not downgraded by old core package-lock state. Thanks @vincentkoc.
  • Plugins/install: reassert managed npm plugin openclaw peer links after shared-root npm installs, updates, and uninstalls, so mutating one plugin does not leave previously installed SDK-using plugins unable to resolve openclaw/plugin-sdk/*.
  • Hooks/session-memory: add collision suffixes to fallback memory filenames so repeated /new or /reset captures in the same minute do not overwrite the earlier session archive. Thanks @vincentkoc.
  • Agents/config: remove the ambiguous legacy main agent dir helper from runtime paths; model, auth, gateway, bundled plugin, and test helpers now resolve default/session agent dirs through agents.list/agent-scope helpers while plugin SDK keeps a deprecated compatibility export.
  • CLI/status: show the selected agent runtime/harness in openclaw status session rows so terminal status matches the /status runtime line. Thanks @vincentkoc.
  • CLI/sessions: prune old unreferenced transcript, compaction checkpoint, and trajectory artifacts during normal sessions cleanup, so gateway restart or crash orphans do not accumulate indefinitely outside sessions.json. Fixes #77608. Thanks @slideshow-dingo.
  • Doctor/Codex: repair legacy openai-codex/* routes in primary models, fallbacks, heartbeat/subagent/compaction overrides, hooks, channel overrides, and stale session pins to canonical openai/*, selecting agentRuntime.id: "codex" only when the Codex plugin is installed, enabled, contributes the codex harness, and has usable OAuth; otherwise select agentRuntime.id: "pi". Thanks @vincentkoc.
  • Plugins/update: keep installed official npm and ClawHub plugins such as Codex, Discord, WhatsApp, and diagnostics plugins synced during host updates even when disabled or previously exact-pinned, while preserving third-party plugin pins. Thanks @vincentkoc.
  • Video generation: accept provider-specific aspect-ratio and resolution hints at the tool boundary, normalize 720P to MiniMax's supported 768P, and stop sending Google generateAudio on Gemini video requests so provider fallback can recover from model-specific parameter differences. Thanks @vincentkoc.
  • Status: show compact Gateway process uptime and host system uptime in /status, making restart and host-lifetime checks visible from chat. Thanks @vincentkoc.
  • WhatsApp responsiveness: stop only verified stale local TUI clients when they degrade the Gateway event loop and delay replies. Thanks @vincentkoc.
  • Hooks/session-memory: run reset memory capture off the command reply path and make model-generated memory filename slugs opt-in with llmSlug: true, so /new and /reset no longer block WhatsApp and other message-channel reset replies on hook housekeeping or a nested model call. Thanks @vincentkoc.
  • CLI/gateway: pause non-TTY stdin after full CLI command completion and stop openclaw agent from falling back to embedded mode after gateway request/auth failures, so parent help commands exit cleanly and scoped delivery probes surface the real Gateway error immediately. Thanks @vincentkoc.
  • Gateway/model catalog: cache empty read-only model catalog results until reload, so TUI and control-plane refresh loops cannot hammer plugin metadata reads when no usable models are currently discovered. Thanks @vincentkoc.
  • Hooks/session-memory: add collision suffixes to fallback memory filenames so repeated /new or /reset captures in the same minute do not overwrite the earlier session archive. Thanks @vincentkoc.
  • TUI/sessions: bound the session picker to recent rows and use exact lookup-style refreshes for the active session, so dusty stores no longer make TUI hydrate weeks-old transcripts before becoming responsive. Thanks @vincentkoc.
  • Agents/context engines: keep hidden OpenClaw runtime-context custom messages out of context-engine assemble, afterTurn, and ingest hooks so transcript reconstruction plugins only see conversation messages. Thanks @vincentkoc.
  • TUI: skip the generic CLI respawn wrapper for interactive launches, exit cleanly on terminal loss, and refuse to restore heartbeat sessions as the remembered chat session, preventing stale heartbeat history and orphaned openclaw-tui processes on first boot. Thanks @vincentkoc.
  • Doctor/sessions: move heartbeat-poisoned default main session store entries to recovery keys and clear stale TUI restore pointers, so doctor --fix can repair instances already stuck on agent:main:main heartbeat history. Thanks @vincentkoc.
  • Gateway/shutdown: report structured shutdown warnings and HTTP close timeout warnings through ShutdownResult while preserving lifecycle hook hardening. Carries forward #41296. Thanks @edenfunf.
  • CLI/update: make dev-channel preflight lint opt-in and constrained when enabled, so openclaw update --channel dev no longer walks back otherwise-good main commits when Ubuntu hosts OOM-kill or fail parallel oxlint shards. Thanks @vincentkoc.
  • CLI/channels: skip config, proxy, channel-option catalog, banner-config, and plugin startup bootstrap for the bare openclaw channels parent-help command, so it exits promptly after printing help instead of loading configured channel plugins. Thanks @vincentkoc.
  • Gateway/shutdown: cancel delayed post-ready maintenance during close and suppress maintenance/cron startup after quick restarts, preventing orphaned background timers. Thanks @vincentkoc.
  • CLI/status: show the selected agent runtime/harness in openclaw status session rows so terminal status matches the /status runtime line. Thanks @vincentkoc.
  • Sessions CLI: show the selected agent runtime in the openclaw sessions table so terminal output matches the runtime visibility already present in JSON/status surfaces. Thanks @vincentkoc.
  • Control UI/sessions: show each session's agent runtime in the Sessions table and allow filtering by runtime labels, matching the Agents panel runtime wording. Thanks @vincentkoc.
  • Docker/Gateway: harden the gateway container by dropping NET_RAW and NET_ADMIN capabilities and enabling no-new-privileges in the bundled docker-compose.yml. Thanks @VintageAyu.
  • OpenAI/Gateway: flush the initial chat stream chunk correctly so first-token streaming is visible instead of being delayed behind later chunks.
  • Gateway/media: skip media sidecar handling for unrelated HTTP routes so non-media requests do not pay the media route behavior.
  • Discord: show reasoning text in progress drafts so streaming replies expose useful thinking/progress instead of blank draft updates.
  • Auth profiles: avoid putting providers on cooldown for format-level rejections, so fallback profiles can still be tried when a model name is unsupported.
  • Update/plugins: tolerate corrupt managed plugin records during update so core package updates can still complete and report the plugin repair path.
  • Update: stop dev-channel updates cleanly after a fetch failure instead of continuing into later update steps.
  • Agents/generated media: treat attachment-style message tool actions as completed chat sends, preventing duplicate fallback media posts when generated files were already uploaded.