-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Description
Problem (one or two sentences)
Summary
When using Roo Code with an OpenAI-Compatible endpoint backed by SGLang serving openai/gpt-oss-120b (HarmonyParser), Roo Code v3.36.16 works perfectly if Tool Call Protocol = XML.
Starting from v3.37+, the Tool Call Protocol selector is removed and new tasks are forced to use native tool calling, which makes SGLang crash with a 500 error (structure_info not used with HarmonyParser). This blocks agent/tool workflows entirely for this stack.
Roo release notes mention that new tasks default to native tool calling.
Roo Code Docs
Context (who is affected and when)
The PR that removed the XML selection/forces native for new tasks:
Environment
- Roo Code: 3.36.16 (works with XML); 3.37.x (breaks due to forced native)
- Provider: OpenAI-Compatible (self-hosted endpoint)
- Model: openai/gpt-oss-120b
- Backend: SGLang OpenAI-compatible server (NVIDIA container (nvcr.io/nvidia/sglang:25.12-py3) / local network)
- Asus Asccent GX 10 (DGX Spark)
Steps to reproduce
- Run SGLang OpenAI-compatible server serving openai/gpt-oss-120b (HarmonyParser).
- Configure Roo Code to use OpenAI-Compatible provider pointing to this endpoint, model openai/gpt-oss-120b.
- In Roo Code v3.36.16, set Tool Call Protocol = XML in provider settings. Run any task that triggers tools (e.g., DevOps mode instructions that run a command). ✅ Works.
- Update Roo Code to v3.37+ (or create a new task where protocol is forced to native). Run the same task. ❌ Fails with HTTP 500 from SGLang.
Expected behavior
- Keep the ability to force XML tool protocol (at least for OpenAI-Compatible endpoints / per model / per task), OR
- Add a fallback: if native tool calling fails (500/unsupported), automatically retry with XML, OR
- Allow an advanced switch to disable native tool calling for OpenAI-Compatible endpoints.
Actual behavior
- Roo Code shows: OpenAI completion error: 500 status code (no body)
- SGLang server logs show NotImplementedError: structure_info not used with HarmonyParser (see below)
SGLang error log (server)
Error in request: structure_info not used with HarmonyParser Traceback (most recent call last): ... File ".../function_call_parser.py", line 139, in get_structure_tag get_structure_info = self.detector.structure_info() File ".../gpt_oss_detector.py", line 241, in structure_info raise NotImplementedError("structure_info not used with HarmonyParser") NotImplementedError: structure_info not used with HarmonyParser
Why XML works
With XML protocol, Roo does not send native tools/tool_choice constraints in the OpenAI payload, so SGLang doesn’t enter the HarmonyParser structure-constraint path that throws NotImplementedError.
Related references
`Roo Code 3.36.13 notes: native default, XML still available in provider settings
https://docs.roocode.com/update-notes/v3.36.13
Roo Code 3.37 notes: new tasks default to native tool calling
https://docs.roocode.com/update-notes/v3.37
PR removing XML selector / forcing native for new tasks (#10281)
#10281
SGLang issue hinting HarmonyParser/grammar/tool_choice limitations for gpt-oss
sgl-project/sglang#9980
`
Desired behavior (conceptual, not technical)
Compatibility request: please keep (or restore) an option to force XML tool calling (legacy) — or at least provide an automatic fallback to XML — for OpenAI-Compatible / local-model setups. On my stack (SGLang serving openai/gpt-oss-120b), everything works reliably on Roo Code v3.36.16 when I can choose XML, but v3.37+ defaults new tasks to native tool calling and my endpoint returns API errors. I know this has already been discussed (Issue #10312, closed as “not planned”), but I’m adding this preference in hopes of a compromise so users can keep updating while still using the older working mechanism when needed.
Link: https://github.com/RooCodeInc/Roo-Code/issues/10312
Constraints / preferences (optional)
No response
Request checklist
- I've searched existing Issues and Discussions for duplicates
- This describes a specific problem with clear context and impact
Roo Code Task Links (optional)
No response
Acceptance criteria (optional)
No response
Proposed approach (optional)
No response
Trade-offs / risks (optional)
No response
Metadata
Metadata
Assignees
Labels
Type
Projects
Status