Sorry we didn’t listen sooner: Native Tool Calling
Well shit. Looks like we messed up a bit.
Up until 3.36, Roo relied on XML-style tool calling. A number of users and contributors told us plainly that native tool calling was the future. You told us so. We did not move fast enough, and we did not give that feedback the time and seriousness it deserved. That one is on us.
In 3.36.0 we introduced native tool calling and started migrating through the 3.36.x releases. In 3.37.0 we made native tool calling the default and removed XML tool calling entirely.
This was not a knee-jerk move. New models now ship with first-class native tool calling support that goes far beyond anything we could realistically achieve with XML. Continuing to invest in XML would anchor Roo to an approach the ecosystem is already moving away from.
Some people have asked why we did not keep XML as an option. Keeping two tool calling architectures massively increases complexity. Every fix, every feature, every tool-related issue forces Roo to reason about two completely different execution paths. That slows development, increases bugs, and makes it harder to move Roo forward. It also guarantees that XML users would slowly get stuck with an increasingly outdated experience as improvements land only in the native path.
This transition has been a pain in the ass, and we know it. We chose to ship when we did based on live metrics, real usage, and incoming bug reports. We knew there would be collateral damage. We tried to minimize it, but this is the largest architectural change Roo has ever gone through.
Right now we are focused on debugging and buttoning up the native tool calling implementation, especially around edge cases. Telemetry shows it is working for the vast majority of users, but we are not pretending this is finished. With many providers, many models, and users constantly switching between them, there is real complexity here. The error reports people send in are incredibly valuable and directly drive fixes.
There is also a bigger reason for doing this now. Over the last two months we have been heavily reworking Roo’s foundation mid-stream. Context handling, task orchestration, and core execution paths are being rebuilt to support some very large features planned for early 2026. Native tool calling is required for that work. Staying on XML would have blocked it outright.
Merry Christmas. We have taken a short break for the holidays, and we are genuinely sorry if you are one of the people whose Roo issues did not get resolved in the final crunch before the break. If you need stability right now, you can roll back to 3.36.16 and select XML tool calling as your default in the advanced settings of your API profiles.
We know this has been frustrating. We are sorry for the pain in the ass this caused. We appreciate the patience, the blunt feedback, and the bug reports.
XML tool calling is retired. Native tool calling is how Roo moves forward.

