Introduction
OpenClaw 3.2 has landed. It hasn’t been long since 3.1, but here we are already.
This release in three lines:
- PDF is finally a first-class citizen β dedicated tool with native Anthropic/Google support
- Secrets management is now truly complete β SecretRef expanded to all 64 credential targets
- Plugin SDK gets a massive upgrade β external extensions can now tap directly into OpenClaw’s internals
1. π PDF Tool β Finally First-Class
Personally, this is the most exciting change in 3.2. (Thanks @tyler6204)
Previously, working with PDFs required workarounds. Now there’s a dedicated pdf tool built right in.
Key features:
- Native Anthropic / Google support: These models read PDFs directly β no text extraction needed.
- Fallback for non-native models: Other models get automatic text/image extraction fallback.
- Configurable defaults:
agents.defaults.pdfModel: Specify which model to use for PDF analysisagents.defaults.pdfMaxBytesMb: Max file size limitagents.defaults.pdfMaxPages: Max page count
If you’ve been throwing research papers, patent specs, or contracts at your agent, this is a game changer. “Summarize this PDF” just became a one-liner. π
2. π Secrets Management β Now Truly Complete (64 Targets)
2.26 introduced external secrets management. 3.2 finishes the job. (Thanks @joshavant)
SecretRef support now covers the entire user-supplied credential surface β all 64 targets.
Coverage includes:
- Runtime collectors
- Full
openclaw secrets plan / apply / auditflows - Onboarding SecretInput UX
- Documentation updates throughout
Key behavioral change:
- Unresolved refs on active surfaces β fail-fast: No more silently swallowing missing keys.
- Inactive surfaces β non-blocking diagnostics: Unused config refs surface as warnings only.
If you’ve been storing API keys as plaintext in openclaw.json, this is really the moment to migrate to proper secrets management. π
3. π¨ Telegram β Three Solid Updates
Telegram gets three meaningful changes in 3.2.
Streaming Defaults to partial
Previously, channels.telegram.streaming defaulted to off. Now it defaults to partial. (Thanks @obviyus)
New Telegram setups get live preview streaming out of the box β no config needed. When native draft streaming isn’t available, it gracefully falls back to message-edit preview.
The UX difference is real. Watching a response stream in feels much more natural than staring at a spinner and waiting for the full wall of text to appear.
DM Streaming via sendMessageDraft
Private DM preview streaming now uses sendMessageDraft. In DM reasoning-stream mode, the reasoning lane and the answer lane are kept separate β your internal thinking process won’t get tangled with the final output.
Voice Mention Gating β Skip Preflight Transcription
Previously, incoming voice notes in groups always triggered a preflight transcription to check for mentions. Now operators can set disableAudioPreflight: true to skip that step. (Thanks @yangnim21029)
For setups that only need text-based mention detection, this eliminates unnecessary STT API calls per voice note.
4. π sessions_spawn β Inline File Attachments
You can now attach files directly when spawning a subagent. (Thanks @napetrov)
Available for the subagent runtime:
base64/utf8encoding supported- Attachment contents automatically redacted from transcripts
- Lifecycle cleanup on session end
- Limits configurable via
tools.sessions_spawn.attachments
Practical example: pass source files directly to a coding subagent alongside the task description. No more awkward workarounds to get file content into the spawned session.
5. π€ MiniMax-M2.5-highspeed β New Model Joins
MiniMax-M2.5-highspeed is now natively supported across the built-in provider catalog, onboarding flows, and MiniMax OAuth plugin defaults.
Existing MiniMax-M2.5-Lightning users keep full compatibility β no config changes needed. If you need the higher-throughput option, highspeed is now the one to reach for.
6. π§ openclaw config validate β Check Before You Start
Finally. (Thanks @Sid-Qin)
openclaw config validate
openclaw config validate --json
Validate your config file before actually starting the gateway. The --json flag surfaces detailed invalid-key paths. No more discovering config typos at startup time.
This belongs in every CI/CD pipeline that deploys OpenClaw.
7. π§ Memory β Ollama Embedding Support
Good news for local-first setups. (Thanks @nico-hoff)
Memory search embeddings can now be handled entirely by Ollama:
memorySearch:
provider: "ollama"
fallback: "ollama"
It automatically respects your existing models.providers.ollama settings, so there’s minimal extra config. Running embeddings locally means one more API cost that disappears from your bill. π€
8. π Plugin SDK β Major Expansion
3.2 delivers a substantial round of improvements for plugin developers.
Channel Runtime Access (channelRuntime) (Thanks @guxiaobo)
External channel plugins can now access shared runtime helpers (reply, routing, session, text, media, commands) directly via channelRuntime on ChannelGatewayContext β no internal imports required.
STT API Exposed (Thanks @benthecarman)
api.runtime.stt.transcribeAudioFile(...) is now available to extensions. Plugins can transcribe local audio files through OpenClaw’s configured audio providers without any plumbing.
sessionKey in Session Lifecycle Hooks (Thanks @tempeste)
session_start and session_end hook events now include sessionKey, letting plugins correlate lifecycle callbacks with routing identity.
Message Lifecycle Hooks (Thanks @Drickon)
Two new hook events:
message:transcribedβ fires after transcription completesmessage:preprocessedβ fires after preprocessing
Outbound message:sent also gains isGroup and groupId context for group-conversation correlation.
requestHeartbeatNow (Thanks @AustinEral)
runtime.system.requestHeartbeatNow(...) lets plugins immediately wake targeted sessions after enqueuing system events β no waiting for the next poll cycle.
Event Subscription API (Thanks @scifantastic)
runtime.events.onAgentEvent and runtime.events.onSessionTranscriptUpdate are now exposed. Individual listener failures are isolated β one faulty listener can no longer break the entire update fanout.
9. π οΈ Other Notable Changes
Diffs Tool β PDF Output (Thanks @gumadeiras)
Diff artifacts can now be exported as PDF files, with fileQuality, fileScale, and fileMaxWidth controls for rendering quality. PDF is now the recommended output format when messaging channels compress images.
Audio Echo Transcript (Thanks @AytuncYildizli)
New option to send the transcription result back to the originating chat before it reaches the agent:
tools:
media:
audio:
echoTranscript: true
echoFormat: "text"
Useful for confirming that voice input was understood correctly. Disabled by default.
Outbound sendPayload Unification (Thanks @nohat)
sendPayload support is now shared across Discord, Slack, WhatsApp, Zalo, and Zalouser adapters β with multi-media iteration and chunk-aware text fallback handled consistently.
Zalo Personal Plugin β Native Rebuild
@openclaw/zalouser has been rebuilt using native zca-js integration in-process, removing the external CLI transport entirely. QR/login and send/listen flows now run fully inside OpenClaw.
Banner Tagline Control
cli:
banner:
taglineMode: random # random | default | off
Control whether the startup banner shows a random funny tagline, a fixed default, or nothing at all. Small thing, but a random tagline every startup is a nice touch. π
Wrapping Up
3.2 is a tooling maturity + plugin ecosystem expansion + Telegram UX polish release.
The PDF tool promotion to first-class simplifies any workflow involving papers, contracts, or specs. SecretRef reaching all 64 targets feels like the security story for the 3.x series is now properly closed. Telegram streaming defaulting to partial is an immediate UX win for anyone setting up a new channel.
The breadth of the Plugin SDK expansion makes it increasingly clear that OpenClaw is evolving into a real agent platform, not just a bot framework.
As always:
openclaw update
Go get it. π