-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Description
Problem (one or two sentences)
Reasoning chunks returned by the provider in "OpenAI Compatible" mode are not displayed at all in Roo Code, even though they should appear in a collapsible grey reasoning block.
Context (who is affected and when)
Anyone using Roo Code with an "OpenAI Compatible" provider. Reasoning chunks never appear in the interface, so users cannot see or collapse them as intended.
One of the collaborators has confirmed about "OpenAI reasoning chunk format" that should appear in the grey collapsible block: #7615 (comment)
Reproduction steps
- Actions: Run a task using the "OpenAI Compatible" provider that outputs reasoning chunks.
- Observed: Reasoning chunks do not appear anywhere in the UI. No grey collapsible block is shown.
Expected result
Reasoning chunks should be displayed in a collapsible grey block that can be expanded or collapsed by the user.
Actual result
Reasoning chunks are completely invisible; no collapsible block is displayed.
Variations tried (optional)
I've tried different chunk parameters, just modifying them. It either displays thoughts as text (possibly an error in my chunking), or doesn't display them at all, as it does now.
It's also possible that the chunk itself now is in the wrong format (raw streaming response logs in the "Relevant logs or errors" section), and Roo Code simply rejects it as foreign and doesn't display it, simply skipping it.
In that case, I still want to know for sure which "OpenAI reasoning chunk format" is correct and will work with Roo Code?
Or maybe OpenAI Compatible provider really is broken for reasoning. I couldn't find a solution online.
App Version
3.28.18
API Provider (optional)
OpenAI Compatible
Model Used (optional)
Any, custom unified endpoint
Roo Code Task Links (optional)
No response
Relevant logs or errors (optional)
Example of chunk stream in Bruno (like Postman, Insomnia).
My POST request:
{
"model": "gemini-2.5-flash,
"messages": [
{
"role": "user",
"content": "Была 1 кошка пришел мальчик стало 3 кошки сколько денег ТЕПЕРЬ у кошки? Тщательно подумай перед ответом. ТЩАТЕЛЬНО думай."
}
],
"stream": true
}
Chunks output from Bruno:
data: {"id": "chatcmpl-c80f917c-63b1-4141-9945-bcc8087dfcea", "object": "chat.completion.chunk", "created": 1761168653, "model": "gemini-2.5-flash", "choices": [{"index": 0, "delta": {"content": "", "role": "assistant", "reasoning": "\n", "reasoning_details": [{"type": "reasoning.text", "text": "\n", "format": "unknown", "index": 0}]}, "finish_reason": null, "logprobs": null, "matched_stop": null}], "usage": null}
data: {"id": "chatcmpl-c80f917c-63b1-4141-9945-bcc8087dfcea", "object": "chat.completion.chunk", "created": 1761168653, "model": "gemini-2.5-flash", "choices": [{"index": 0, "delta": {"content": "", "role": "assistant", "reasoning": "**Calculating the Deduction**\n\nI've carefully dissected the Russian text, noting the initial state (one cat) and the final state (three cats). The boy's arrival caused a change. Now, to determine the \"zero\" answer, I must identify what the question is asking, which presently involves an unknown amount of money. I'm focusing on the implied action to determine how to arrive at a solution.\n\n\n", "reasoning_details": [{"type": "reasoning.text", "text": "**Calculating the Deduction**\n\nI've carefully dissected the Russian text, noting the initial state (one cat) and the final state (three cats). The boy's arrival caused a change. Now, to determine the \"zero\" answer, I must identify what the question is asking, which presently involves an unknown amount of money. I'm focusing on the implied action to determine how to arrive at a solution.\n\n\n", "format": "unknown", "index": 0}]}, "finish_reason": null, "logprobs": null, "matched_stop": null}], "usage": null}
data: {"id": "chatcmpl-c80f917c-63b1-4141-9945-bcc8087dfcea", "object": "chat.completion.chunk", "created": 1761168653, "model": "gemini-2.5-flash", "choices": [{"index": 0, "delta": {"content": "", "role": "assistant", "reasoning": "**Unpacking the Riddle**\n\nI've moved past simple arithmetic and wordplay misdirections. The \"boy\" is key; if he's not adding a cat, and the question is about *the* cat's money, the boy's arrival must be a decoy, designed to distract from the core inquiry. I am now considering the logical implications of the question's wording. Is the \"now\" critical to unlocking the correct solution?\n\n\n", "reasoning_details": [{"type": "reasoning.text", "text": "**Unpacking the Riddle**\n\nI've moved past simple arithmetic and wordplay misdirections. The \"boy\" is key; if he's not adding a cat, and the question is about *the* cat's money, the boy's arrival must be a decoy, designed to distract from the core inquiry. I am now considering the logical implications of the question's wording. Is the \"now\" critical to unlocking the correct solution?\n\n\n", "format": "unknown", "index": 0}]}, "finish_reason": null, "logprobs": null, "matched_stop": null}], "usage": null}
data: {"id": "chatcmpl-c80f917c-63b1-4141-9945-bcc8087dfcea", "object": "chat.completion.chunk", "created": 1761168653, "model": "gemini-2.5-flash", "choices": [{"index": 0, "delta": {"content": "", "role": "assistant", "reasoning": "**Reframing the Problem**\n\nI've dismissed several straightforward interpretations, which led to considering the inherent characteristics of the subject, a cat, and the irrelevant element of the boy. The \"careful thinking\" directive confirms a need to consider a disconnect between the cat and money, and I am exploring the riddle's inherent assumptions, as well as the implied conditions of the question.\n\n\n", "reasoning_details": [{"type": "reasoning.text", "text": "**Reframing the Problem**\n\nI've dismissed several straightforward interpretations, which led to considering the inherent characteristics of the subject, a cat, and the irrelevant element of the boy. The \"careful thinking\" directive confirms a need to consider a disconnect between the cat and money, and I am exploring the riddle's inherent assumptions, as well as the implied conditions of the question.\n\n\n", "format": "unknown", "index": 0}]}, "finish_reason": null, "logprobs": null, "matched_stop": null}], "usage": null}
data: {"id": "chatcmpl-c80f917c-63b1-4141-9945-bcc8087dfcea", "object": "chat.completion.chunk", "created": 1761168653, "model": "gemini-2.5-flash", "choices": [{"index": 0, "delta": {"content": "", "role": "assistant", "reasoning": "**Unraveling the Conundrum**\n\nI've now considered the complete lack of financial capacity cats inherently possess, which further solidified the answer. The phrase, \"think carefully,\" was a signal to look beyond the numbers and at the core question: Does a cat have money? I have also eliminated all possible distractions and am confident in the final answer.\n\n\n", "reasoning_details": [{"type": "reasoning.text", "text": "**Unraveling the Conundrum**\n\nI've now considered the complete lack of financial capacity cats inherently possess, which further solidified the answer. The phrase, \"think carefully,\" was a signal to look beyond the numbers and at the core question: Does a cat have money? I have also eliminated all possible distractions and am confident in the final answer.\n\n\n", "format": "unknown", "index": 0}]}, "finish_reason": null, "logprobs": null, "matched_stop": null}], "usage": null}
data: {"id": "chatcmpl-c80f917c-63b1-4141-9945-bcc8087dfcea", "object": "chat.completion.chunk", "created": 1761168653, "model": "gemini-2.5-flash", "choices": [{"index": 0, "delta": {"content": "", "role": "assistant", "reasoning": "\n", "reasoning_details": [{"type": "reasoning.text", "text": "\n", "format": "unknown", "index": 0}]}, "finish_reason": null, "logprobs": null, "matched_stop": null}], "usage": null}
data: {"id": "chatcmpl-c80f917c-63b1-4141-9945-bcc8087dfcea", "object": "chat.completion.chunk", "created": 1761168653, "model": "gemini-2.5-flash", "choices": [{"index": 0, "delta": {"content": "\n\n", "role": "assistant", "reasoning": null, "reasoning_details": []}, "finish_reason": null, "logprobs": null, "matched_stop": null}], "usage": null}
data: {"id": "chatcmpl-c80f917c-63b1-4141-9945-bcc8087dfcea", "object": "chat.completion.chunk", "created": 1761168653, "model": "gemini-2.5-flash", "choices": [{"index": 0, "delta": {"content": "\u0423 \u043a\u043e\u0448\u043a\u0438, \u043a\u0430\u043a \u0438 \u0443 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u0448\u043a\u0438, \u043d\u0435\u0442 \u0434\u0435\u043d\u0435\u0433. \u041a\u043e\u0448\u043a\u0438 \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u0435\u043d\u044c\u0433\u0430\u043c\u0438. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0448\u0435\u043a \u0432 \u0434\u043e\u043c\u0435 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0438\u0445 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0435\u0433\u043e \u0443 \u043d\u0438\u0445 \u043d\u0435\u0442.\n\n\u0422\u0430\u043a \u0447\u0442\u043e \u0434\u0435\u043d\u0435\u0433 \u0443 \u043a\u043e\u0448\u043a\u0438 **\u043d\u043e\u043b\u044c**.", "role": "assistant", "reasoning": null, "reasoning_details": []}, "finish_reason": null, "logprobs": null, "matched_stop": null}], "usage": null}
data: {"id":"chatcmpl-c80f917c-63b1-4141-9945-bcc8087dfcea","object":"chat.completion.chunk","created":1761168653,"model":"gemini-2.5-flash","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":39,"completion_tokens":55,"total_tokens":94}}
data: [DONE]Metadata
Metadata
Assignees
Labels
Type
Projects
Status