v0.18.3

openclaw/wacliv0.18.3Sep 22, 2026by github-actions[bot]

Upgrading?

AI Summary

This release prioritizes security by omitting media decryption keys from webhooks, enhances history and contact resolution using verified phone/LID pairs, and improves sync reliability through better interruption handling and LTHash repair. It also includes significant updates to CLI diagnostics and store error handling.

Key Highlights

  • Security: Media webhooks now omit attachment decryption keys and retrieval fields.
  • History & Contacts: Backfill requests now resolve verified phone/LID pairs for identities.
  • Sync: Interruptions are handled gracefully, and LTHash mismatches are repaired with a durable full refresh.
  • CLI: Libsignal diagnostics are redirected to stderr and emitted as NDJSON warnings.

Breaking Changes

  • The bulk chat/group cleanup function now returns a failure status when rows cannot be deleted, instead of emitting a successful JSON result.

New Features

  • Decryption of encrypted message edits in live/history sync with proper binding to sender/chat/target.
  • Indexing of associated-child and group-status-mention content during sync.
  • Retention of observed session revocation in auth/doctor diagnostics until confirmed login.
  • Durable full refresh for LTHash mismatches before bounded phone recovery.

Full Release Notes

## 0.18.3 - 2026-09-21

**Highlights:** webhooks omit media keys, backfill follows verified phone/LID identities, and sync recovery survives interruptions.

- Security: omit attachment decryption keys and retrieval fields from media webhooks while preserving descriptive metadata and local downloads. (#417 - thanks @hchittanuru3)
- History and contacts: resolve verified phone/LID pairs for backfill requests and contact lookup, preserve alias/tag edits through either identity, and keep opaque LIDs out of phone fields. (#427 - thanks @ugoi)
- History: wait for response persistence before checking backfill progress, preventing an asynchronous reply from stopping a multi-batch backfill early.
- Sync: decrypt encrypted message edits in live/history sync and bind updates to the authenticated sender, chat, and target. (#362, #363 - thanks @goutamadwant)
- Sync: repair LTHash mismatches with a durable full refresh before bounded phone recovery, and replay interrupted recovery at startup. (#367, #382 - thanks @shishiv)
- Messages: index associated-child and group-status-mention content and group-invite captions during live/history sync. (#365 - thanks @natea)
- Auth: retain observed session revocation in auth/doctor diagnostics until confirmed login, and wait for login confirmation before reporting a successful diagnostic connection. (#389 - thanks @0xble)
- CLI: keep libsignal diagnostics off stdout, preserve warnings and errors safely on stderr, and emit them as NDJSON warnings with `--events` without exposing raw cryptographic payloads. (#418, #419 - thanks @shishiv)
- Store: return failure when bulk chat/group cleanup cannot delete selected rows, preserving successful deletions and reporting the underlying errors instead of emitting a successful JSON result.
- Session: close the WhatsApp SQLite container on permanent shutdown and initialization failure, while keeping temporary reconnects usable and draining pending app-state persistence before closing either database.
- Dependencies: refresh WhatsApp protocol handling, Go modules, pnpm, GoReleaser, and Docker images; keep the Go and Node source requirements unchanged.
- Builds: share production/test dead-code checks between local and CI gates, validate documentation links in CI, isolate concurrent Windows lock cross-builds, and allow Go module maintenance while keeping CGO-disabled builds rejected.

Related Repositories