This post covers what shipped in v2026.1.10 and what it means for OpenClaw VPS operators.
What shipped
Highlights
- CLI:
clawdbot statusnow table-based + shows OS/update/gateway/daemon/agents/sessions;status --alladds a full read-only debug report (tables, log tails, Tailscale summary, and scan progress via OSC-9 + spinner). - CLI Backends: add Codex CLI fallback with resume support (text output) and JSONL parsing for new runs, plus a live CLI resume probe.
- CLI: add
clawdbot update(safe-ish git checkout update) +--updateshorthand. (#673) β thanks @fm1randa. - Gateway: add OpenAI-compatible
/v1/chat/completionsHTTP endpoint (auth, SSE streaming, per-agent routing). (#680) β thanks @steipete.
Changes
- Onboarding/Models: add first-class Z.AI (GLM) auth choice (
zai-api-key) +--zai-api-keyflag. - CLI/Onboarding: add OpenRouter API key auth option in configure/onboard. (#703) β thanks @mteam88.
- Agents: add human-delay pacing between block replies (modes: off/natural/custom, per-agent configurable). (#446) β thanks @tony-freedomology.
- Agents/Browser: add
browser.target(sandbox/host/custom) with sandbox host-control gating viaagents.defaults.sandbox.browser.allowHostControl, allowlists for custom control URLs/hosts/ports, and expand browser tool docs (remote control, profiles, internals). - Onboarding/Models: add catalog-backed default model picker to onboarding + configure. (#611) β thanks @jonasjancarik.
- Agents/OpenCode Zen: update fallback models + defaults, keep legacy alias mappings. (#669) β thanks @magimetal.
- Providers: unify group history context wrappers across providers with per-provider/per-account
historyLimitoverrides (fallback tomessages.groupChat.historyLimit). Set0to disable. (#672) β thanks @steipete. - Gateway/Heartbeat: optionally deliver heartbeat
Reasoning:output (agents.defaults.heartbeat.includeReasoning). (#690) - Docker: allow optional home volume + extra bind mounts in
docker-setup.sh. (#679) β thanks @gabriel-trigo.
Fixes
- CLI/Status: expand tables to full terminal width; clarify provider setup vs runtime warnings; richer per-provider detail; token previews in
statuswhile keepingstatus --allredacted; add troubleshooting link footer; keep log tails pasteable; show gateway auth used when reachable; surface provider runtime errors (Signal/iMessage/Slack); hardentailscale status --jsonparsing; makestatus --allscan progress determinate; and replace the footer with a 3-line βNext stepsβ recommendation (share/debug/probe). - CLI/Gateway: clarify that
clawdbot gateway statusreports RPC health (connect + RPC) and shows RPC failures separately from connect failures. - CLI/Update: gate progress spinner on stdout TTY and align clean-check step label. (#701) β thanks @bjesuiter.
- Telegram: add
/whoami+/idcommands to reveal sender id for allowlists; allow@usernameand prefixed ids inallowFromprompts (with stability warning). - Control UI: stop auto-writing
telegram.groups["*"]and warn/confirm before enabling wildcard groups. - WhatsApp: send ack reactions only for handled messages and ignore legacy
messages.ackReaction(doctor copies towhatsapp.ackReaction). (#629) β thanks @pasogott. - Sandbox/Skills: mirror skills into sandbox workspaces for read-only mounts so SKILL.md stays accessible.
- Terminal/Table: ANSI-safe wrapping to prevent table clipping/color loss; add regression coverage.
- Docker: allow optional apt packages during image build and document the build arg. (#697) β thanks @gabriel-trigo.
- Gateway/Heartbeat: deliver reasoning even when the main heartbeat reply is
HEARTBEAT_OK. (#694) β thanks @antons. - macOS: clear unsigned launchd overrides on signed restarts and warn via doctor when attach-only/disable markers are set. (#695) β thanks @jeffersonwarrior.
- Agents: enforce single-writer session locks and drop orphan tool results to prevent tool-call ID failures (MiniMax/Anthropic-compatible APIs).
- Docs: make
clawdbot statusthe first diagnostic step, clarifystatus --deepbehavior, and document/whoami+/id. - Docs/Testing: clarify live tool+image probes and how to list your testable
provider/modelids. - Tests/Live: make gateway bash+read probes resilient to provider formatting while still validating real tool calls.
- WhatsApp: detect @lid mentions in groups using authDir reverse mapping + resolve self JID E.164 for mention gating. (#692) β thanks @peschee.
- Gateway/Auth: default to token auth on loopback during onboarding, add doctor token generation flow, and tighten audio transcription config to Whisper-only.
- Providers: dedupe inbound messages across providers to avoid duplicate LLM runs on redeliveries/reconnects. (#689) β thanks @adam91holt.
- Agents: strip
<thought>/<antthinking>tags from hidden reasoning output and cover tag variants in tests. (#688) β thanks @theglove44. - macOS: save model picker selections as normalized provider/model IDs and keep manual entries aligned. (#683) β thanks @benithors.
- Agents: recognize "usage limit" errors as rate limits for failover. (#687) β thanks @evalexpr.
- CLI: avoid success message when daemon restart is skipped. (#685) β thanks @carlulsoe.
- Commands: disable
/config+/debugby default; gate viacommands.config/commands.debugand hide from native registration/help output. - Agents/System: clarify that sub-agents remain sandboxed and cannot use elevated host access.
- Gateway: disable the OpenAI-compatible
/v1/chat/completionsendpoint by default; enable viagateway.http.endpoints.chatCompletions.enabled=true. - macOS: stabilize bridge tunnels, guard invoke senders on disconnect, and drain stdout/stderr to avoid deadlocks. (#676) β thanks @ngutman.
- Agents/System: clarify sandboxed runtime in system prompt and surface elevated availability when sandboxed.
- Auto-reply: prefer
RawBodyfor command/directive parsing (WhatsApp + Discord) and prevent fallback runs from clobbering concurrent session updates. (#643) β thanks @mcinteerj. - WhatsApp: fix group reactions by preserving message IDs and sender JIDs in history; normalize participant phone numbers to JIDs in outbound reactions. (#640) β thanks @mcinteerj.
- WhatsApp: expose group participant IDs to the model so reactions can target the right sender.
- Cron:
wakeMode: "now"waits for heartbeat completion (and retries when the main lane is busy). (#666) β thanks @roshanasingh4. - Agents/OpenAI: fix Responses tool-only β follow-up turn handling (avoid standalone
reasoningitems that trigger 400 βrequired following itemβ) and replay reasoning items in Responses/Codex Responses history for tool-call-only turns. - Sandbox: add
clawdbot sandbox explain(effective policy inspector + fix-it keys); improve βsandbox jailβ tool-policy/elevated errors with actionable config key paths; link to docs. - Hooks/Gmail: keep Tailscale serve path at
/while preserving the public path. (#668) β thanks @antons. - Hooks/Gmail: allow Tailscale target URLs to preserve internal serve paths.
- Auth: update Claude Code keychain credentials in-place during refresh sync; share JSON file helpers; add CLI fallback coverage.
- Auth: throttle external CLI credential syncs (Claude/Codex), reduce Keychain reads, and skip sync when cached credentials are still fresh.
- CLI: respect
CLAWDBOTSTATEDIRfor node pairing + voice wake settings storage. (#664) β thanks @azade-c. - Onboarding/Gateway: persist non-interactive gateway token auth in config; add WS wizard + gateway tool-calling regression coverage.
- Gateway/Control UI: make
chat.sendnon-blocking, wire Stop tochat.abort, and treat/stopas an out-of-band abort. (#653) - Gateway/Control UI: allow
chat.abortwithoutrunId(abort active runs), suppress post-abort chat streaming, and prune stuck chat runs. (#653) - Gateway/Control UI: sniff image attachments for chat.send, drop non-images, and log mismatches. (#670) β thanks @cristip73.
- macOS: force
restart-mac.sh --signto require identities and keep bundled Node signed for relay verification. (#580) β thanks @jeffersonwarrior. - Gateway/Agent: accept image attachments on
agent(multimodal message) and add live gateway image probe (CLAWDBOTLIVEGATEWAYIMAGEPROBE=1). - CLI:
clawdbot sessionsnow includeselev:+usage:flags in the table output. - CLI/Pairing: accept positional provider for
pairing list|approve(npm-run compatible); update docs/bot hints. - Branding: normalize user-facing βClawdBotβ/βCLAWDBOTβ β βClawdbotβ (CLI, status, docs).
- Auto-reply: fix native
/modelnot updating the actual chat session (Telegram/Slack/Discord). (#646) - Doctor: offer to run
clawdbot updatefirst on git installs (keeps doctor output aligned with latest). - Doctor: avoid false legacy workspace warning when install dir is
~/clawdbot. (#660) - iMessage: fix reasoning persistence across DMs; avoid partial/duplicate replies when reasoning is enabled. (#655) β thanks @antons.
- Models/Auth: allow MiniMax API configs without
models.providers.minimax.apiKey(auth profiles /MINIMAXAPIKEY). (#656) β thanks @mneves75. - Agents: avoid duplicate replies when the message tool sends. (#659) β thanks @mickahouan.
- Agents: harden Cloud Code Assist tool ID sanitization (toolUse/toolCall/toolResult) and scrub extra JSON Schema constraints. (#665) β thanks @sebslight.
- Agents: sanitize tool results + Cloud Code Assist tool IDs at context-build time (prevents mid-run strict-provider request rejects).
- Agents/Tools: resolve workspace-relative Read/Write/Edit paths; align bash default cwd. (#642) β thanks @mukhtharcm.
- Discord: include forwarded message snapshots in agent session context. (#667) β thanks @rubyrunsstuff.
- Telegram: add
telegram.draftChunkto tune draft streaming chunking forstreamMode: "block". (#667) β thanks @rubyrunsstuff. - Tests/Agents: add regression coverage for workspace tool path resolution and bash cwd defaults.
- iOS/Android: enable stricter concurrency/lint checks; fix Swift 6 strict concurrency issues + Android lint errors (ExifInterface, obsolete SDK check). (#662) β thanks @KristijanJovanovski.
- iOS/macOS: share
AsyncTimeout, require explicitbridgeStableIDon connect, and harden tool display defaults (avoids missing-resource label fallbacks). - Telegram: serialize media-group processing to avoid missed albums under load.
- Signal: handle
dataMessage.reactionevents (signal-cli SSE) to avoid broken attachment errors. (#637) β thanks @neist. - Docs: showcase entries for ParentPay, R2 Upload, iOS TestFlight, and Oura Health. (#650) β thanks @henrino3.
- Agents: repair session transcripts by dropping duplicate tool results across the whole history (unblocks Anthropic-compatible APIs after retries).
- Tests/Live: reset the gateway session between model runs to avoid cross-provider transcript incompatibilities (notably OpenAI Responses reasoning replay rules).
What matters for hosted operators
- Validate channel delivery behavior (web chat + Telegram).
- Verify model/provider settings and fallback behavior.
- Run a smoke test after deploy: message flow, tool call, and response quality.
Post-upgrade checklist
- Send/receive test messages in active channels.
- Confirm bot settings and auth paths still behave as expected.
- Check billing/usage visibility and dashboard status.
- Log regressions immediately and keep rollback notes.
Related reading
Start your free 7-day Pro trial
Source
- https://github.com/openclaw/openclaw/releases/tag/v2026.1.10