Fixes
- Release/plugin publishing: retry transient ClawHub CLI dependency install failures, keep preview-passing plugins publishable when one preview cell flakes, and verify every expected ClawHub package version after publish so maintenance releases are faster to recover and less likely to hide partial plugin publishes.
- OpenAI: support
openai/chat-latestas an explicit direct API-key model override for trying the moving ChatGPT Instant API alias without changing the stable default model. - Cron CLI: include computed
statusincron list --jsonandcron show --jsonoutput so external tooling can read disabled/running/ok/error/skipped/idle state without reimplementing cron status derivation. (#78701) Thanks @aweiker. - Channels CLI: make
openclaw channels listchannel-only, add--allfor bundled and catalog channels, render installed/configured/enabled state, and move model auth/usage details toopenclaw models auth list,openclaw status, andopenclaw models list. (#78456) Thanks @sliverp. - Native commands: honor owner enforcement for native command handlers. (#78864) Thanks @pgondhi987.
- Active Memory: require admin scope for global memory toggles. (#78863) Thanks @pgondhi987.
- Gateway/sessions: clear cached skills snapshots during
/newandsessions.resetso long-lived channel sessions rebuild the visible skill list after skills change. (#78873) Thanks @Evizero. - Auto-reply: gate inline skill tool dispatch through before-tool-call authorization hooks. (#78517) Thanks @pgondhi987.
- Tavily: resolve dedicated
tavily_searchandtavily_extracttool credentials from the active runtime config snapshot, soexecSecretRef-backed API keys do not reach the tools unresolved. (#78610) Thanks @VACInc. - Plugins/install: use the same absolute POSIX npm lifecycle shell for managed plugin install, rollback, repair, and uninstall npm operations as staged package updates, preventing restricted PATH shells from breaking cleanup. Thanks @vincentkoc.
- Agents/context engine: invalidate cached assembled context views when source history shrinks or assembly fails, preventing stale pre-reset history from being reused. Fixes #77968. (#78163) Thanks @brokemac79 and @ChrisBot2026.
- Discord/message: parse provider-prefixed targets like
discord:channel:<id>as channel sends instead of legacy Discord DM targets, so cross-channel agentmessage(action="send")calls no longer misroute channel IDs into misleadingUnknown Channelfailures. Fixes #78572. - Agents/compaction: clamp compaction summary reserve tokens to each model's output limit so high-context compaction no longer requests invalid
max_tokensvalues. (#54392) Thanks @adzendo. - Commands/BTW: show the
/btwmissing-question usage placeholder with brackets so outbound channel sanitization keeps it visible. Fixes #62877. Thanks @RajvardhanPatil07. - Cron/doctor: repair persisted cron jobs whose
payload.modelwas stored as"default","null", blank, or JSONnullby removing the bad override duringopenclaw doctor --fixwhile keeping cron runtime model validation strict. Fixes #78549. Thanks @bizzle12368239. - Telegram: honor
accessGroup:*sender allowlists for DMs, groups, native commands, and callback authorization before applying Telegram's numeric sender-ID checks. Fixes #78660. Thanks @manugc. - Agent delivery: report
deliverySucceeded=falsewhen outbound delivery returns no adapter result, so claimed/empty delivery paths no longer masquerade as successful sends. Fixes #78532. Thanks @joeyfrasier. - Cron/isolated runs: fail implicit announce delivery before model execution when
delivery.channel=lasthas no previous route, so recurring jobs do not spend tokens before hitting a permanent delivery-target error. Fixes #78608. Thanks @sallyom. - Gateway/sessions: persist a new generated transcript file when daily gateway-agent session rollover changes the session id, while preserving custom transcript paths. Fixes #78607. Thanks @nailujac, @zerone0x, and @sallyom.
- Doctor/Codex OAuth: preserve working
openai-codex/*PI routes duringdoctor --fixand recover 2026.5.5-rewrittenopenai/*GPT-5 routes when only Codex OAuth auth is available, so update repair does not break subscription-auth setups. Fixes #78407. Thanks @shakkernerd. - Telegram: keep the polling watchdog tied to
getUpdatesliveness so unrelated outbound Bot API calls cannot mask a wedged inbound poller. Fixes #78422. Thanks @ai-hpc. - Agents/subagents: have completed session-mode subagent registry rows honor
agents.defaults.subagents.archiveAfterMinutesinstead of a hardcoded 5-minute TTL, so registry-backed surfaces keep one retention knob across spawn modes. (#78263) Thanks @arniesaha. - Plugins/channel setup: forward
setChannelRuntimefrom non-bundled external plugin setup entries so deferred external channel runtime initializers are installed before startup polling. Fixes #77779. (#77799) Thanks @openperf. - Telegram: treat successful same-chat
messagetool outbound sends during an inbound Telegram turn as delivered when deciding whether to emit the rewritten silent reply fallback. (#78685) Thanks @neeravmakwana. - Gateway/tasks: reconcile stale CLI run-context tasks whose live run context disappeared and bound channel hot-reload deferrals so stale task records cannot block Discord/Slack/Telegram reloads forever.
- Discord/voice: audit Discord voice-channel permissions in
channels capabilitiesandchannels status --probe, including auto-join targets, so missing Connect/Speak/Read Message History permissions show up before/vc join. - Discord/voice: make voice capture less choppy by extending the default post-speech silence grace to 2.5s, add
voice.captureSilenceGraceMsfor noisy Discord sessions, and tighten the spoken-output prompt around live STT fragments. Thanks @vincentkoc. - WhatsApp: route proactive phone-number sends through Baileys LID forward mappings when available, so LID-addressed contacts receive agent messages instead of creating sender-only ghost chats. Fixes #67378. (#74925) Thanks @edenfunf.
- WhatsApp: send captioned
MEDIA:directive auto-replies once instead of emitting an empty media message before the captioned media reply. (#78770) Thanks @ai-hpc. - Codex/approvals: in Codex approval modes, stop installing the pre-guardian native
PermissionRequesthook by default so Codex's reviewer can approve safe commands before OpenClaw surfaces an approval, rememberallow-alwaysdecisions for identical Codex nativePermissionRequestpayloads within the active session window, and make plugin approval requests validate/render their actual allowed decisions so Telegram and other native approval UIs cannot offer stale actions. Thanks @shakkernerd. - Model providers: normalize APNG sniffed PNG uploads, preserve Gemini 3 tool-call thought-signature replay with fallback signatures, accept legacy
__env__:VARcustom-provider keys, and repair snake_case tool-call transcript sanitization. Fixes #51881, #48915, #77566, and #42858. - Telegram/models: parse provider ids containing dots in
/modelscallback buttons sohf.comodel lists render as inline keyboard buttons. Fixes #38745.