What's New in v9.7.0
💬 Sticker Replies, MCP Compatibility & Multi-Device Fixes
Version 9.7.0 adds quoted sticker replies and a clean version command for scripts. It improves MCP schema and OAuth compatibility, preserves service availability when one device's connection is replaced, and fixes device/chat selection for group reactions and message revocation.
✨ Features
Quoted Sticker Replies (#867)
POST /send/stickeracceptsreply_message_idfor static and animated stickers.- Requests without
reply_message_idkeep their existing behavior.
Version Command for Scripts (#891)
./whatsapp versionprints9.7.0followed by a newline and exits.- The command skips application initialization, so it does not open databases, create storage directories, connect devices, or print configuration output.
🐛 Bug Fixes
Reactions and Revokes Use the Correct Device and Chat (#903, #905)
- Resolve the original message within the active device and requested chat before constructing a reaction or revoke.
- A sender who is also connected to the same GOWA instance no longer causes another device's outgoing copy to supply the wrong
IsFromMevalue and group participant.
Replaced Connections Stay Isolated (#895)
- A WhatsApp
StreamReplacedevent disconnects only the affected device instead of exiting the whole server. - Other devices keep running. The affected slot and session are preserved, and clients receive a
DEVICE_STREAM_REPLACEDwebsocket event.
MCP OAuth Token Compatibility (#901)
- Authorization-code and refresh-token exchanges may omit
resource; GOWA uses the resource already bound to the grant. - Explicit resource values must still match the expected resource.
MCP Schemas Expose Existing Limits (#894)
- Chat tools advertise
limitfrom 1 to 100 and a non-negativeoffset. - Poll answer counts, forwarding durations, and group-name lengths also expose their existing constraints, allowing clients to validate requests before sending them.
Structured Interactive Buttons in Webhooks (#877)
- Top-level WhatsApp interactive messages now populate
payload.buttons, including supported button IDs, rows, and cards. - Existing text summaries remain available.
Read Receipts from Your Linked Devices (#864)
- Reading a chat on the account's own WhatsApp Web, Desktop, or other linked device now forwards its read/read-self receipt.
- The existing primary-device filter remains in place for contacts' receipts.
🔧 Technical Improvements
- Added media storage and cleanup guidance, with previewable age-based cleanup commands and instructions to preserve databases and scheduled attachments (#904).
- Updated whatsmeow to
v0.0.0-20261015105041-df33a485cc46, goquery tov1.13.0, brotli tov1.2.6, and cascadia tov1.3.5.
Upgrade Notes
- After a connection is replaced, the affected device now stays disconnected until reconnected. Single-device deployments should use the existing reconnect operation instead of relying on the server exiting and a container restart.
- MCP chat requests with an explicit
limit: 0are now rejected by the schema. Omitlimitto use the default, or provide a value from 1 to 100.
What's Changed
- fix(webhook): forward read receipts from the account's own linked devices (#864) by @thealejandro
- chore(deps): update Go dependencies (299d76d) by @aldinokemal
- chore(deps): update Go dependencies (b2658d4) by @aldinokemal
- chore(deps): update Go dependencies (6e2c289) by @aldinokemal
- chore(deps): update Go dependencies (be46d9f) by @aldinokemal
- chore(deps): update Go dependencies (c354c23) by @aldinokemal
- chore(deps): update Go dependencies (ee59c11) by @aldinokemal
- chore(deps): update Go dependencies (a63e690) by @aldinokemal
- fix(mcp): declare limit minimum/maximum in tool schemas so clients see the cap (#893) (#894) by @bobbyhyam
- feat(cmd): add version command that prints only the version (#891) by @MalikD2004
- fix: allow OAuth token requests to omit resource (#901) by @dajiaohuang
- fix(whatsapp): disconnect only the replaced device on StreamReplaced (#895) by @ganeshmshetty
- fix(webhook): expose top-level InteractiveMessage buttons in payload.buttons (#877) by @ElioBonfim
- feat(send): support reply_message_id on stickers (#867) by @thealejandro
- fix(message): scope reaction lookup to device and chat (#903) by @aldinokemal
- docs: explain media storage and cleanup (#904) by @aldinokemal
- fix(message): scope revoke lookup to device and chat (#905) by @aldinokemal
- chore(release): v9.7.0 (5e17e8c) by @aldinokemal
Contributors
Full Changelog: v9.6.0...v9.7.0