๐ nanobot v0.1.4.post4 is here โ 58 PRs merged, 29 new contributors, and a lot of real-world polish from the community.
This release is a big one: safer defaults, better multi-instance support, stronger MCP/tool reliability, and major improvements across Telegram, Feishu, QQ, DingTalk, Discord, WhatsApp, Matrix, and more. A ton of sharp edge cases got cleaned up in this cycle โ the kind of fixes that make nanobot feel much more solid day to day.
Highlights
-
Safer by default โ Access control is tighter now. This release includes a real authorization-bypass fix and stronger default handling around
allowFrom, making deployments much safer out of the box. (#1403, #1677) -
Multi-instance support is finally real โ
--configsupport landed, runtime path handling got cleaned up, and the CLI agent now supports--workspace/--configtoo. Running separate bots, tenants, or environments is much easier now. (#1581, #1635) -
MCP got tougher โ SSE transport support is in, auto-detection is smarter, and MCP tool calls are much less likely to take down the process when cancellations or weird failures happen. (#1488, #1728)
-
Tooling got more forgiving โ Auto-casting tool params, safer validation, graceful datetime handling, and
read_filesize limits all help nanobot fail less badly when tools or inputs get weird. (#1610, #1507, #1508, #1511) -
Provider support keeps growing โ Azure OpenAI support is here, Alibaba Cloud Coding Plan API support landed, prompt-caching affinity headers were added, and GitHub Copilot / Codex compatibility keeps improving. (#1618, #1563, #1428, #1555, #1637, #1525)
-
Cron got much sturdier โ External
jobs.jsonchanges are respected, job context handling is better, and cron jobs are no longer allowed to recursively schedule more cron jobs forever. (#1371, #1375, #1399, #1458) -
Context got cleaner โ Consecutive user messages are merged to avoid provider-side errors, internal reasoning is hidden from user-facing progress updates, image MIME detection is more reliable, and prompt/platform guidance is more polished. (#1456, #1655, #1573, #1579)
-
Telegram got a lot of love โ Proxy handling was fixed, group topics are supported,
/stopworks better, streaming messages landed, and generic documents now keep the right file extensions. (#1535, #1476, #1482, #1660, #1522, #436) -
Feishu keeps getting better โ Rich text parsing, table/card splitting, smarter format selection, Groq Whisper transcription, audio/video compatibility fixes, and cleaner event handling all landed in this release. (#1361, #1384, #1648, #1605, #1531, #1594, #332, #1568)
-
More channels, more polish โ DingTalk group chat support, QQ group handling and markdown sending, Discord group policy + attachments, WhatsApp media support, Slack fallback fixes, and Matrix media normalization all made it in. (#1467, #532, #1727, #553, #1613, #1638, #673, #1406)
-
Cross-platform stability improved โ Better Windows signal handling, fewer missing imports/dependencies, cleaner tests, and overall more confidence that nanobot behaves well across different environments. (#1598, #1485, #1533, #1546, #1339, #1521)
Community
A huge welcome to our 29 new contributors in this release โ thank you all for jumping in and improving nanobot across channels, providers, tooling, docs, and infrastructure. This project keeps getting better because of contributions like these.
What's Changed
- fix(cron): auto-reload jobs.json when modified externally by @Re-bin in https://github.com/HKUDS/nanobot/pull/1371
- style: unify code formatting and import order by @JackLuguibin in https://github.com/HKUDS/nanobot/pull/1339
- fix(feishu): parse post wrapper payload for rich text messages by @cyzlmh in https://github.com/HKUDS/nanobot/pull/1361
- feat(cron): improve cron job context handling by @VITOHJL in https://github.com/HKUDS/nanobot/pull/1375
- feat(tool): add web search proxy by @chengyongru in https://github.com/HKUDS/nanobot/pull/1370
- security: deny by default in is_allowed for all channels by @chengyongru in https://github.com/HKUDS/nanobot/pull/1403
- fix(matrix): normalize media metadata and keyword-call attachment upload by @wenjielei1990 in https://github.com/HKUDS/nanobot/pull/1406
- cron: honor external jobs.json updates during timer ticks by @cyzlmh in https://github.com/HKUDS/nanobot/pull/1399
- fix: merge consecutive user messages to prevent API errors by @nikolasdehor in https://github.com/HKUDS/nanobot/pull/1456
- fix: prevent cron job from scheduling new jobs (feedback loop) by @nikolasdehor in https://github.com/HKUDS/nanobot/pull/1458
- fix: add missed
openaidependency by @cocolato in https://github.com/HKUDS/nanobot/pull/1485 - fix(codex): pass reasoning_effort to Codex API by @danielemden in https://github.com/HKUDS/nanobot/pull/1525
- test: fix test failures from refactored cron and context builder by @chengyongru in https://github.com/HKUDS/nanobot/pull/1521
- fix: handle invalid ISO datetime in CronTool gracefully by @kiplangatkorir in https://github.com/HKUDS/nanobot/pull/1508
- fix: guard validate_params against non-dict input by @kiplangatkorir in https://github.com/HKUDS/nanobot/pull/1507
- fix(feishu): convert audio type to file for API compatibility by @bendusy in https://github.com/HKUDS/nanobot/pull/1531
- fix: add size limit to ReadFileTool to prevent OOM by @kiplangatkorir in https://github.com/HKUDS/nanobot/pull/1511
- fix(tests): resolve failing tests by @SergioSV96 in https://github.com/HKUDS/nanobot/pull/1533
- fix(qq): add msg_seq to prevent message deduplication error by @Liwx1014 in https://github.com/HKUDS/nanobot/pull/1499
- fix(feishu): isolate lark ws Client event loop from main asyncio loop by @coldxiangyu163 in https://github.com/HKUDS/nanobot/pull/1568
- feat(custom-provider): add x-session-affinity header for prompt caching by @dmarkey in https://github.com/HKUDS/nanobot/pull/1428
- feat(discord): add group policy to control group respond behaviour by @joel611 in https://github.com/HKUDS/nanobot/pull/553
- feat(mcp): add SSE transport support with auto-detection by @Qinnnnnn in https://github.com/HKUDS/nanobot/pull/1488
- feat(gateway): support multiple instances by @chengyongru in https://github.com/HKUDS/nanobot/pull/1435
- fix: add SIGTERM, SIGHUP handling and ignore SIGPIPE by @chengyongru in https://github.com/HKUDS/nanobot/pull/1400
- feat(telegram): add streaming messages by @SergioSV96 in https://github.com/HKUDS/nanobot/pull/1522
- fix(feishu): split card messages when content has multiple tables by @zerone0x in https://github.com/HKUDS/nanobot/pull/1384
- fix(feishu): use msg_type "media" for mp4 video files by @pikaqqqqqq in https://github.com/HKUDS/nanobot/pull/1594
- fix(cli): add Windows compatibility for signal handlers (PR #1400) by @Wangshixiong in https://github.com/HKUDS/nanobot/pull/1598
- fix(memory): handle list type tool call arguments for Bailian Qwen by @Wangshixiong in https://github.com/HKUDS/nanobot/pull/1603
- fix(feishu): smart message format selection (fixes #1548) by @pikaqqqqqq in https://github.com/HKUDS/nanobot/pull/1605
- fix(context): detect image MIME type from magic bytes instead of file extension by @coldxiangyu163 in https://github.com/HKUDS/nanobot/pull/1573
- refactor(channels): extract split_message utility to reduce code duplโฆ by @suger-m in https://github.com/HKUDS/nanobot/pull/1567
- feat: Add Alibaba Cloud Coding Plan API support by @Mrart in https://github.com/HKUDS/nanobot/pull/1563
- fix(github copilot tool calls): GitHub Copilot tool_calls not working (multi-choice response) by @gongpx20069 in https://github.com/HKUDS/nanobot/pull/1555
- fix: not imported when LiteLLMProvider is not used by @hcanyz in https://github.com/HKUDS/nanobot/pull/1546
- feat(whatsapp): Media support, incl. image, docs, video by @fat-operator in https://github.com/HKUDS/nanobot/pull/1638
- Fix tool_call_id length error for GitHub Copilot provider by @04cb in https://github.com/HKUDS/nanobot/pull/1637
- feat(provider): support azure openai provider by @kunalk16 in https://github.com/HKUDS/nanobot/pull/1618
- feat: enhance message sending to include file attachments in Discord API by @lzmjlrt in https://github.com/HKUDS/nanobot/pull/1613
- feat(tools): auto-cast parameter types to match tool schema by @wb213 in https://github.com/HKUDS/nanobot/pull/1610
- fix(telegram): added "stop" command handler, fixed stop command by @hlibr in https://github.com/HKUDS/nanobot/pull/1660
- feat(feishu): add audio transcription support using Groq Whisper by @chengyongru in https://github.com/HKUDS/nanobot/pull/1648
- fix: hide reasoning_content from user progress updates by @VITOHJL in https://github.com/HKUDS/nanobot/pull/1655
- fix(feishu): Prevent error logs from unhandled reaction and read events by @huhu-tiger in https://github.com/HKUDS/nanobot/pull/332
- Fix: Telegram channel crash when proxy is configured by @dsxyy in https://github.com/HKUDS/nanobot/pull/1535
- feat(telegram): add Telegram group topic support by @WufeiHalf in https://github.com/HKUDS/nanobot/pull/1482
- fix problem with proxy for Telegram by @noki1928 in https://github.com/HKUDS/nanobot/pull/1476
- fix(telegram): preserve file extension for generic documents by @ZXGERIC in https://github.com/HKUDS/nanobot/pull/436
- feat(dingtalk): add support for group chat messages by @shawnWXN in https://github.com/HKUDS/nanobot/pull/1467
- feat: enable QQ group message handling and dynamic reply dispatch by @zhenghan3852 in https://github.com/HKUDS/nanobot/pull/532
- fix(auth): prevent allowlist bypass via sender_id token splitting by @Re-bin in https://github.com/HKUDS/nanobot/pull/1677
- Update Slack message text fallback response by @alekwo in https://github.com/HKUDS/nanobot/pull/673
- feat: multi-instance support with --config parameter by @shenchengtsi in https://github.com/HKUDS/nanobot/pull/1581
- feat(cli): add workspace/config flags to agent by @maciejwojcik86 in https://github.com/HKUDS/nanobot/pull/1635
- feat(qq): send messages using markdown payload by @TheAutomatic in https://github.com/HKUDS/nanobot/pull/1727
- fix: handle CancelledError in MCP tool calls to prevent process crash by @pixan-ai in https://github.com/HKUDS/nanobot/pull/1728
- chore: refine platform policy and memory SKILL docs by @VITOHJL in https://github.com/HKUDS/nanobot/pull/1579
New Contributors
- @JackLuguibin made their first contribution in https://github.com/HKUDS/nanobot/pull/1339
- @wenjielei1990 made their first contribution in https://github.com/HKUDS/nanobot/pull/1406
- @cocolato made their first contribution in https://github.com/HKUDS/nanobot/pull/1485
- @danielemden made their first contribution in https://github.com/HKUDS/nanobot/pull/1525
- @bendusy made their first contribution in https://github.com/HKUDS/nanobot/pull/1531
- @Liwx1014 made their first contribution in https://github.com/HKUDS/nanobot/pull/1499
- @dmarkey made their first contribution in https://github.com/HKUDS/nanobot/pull/1428
- @joel611 made their first contribution in https://github.com/HKUDS/nanobot/pull/553
- @pikaqqqqqq made their first contribution in https://github.com/HKUDS/nanobot/pull/1594
- @Wangshixiong made their first contribution in https://github.com/HKUDS/nanobot/pull/1598
- @suger-m made their first contribution in https://github.com/HKUDS/nanobot/pull/1567
- @gongpx20069 made their first contribution in https://github.com/HKUDS/nanobot/pull/1555
- @hcanyz made their first contribution in https://github.com/HKUDS/nanobot/pull/1546
- @fat-operator made their first contribution in https://github.com/HKUDS/nanobot/pull/1638
- @04cb made their first contribution in https://github.com/HKUDS/nanobot/pull/1637
- @kunalk16 made their first contribution in https://github.com/HKUDS/nanobot/pull/1618
- @lzmjlrt made their first contribution in https://github.com/HKUDS/nanobot/pull/1613
- @wb213 made their first contribution in https://github.com/HKUDS/nanobot/pull/1610
- @hlibr made their first contribution in https://github.com/HKUDS/nanobot/pull/1660
- @dsxyy made their first contribution in https://github.com/HKUDS/nanobot/pull/1535
- @WufeiHalf made their first contribution in https://github.com/HKUDS/nanobot/pull/1482
- @noki1928 made their first contribution in https://github.com/HKUDS/nanobot/pull/1476
- @ZXGERIC made their first contribution in https://github.com/HKUDS/nanobot/pull/436
- @shawnWXN made their first contribution in https://github.com/HKUDS/nanobot/pull/1467
- @zhenghan3852 made their first contribution in https://github.com/HKUDS/nanobot/pull/532
- @shenchengtsi made their first contribution in https://github.com/HKUDS/nanobot/pull/1581
- @maciejwojcik86 made their first contribution in https://github.com/HKUDS/nanobot/pull/1635
- @TheAutomatic made their first contribution in https://github.com/HKUDS/nanobot/pull/1727
- @pixan-ai made their first contribution in https://github.com/HKUDS/nanobot/pull/1728
Full Changelog: https://github.com/HKUDS/nanobot/compare/v0.1.4.post3...v0.1.4.post4