更新日誌
Changes
- Agents/Anthropic: add opt-in 1M context beta header support for Opus/Sonnet via model
params.context1m: true(maps toanthropic-beta: context-1m-2025-08-07). - Agents/Models: support Anthropic Sonnet 4.6 (
anthropic/claude-sonnet-4-6) across aliases/defaults with forward-compat fallback when upstream catalogs still only expose Sonnet 4.5. - Commands/Subagents: add
/subagents spawnfor deterministic subagent activation from chat commands. (#18218) Thanks @JoshuaLelon. - Agents/Subagents: add an accepted response note for
sessions_spawnexplaining polling subagents are disabled for one-off calls. Thanks @tyler6204. - Agents/Subagents: prefix spawned subagent task messages with context to preserve source information in downstream handling. Thanks @tyler6204.
- iOS/Share: add an iOS share extension that forwards shared URL/text/image content directly to gateway
agent.request, with delivery-route fallback and optional receipt acknowledgements. (#19424) Thanks @mbelinky. - iOS/Talk: add a
Background Listeningtoggle that keeps Talk Mode active while the app is backgrounded (off by default for battery safety). Thanks @zeulewan. - iOS/Talk: add a
Voice Directive Hinttoggle for Talk Mode prompts so users can disable ElevenLabs voice-switching instructions to save tokens when not needed. (#18250) Thanks @zeulewan. - iOS/Talk: harden barge-in behavior by disabling interrupt-on-speech when output route is built-in speaker/receiver, reducing false interruptions from local TTS bleed-through. Thanks @zeulewan.
- Slack: add native single-message text streaming with Slack
chat.startStream/appendStream/stopStream; keep reply threading aligned withreplyToMode, default streaming to enabled, and fall back to normal delivery when streaming fails. (#9972) Thanks @natedenh. - Slack: add configurable streaming modes for draft previews. (#18555) Thanks @Solvely-Colin.
- Telegram/Agents: add inline button
stylesupport (primary|success|danger) across message tool schema, Telegram action parsing, send pipeline, and runtime prompt guidance. (#18241) Thanks @obviyus. - Telegram: surface user message reactions as system events, with configurable
channels.telegram.reactionNotificationsscope. (#10075) Thanks @Glucksberg. - iMessage: support
replyToIdon outbound text/media sends and normalize leading[[reply_to:<id>]]tags so replies target the intended iMessage. Thanks @tyler6204. - Tool Display/Web UI: add intent-first tool detail views and exec summaries. (#18592) Thanks @xdLawless2.
- Discord: expose native
/execcommand options (host/security/ask/node) so Discord slash commands get autocomplete and structured inputs. Thanks @thewilloftheshadow. - Discord: allow reusable interactive components with
components.reusable=trueso buttons, selects, and forms can be used multiple times before expiring. Thanks @thewilloftheshadow. - Discord: add per-button
allowedUsersallowlist for interactive components to restrict who can click buttons. Thanks @thewilloftheshadow. - Cron/Gateway: separate per-job webhook delivery (
delivery.mode = "webhook") from announce delivery, enforce valid HTTP(S) webhook URLs, and keep a temporary legacynotify + cron.webhookfallback for stored jobs. (#17901) Thanks @advaitpaliwal. - Cron/CLI: add deterministic default stagger for recurring top-of-hour cron schedules (including 6-field seconds cron), auto-migrate existing jobs to persisted
schedule.staggerMs, and addopenclaw cron add/edit --stagger <duration>plus--exactoverrides for per-job timing control. - Cron: log per-run model/provider usage telemetry in cron run logs/webhooks and add a local usage report script for aggregating token usage by job. (#18172) Thanks @HankAndTheCrew.
- Tools/Web: add URL allowlists for
web_searchandweb_fetch. (#18584) Thanks @smartprogrammer93. - Browser: add
extraArgsconfig for custom Chrome launch arguments. (#18443) Thanks @JayMishra-source. - Voice Call: pre-cache inbound greeting TTS for faster first playback. (#18447) Thanks @JayMishra-source.
- Skills: compact skill file
<location>paths in the system prompt by replacing home-directory prefixes with~, and add targeted compaction tests for prompt serialization behavior. (#14776) Thanks @bitfish3. - Skills: refine skill-description routing boundaries with explicit "Use when"/"NOT for" guidance for coding-agent/github/weather, and clarify PTY/browser fallback wording. (#14577) Thanks @DylanWoodAkers.
- Auto-reply/Prompts: include trusted inbound
message_idin conversation metadata payloads for downstream targeting workflows. Thanks @tyler6204. - Auto-reply: include
sender_idin trusted inbound metadata so moderation workflows can target the sender without relying on untrusted text. (#18303) Thanks @crimeacs. - UI/Sessions: avoid duplicating typed session prefixes in display names (for example
Subagent Subagent ...). Thanks @tyler6204. - Agents/Z.AI: enable
tool_streamby default for real-time tool call streaming, with opt-out viaparams.tool_stream: false. (#18173) Thanks @tianxiao1430-jpg. - Plugins: add
before_agent_startmodel/provider overrides before resolution. (#18568) Thanks @natefikru. - Mattermost: add emoji reaction actions plus reaction event notifications, including an explicit boolean
removeflag to avoid accidental removals. (#18608) Thanks @echo931. - Memory/Search: add FTS fallback plus query expansion for memory search. (#18304) Thanks @irchelper.
- Agents/Models: support per-model
thinkingDefaultoverrides in model config. (#18152) Thanks @wu-tian807. - Agents: enable
llms.txtdiscovery in default behavior. (#18158) Thanks @yolo-maxi. - Extensions/Auth: add OpenAI Codex CLI auth provider integration. (#18009) Thanks @jiteshdhamaniya.
- Feishu: add Bitable create-app/create-field tools for automation workflows. (#17963) Thanks @gaowanqi08141999.
- Docker: add optional
OPENCLAW_INSTALL_BROWSERbuild arg to preinstall Chromium + Xvfb in the Docker image, avoiding runtime Playwright installs. (#18449)
Fixes
- Agents/Image: collapse resize diagnostics to one line per image and include visible pixel/byte size details in the log message for faster triage.
- Agents/Subagents: preemptively guard accumulated tool-result context before model calls by truncating oversized outputs and compacting oldest tool-result messages to avoid context-window overflow crashes. Thanks @tyler6204.
- Agents/Subagents: add explicit subagent guidance to recover from
[compacted: tool output removed to free context]/[truncated: output exceeded context limit]markers by re-reading with smaller chunks instead of full-filecat. Thanks @tyler6204. - Agents/Tools: make
readauto-page across chunks (when no explicitlimitis provided) and scale its per-call output budget from modelcontextWindow, so larger contexts can read more before context guards kick in. Thanks @tyler6204. - Agents/Tools: strip duplicated
readtruncation payloads from tool-resultdetailsand make pre-call context guarding account for heavy tool-result metadata, so repeatedreadcalls no longer bypass compaction and overflow model context windows. Thanks @tyler6204. - Reply threading: keep reply context sticky across streamed/split chunks and preserve
replyToIdon all chunk sends across shared and channel-specific delivery paths (including iMessage, BlueBubbles, Telegram, Discord, and Matrix), so follow-up bubbles stay attached to the same referenced message. Thanks @tyler6204. - Gateway/Agent: defer transient lifecycle
errorsnapshots with a short grace window soagent.waitdoes not resolve early during retry/failover. Thanks @tyler6204. - Hooks/Automation: bridge outbound/inbound message lifecycle into internal hook events (
message:received,message:sent) with session-key correlation guards, while keeping per-payload success/error reporting accurate for chunked and best-effort deliveries. (PR #9387) - Media understanding: honor
agents.defaults.imageModelduring auto-discovery so implicit image analysis uses configured primary/fallback image models. (PR #7607) - iOS/Onboarding: stop auth Step 3 retry-loop churn by pausing reconnect attempts on unauthorized/missing-token gateway errors and keeping auth/pairing issue state sticky during manual retry. (#19153) Thanks @mbelinky.
- Voice-call: auto-end calls when media streams disconnect to prevent stuck active calls. (#18435) Thanks @JayMishra-source.
- Voice call/Gateway: prevent overlapping closed-loop turn races with per-call turn locking, route transcript dedupe via source-aware fingerprints with strict cache eviction bounds, and harden
voicecall latencystats for large logs without spread-operator stack overflow. (#19140) Thanks @mbelinky. - iOS/Chat: route ChatSheet RPCs through the operator session instead of the node session to avoid node-role authorization failures for
chat.history,chat.send, andsessions.list. (#19320) Thanks @mbelinky. - macOS/Update: correct the Sparkle appcast version for 2026.2.15 so updates are offered again. (#18201)
- Gateway/Auth: clear stale device-auth tokens after device token mismatch errors so re-paired clients can re-auth. (#18201)
- Telegram: enable DM voice-note transcription with CLI fallback handling. (#18564) Thanks @thhuang.
- Telegram/Polls: restore Telegram poll action wiring in channel handlers. (#18122) Thanks @akyourowngames.
- WebChat: strip reply/audio directive tags from rendered chat output. (#18093) Thanks @aldoeliacim.
- Discord: honor configured HTTP proxy for app-id and allowlist REST resolution. (#17958) Thanks @k2009.
- BlueBubbles: add fallback path to recover outbound
message_idfromfromMewebhooks when platform message IDs are missing. Thanks @tyler6204. - BlueBubbles: match outbound message-id fallback recovery by chat identifier as well as account context. Thanks @tyler6204.
- BlueBubbles: include sender identifier in untrusted conversation metadata for conversation info payloads. Thanks @tyler6204.
- Security/Exec: fix the OC-09 credential-theft path via environment-variable injection. (#18048) Thanks @aether-ai-agent.
- Security/Config: confine
$includeresolution to the top-level config directory, harden traversal/symlink checks with cross-platform-safe path containment, and add doctor hints for invalid escaped include paths. (#18652) Thanks @aether-ai-agent. - Providers: improve error messaging for unconfigured local
ollama/vllmproviders. (#18183) Thanks @arosstale. - TTS: surface all provider errors instead of only the last error in aggregated failures. (#17964) Thanks @ikari-pl.
- CLI/Doctor/Configure: skip gateway auth checks for loopback-only setups. (#18407) Thanks @sggolakiya.
- CLI/Doctor: reconcile gateway service-token drift after re-pair flows. (#18525) Thanks @norunners.
- Process/Windows: disable detached spawn in exec runs to prevent empty command output. (#18067) Thanks @arosstale.
- Process: gracefully terminate process trees with SIGTERM before SIGKILL. (#18626) Thanks @sauerdaniel.
- Sessions/Windows: use atomic session-store writes to prevent context loss on Windows. (#18347) Thanks @twcwinston.
- Agents/Image: validate base64 image payloads before provider submission. (#18263) Thanks @sriram369.
- Models CLI: validate catalog entries in
openclaw models set. (#18129) Thanks @carrotRakko. - Usage: isolate last-turn totals in token usage reporting to avoid mixed-turn totals. (#18052) Thanks @arosstale.
- Cron: resolve
accountIdfrom agent bindings in isolated sessions. (#17996) Thanks @simonemacario. - Gateway/HTTP: preserve unbracketed IPv6
Hostheaders when normalizing requests. (#18061) Thanks @Clawborn. - Sandbox: fix workspace-directory orphaning during SHA-1 -> SHA-256 slug migration. (#18523) Thanks @yinghaosang.
- Ollama/Qwen: handle Qwen 3 reasoning field format in Ollama responses. (#18631) Thanks @mr-sk.
- OpenAI/Transcripts: always drop orphaned reasoning blocks from transcript repair. (#18632) Thanks @TySabs.
- Fix types in all tests. Typecheck the whole repository.
- Gateway/Channels: wire
gateway.channelHealthCheckMinutesinto strict config validation, treat implicit account status as managed for health checks, and harden channel auto-restart flow (preserve restart-attempt caps across crash loops, propagate enabled/configured runtime flags, and stop pending restart backoff after manual stop). Thanks @steipete. - Gateway/WebChat: hard-cap
chat.historyoversized payloads by truncating high-cost fields and replacing over-budget entries with placeholders, so history fetches stay within configured byte limits and avoid chat UI freezes. (#18505) - UI/Usage: replace lingering undefined
var(--text-muted)usage withvar(--muted)in usage date-range and chart styles to keep muted text visible across themes. (#17975) Thanks @jogelin. - UI/Usage: preserve selected-range totals when timeline data is downsampled by bucket-aggregating timeseries points (instead of dropping intermediate points), so filtered tokens/cost stay accurate. (#17959) Thanks @jogelin.
- UI/Sessions: refresh the sessions table only after successful deletes and preserve delete errors on cancel/failure paths, so deleted sessions disappear automatically without masking delete failures. (#18507)
- Scripts/UI/Windows: fix
pnpm ui:*spawnEINVALfailures by restoring shell-backed launch for.cmd/.batrunners, narrowing shell usage to launcher types that require it, and rejecting unsafe forwarded shell metacharacters in UI script args. (#18594) - Hooks/Session-memory: recover
/newconversation summaries when session pointers are reset-path or missingsessionFile, and consistently prefer the newest.jsonl.reset.*transcript candidate for fallback extraction. (#18088) - Auto-reply/Sessions: prevent stale thread ID leakage into non-thread sessions so replies stay in the main DM after topic interactions. (#18528) Thanks @j2h4u.
- Slack: restrict forwarded-attachment ingestion to explicit shared-message attachments and skip non-Slack forwarded
image_urlfetches, preventing non-forward attachment unfurls from polluting inbound agent context while preserving forwarded message handling. - Feishu: detect bot mentions in post messages with embedded docs when
message.mentionsis empty. (#18074) Thanks @popomore. - Agents/Sessions: align session lock watchdog hold windows with run and compaction timeout budgets (plus grace), preventing valid long-running turns from being force-unlocked mid-run while still recovering hung lock owners. (#18060)
- Cron: preserve default model fallbacks for cron agent runs when only
model.primaryis overridden, so failover still follows configured fallbacks unless explicitly cleared withfallbacks: []. (#18210) Thanks @mahsumaktas. - Cron: route text-only announce output through the main session announce flow via runSubagentAnnounceFlow so cron text-only output remains visible to the initiating session. Thanks @tyler6204.
- Cron: treat
timeoutSeconds: 0as no-timeout (not clamped to 1), ensuring long-running cron runs are not prematurely terminated. Thanks @tyler6204. - Cron announce injection now targets the session determined by delivery config (
to+ channel) instead of defaulting to the current session. Thanks @tyler6204. - Cron/Heartbeat: canonicalize session-scoped reminder
sessionKeyrouting and preserve explicit flatsessionKeycron tool inputs, preventing enqueue/wake namespace drift for session-targeted reminders. (#18637) Thanks @vignesh07. - Cron/Webhooks: reuse existing session IDs for webhook/cron runs when the session key is stable and still fresh, preserving conversation history. (#18031) Thanks @Operative-001.
- Cron: prevent spin loops when cron jobs complete within the scheduled second by advancing the next run and enforcing a minimum refire gap. (#18073) Thanks @widingmarcus-cyber.
- OpenClawKit/iOS ChatUI: accept canonical session-key completion events for local pending runs and preserve message IDs across history refreshes, preventing stuck "thinking" state and message flicker after gateway replies. (#18165) Thanks @mbelinky.
- iOS/Onboarding: add QR-first onboarding wizard with setup-code deep link support, pairing/auth issue guidance, and device-pair QR generation improvements for Telegram/Web/TUI fallback flows. (#18162) Thanks @mbelinky and @Marvae.
- iOS/Gateway: stabilize connect/discovery state handling, add onboarding reset recovery in Settings, and fix iOS gateway-controller coverage for command-surface and last-connection persistence behavior. (#18164) Thanks @mbelinky.
- iOS/Talk: harden mobile talk config handling by ignoring redacted/env-placeholder API keys, support secure local keychain override, improve accessibility motion/contrast behavior in status UI, and tighten ATS to local-network allowance. (#18163) Thanks @mbelinky.
- iOS/Location: restore the significant location monitor implementation (service hooks + protocol surface + ATS key alignment) after merge drift so iOS builds compile again. (#18260) Thanks @ngutman.
- iOS/Signing: auto-select local Apple Development team during iOS project generation/build, prefer the canonical OpenClaw team when available, and support local per-machine signing overrides without committing team IDs. (#18421) Thanks @ngutman.
- Discord/Telegram: make per-account message action gates effective for both action listing and execution, and preserve top-level gate restrictions when account overrides only specify a subset of
actionskeys (account key -> base key -> default fallback). (#18494) - Telegram: keep DM-topic replies and draft previews in the originating private-chat topic by preserving positive
message_thread_idvalues for DM threads. (#18586) Thanks @sebslight. - Telegram: preserve private-chat topic
message_thread_idon outbound sends (message/sticker/poll), keep thread-not-found retry fallback, and avoid maskingchat not foundrouting errors. (#18993) Thanks @obviyus. - Discord: prevent duplicate media delivery when the model uses the
message sendtool with media, by skipping media extraction from messaging tool results since the tool already sent the message directly. (#18270) - Discord: route
audioAsVoiceauto-replies through the voice message API so opt-in audio renders as voice messages. (#18041) Thanks @zerone0x. - Discord: skip auto-thread creation in forum/media/voice/stage channels and keep group session last-route metadata fresh to avoid invalid thread API errors and lost follow-up sends. (#18098) Thanks @Clawborn.
- Discord/Commands: normalize
commands.allowFromentries withuser:/discord:/pk:prefixes and<@id>mentions so command authorization matches Discord allowlist behavior. (#18042) - Telegram: keep draft-stream preview replies attached to the user message for
replyToMode: "all"in groups and DMs, preserving threaded reply context from preview through finalization. (#17880) Thanks @yinghaosang. - Telegram: prevent streaming final replies from being overwritten by later final/error payloads, and suppress fallback tool-error warnings when a recovered assistant answer already exists after tool calls. (#17883) Thanks @Marvae and @obviyus.
- Telegram: debounce the first draft-stream preview update (30-char threshold) and finalize short responses by editing the stop-time preview message, improving first push notifications and avoiding duplicate final sends. (#18148) Thanks @Marvae.
- Telegram: disable block streaming when
channels.telegram.streamModeisoff, preventing newline/content-block replies from splitting into multiple messages. (#17679) Thanks @saivarunk. - Telegram: keep
streamMode: "partial"draft previews in a single message across assistant-message/reasoning boundaries, preventing duplicate preview bubbles during partial-mode tool-call turns. (#18956) Thanks @obviyus. - Telegram: normalize native command names for Telegram menu registration (
-->_) to avoidBOT_COMMAND_INVALIDcommand-menu wipeouts, and log failed command syncs instead of silently swallowing them. (#19257) Thanks @akramcodez. - Telegram: route non-abort slash commands on the normal chat/topic sequential lane while keeping true abort requests (
/stop,stop) on the control lane, preventing command/reply race conditions from control-lane bypass. (#17899) Thanks @obviyus. - Telegram: ignore
<media:...>placeholder lines when extractingMEDIA:tool-result paths, preventing false local-file reads and dropped replies. (#18510) Thanks @yinghaosang. - Telegram: skip retries when inbound media
getFilefails with Telegram's 20MB limit and continue processing message text, avoiding dropped messages for oversized attachments. (#18531) Thanks @brandonwise. - Telegram: clear stored polling offsets when bot tokens change or accounts are deleted, preventing stale offsets after token rotations. (#18233)
- Telegram: enable
autoSelectFamilyby default on Node.js 22+ so IPv4 fallback works on broken IPv6 networks. (#18272) Thanks @nacho9900. - Auto-reply/TTS: keep tool-result media delivery enabled in group chats and native command sessions (while still suppressing tool summary text) so
NO_REPLYfollow-ups do not drop successful TTS audio. (#17991) Thanks @zerone0x. - Agents/Tools: deliver tool-result media even when verbose tool output is off so media attachments are not dropped. (#16679)
- Discord: optimize reaction notification handling to skip unnecessary message fetches in
off/all/allowlistmodes, streamline reaction routing, and improve reaction emoji formatting. (#18248) Thanks @thewilloftheshadow and @victorGPT. - CLI/Pairing: make
openclaw qr --remoteprefergateway.remote.urlover tailscale/public URL resolution and register theopenclaw clawbot qrlegacy alias path. (#18091) - CLI/QR: restore fail-fast validation for
openclaw qr --remotewhen neithergateway.remote.urlnor tailscaleserve/funnelis configured, preventing unusable remote pairing QR flows. (#18166) Thanks @mbelinky. - CLI: fix parent/subcommand option collisions across gateway, daemon, update, ACP, and browser command flows, while preserving legacy
browser set headers --json <payload>compatibility. - CLI/Doctor: ensure
openclaw doctor --fix --non-interactive --yesexits promptly after completion so one-shot automation no longer hangs. (#18502) - CLI/Doctor: auto-repair
dmPolicy="open"configs missing wildcard allowlists and write channel-correct repair paths (includingchannels.googlechat.dm.allowFrom) soopenclaw doctor --fixno longer leaves Google Chat configs invalid after attempted repair. (#18544) - CLI/Doctor: detect gateway service token drift when the gateway token is only provided via environment variables, keeping service repairs aligned after token rotation.
- Gateway/Update: prevent restart crash loops after failed self-updates by restarting only on successful updates, stopping early on failed install/build steps, and running
openclaw doctor --fixduring updates to sanitize config. (#18131) Thanks @RamiNoodle733. - Gateway/Update: preserve update.run restart delivery context so post-update status replies route back to the initiating channel/thread. (#18267) Thanks @yinghaosang.
- CLI/Update: run a standalone restart helper after updates, honoring service-name overrides and reporting restart initiation separately from confirmed restarts. (#18050)
- CLI/Daemon: warn when a gateway restart sees a stale service token so users can reinstall with
openclaw gateway install --force, and skip drift warnings for non-gateway service restarts. (#18018) - CLI/Daemon: prefer the active version-manager Node when installing daemons and include macOS version-manager bin directories in the service PATH so launchd services resolve user-managed runtimes.
- CLI/Status: fix
openclaw status --alltoken summaries for bot-token-only channels so Mattermost/Zalo no longer show a bot+app warning. (#18527) Thanks @echo931. - CLI/Configure: make the
/model pickerallowlist prompt searchable with tokenized matching inopenclaw configureso users can filter huge model lists by typing terms likegpt-5.2 openai/. (#19010) Thanks @bjesuiter. - CLI/Message: preserve
--componentsJSON payloads inopenclaw message sendso Discord component payloads are no longer dropped. (#18222) Thanks @saurabhchopade. - Voice Call: add an optional stale call reaper (
staleCallReaperSeconds) to end stuck calls when enabled. (#18437) - Auto-reply/Subagents: propagate group context (
groupId,groupChannel,space) when spawning via/subagents spawn, matching tool-triggered subagent spawn behavior. - Subagents: route nested announce results back to the parent session after the parent run ends, falling back only when the parent session is deleted. (#18043) Thanks @tyler6204.
- Subagents: cap announce retry loops with max attempts and expiry to prevent infinite retry spam after deferred announces. (#18444)
- Agents/Tools/exec: add a preflight guard that detects likely shell env var injection (e.g.
$DM_JSON,$TMPDIR) in Python/Node scripts before execution, preventing recurring cron failures and wasted tokens when models emit mixed shell+language source. (#12836) - Agents/Tools/exec: treat normal non-zero exit codes as completed and append the exit code to tool output to avoid false tool-failure warnings. (#18425)
- Agents/Tools: make loop detection progress-aware and phased by hard-blocking known
process(action=poll|log)no-progress loops, warning on generic identical-call repeats, warning + no-progress-blocking ping-pong alternation loops (10/20), coalescing repeated warning spam into threshold buckets (including canonical ping-pong pairs), adding a global circuit breaker at 30 no-progress repeats, and emitting structured diagnostictool.loopwarning/error events for loop actions. (#16808) Thanks @akramcodez and @beca-oc. - Agents/Hooks: preserve the
before_tool_callwrapped-marker across abort-signal tool wrapping so the hook runs once per tool call in normal agent sessions. (#16852) Thanks @sreuter. - Agents/Tests: add
before_message_writepersistence regression coverage for block/mutate behavior (including synthetic tool-result flushes) and thrown-hook fallback persistence. (#18197) Thanks @shakkernerd - Agents/Tools: scope the
messagetool schema to the active channel so Telegram usesbuttonsand Discord usescomponents. (#18215) Thanks @obviyus. - Agents/Image tool: replace Anthropic-incompatible union schema with explicit
image(single) andimages(multi) parameters, keeping tool schemasanyOf/oneOf/allOf-free while preserving multi-image analysis support. (#18551, #18566) Thanks @aldoeliacim. - Agents/Models: probe the primary model when its auth-profile cooldown is near expiry (with per-provider throttling), so runs recover from temporary rate limits without staying on fallback models until restart. (#17478) Thanks @PlayerGhost.
- Agents/Failover: classify provider abort stop-reason errors (
Unhandled stop reason: abort,stop reason: abort,reason: abort) as timeout-class failures so configured model fallback chains trigger instead of surfacing raw abort failures. (#18618) Thanks @sauerdaniel. - Models/CLI: sync auth-profiles credentials into agent
auth.jsonbefore registry availability checks soopenclaw models list --allreports auth correctly for API-key/token providers, normalize provider-id aliases when bridging credentials, and skip expired token mirrors. (#18610, #18615) - Agents/Context: raise default total bootstrap prompt cap from
24000to150000chars (keepingbootstrapMaxCharsat20000), include total-cap visibility in/context, and mark truncation from injected-vs-raw sizes so total-cap clipping is reflected accurately. - Memory/QMD: scope managed collection names per agent and precreate glob-backed collection directories before registration, preventing cross-agent collection clobbering and startup ENOENT failures in fresh workspaces. (#17194) Thanks @jonathanadams96.
- Cron: preserve per-job schedule-error isolation in post-run maintenance recompute so malformed sibling jobs no longer abort persistence of successful runs. (#17852) Thanks @pierreeurope.
- Gateway/Config: prevent
config.patchobject-array merges from falling back to full-array replacement when some patch entries lackid, so partialagents.listupdates no longer drop unrelated agents. (#17989) Thanks @stakeswky. - Gateway/Auth: trim whitespace around trusted proxy entries before matching so configured proxies with stray spaces still authorize. (#18084) Thanks @Clawborn.
- Config/Discord: require string IDs in Discord allowlists, keep onboarding inputs string-only, and add doctor repair for numeric entries. (#18220) Thanks @thewilloftheshadow.
- Security/Sessions: create new session transcript JSONL files with user-only (
0o600) permissions and extendopenclaw security audit --fixto remediate existing transcript file permissions. - Sessions/Maintenance: archive transcripts when pruning stale sessions, clean expired media in subdirectories, and purge
.deletedtranscript archives after the prune window to prevent disk leaks. (#18538) - Infra/Fetch: ensure foreign abort-signal listener cleanup never masks original fetch successes/failures, while still preventing detached-finally unhandled rejection noise in
wrapFetchWithAbortSignal. Thanks @Jackten. - Heartbeat: allow suppressing tool error warning payloads during heartbeat runs via a new heartbeat config flag. (#18497) Thanks @thewilloftheshadow.
- Heartbeat: include sender metadata (From/To/Provider) in heartbeat prompts so model context matches the delivery target. (#18532) Thanks @dinakars777.
- Heartbeat/Telegram: strip configured
responsePrefixbefore heartbeat ack detection (with boundary-safe matching) so prefixedHEARTBEAT_OKreplies are correctly suppressed instead of leaking into DMs. (#18602)