anomalyco / anomalyco/opencode
`mimo-v2.5` intermittently omits requested reasoning on OpenCode Go
@fwang is already working on this.
Since Aug 20, 2026.
- Dominant language
- TypeScript
- Stars
- 209k
- Forks
- 27.5k
- PR merge metrics
- PR metrics pending
Description
Description
POST https://opencode.ai/zen/go/v1/chat/completions sometimes returns a valid streamed JSON answer from mimo-v2.5 with no reasoning, despite receiving "reasoning":{"enabled":true}.
The behavior correlates with the response ID:
gen-*responses include reasoning.<UUID>_<UUID>responses return the final answer indelta.content, butdelta.reasoning_contentis alwaysnulland usage reports zero reasoning tokens.
This changes over time: a 30-minute poll produced 30 consecutive gen-* responses with reasoning, while a later test window produced only UUID-style IDs.
Request
The request that reliably reproduces this (when the faulty upstream is active) is a multimodal structured-extraction request:
{
"model": "mimo-v2.5",
"messages": [
{ "role": "system", "content": "<11,728 characters>" },
{
"role": "user",
"content": [
{ "type": "text", "text": "<7,014 characters>" },
{ "type": "image_url", "image_url": { "url": "data:image/png;base64,<1280x1600 PNG>" } },
{ "type": "image_url", "image_url": { "url": "data:image/png;base64,<1280x454 PNG>" } }
]
}
],
"temperature": 0.4,
"stream": true,
"reasoning": { "enabled": true },
"response_format": {
"type": "json_schema",
"json_schema": { "name": "extracted_events", "strict": true, "schema": "<schema>" }
}
}
I can provide the complete request and images; the capture contains no authorization header.
Actual response
data: {"id":"43ba9cce-b1ba-411a-9e22-29c93429f0fb_256c06cf7ab643d69d5f8a66366ca2ad","model":"mimo-v2.5","choices":[{"index":0,"finish_reason":null,"delta":{"role":"assistant","content":"","reasoning_content":null,"tool_calls":null}}]}
data: {"id":"43ba9cce-b1ba-411a-9e22-29c93429f0fb_256c06cf7ab643d69d5f8a66366ca2ad","model":"mimo-v2.5","choices":[{"index":0,"finish_reason":null,"delta":{"role":null,"content":"{\n","reasoning_content":null,"tool_calls":null}}]}
Usage:
{
"prompt_tokens": 8917,
"completion_tokens": 342,
"total_tokens": 9259,
"completion_tokens_details": { "reasoning_tokens": 0 }
}
The response was HTTP 200 and contained 967 characters of valid JSON. All 99 chunks with a reasoning_content field had it set to null.
I replayed the identical archived request five times while UUID-style IDs were active:
reasoning: {"enabled":true}: 2/2 had no reasoning.reasoning: {"enabled":true,"effort":"high"}: 2/2 had no reasoning.reasoning: {"effort":"high"}: 1/1 had no reasoning.
Earlier replays of that same request with gen-* IDs returned 7,649 and 2,620 characters of reasoning, reported as 2,132 and 695 reasoning tokens respectively.
A small text-only prompt can return reasoning with UUID-style IDs, so the problem may depend on request size or the multimodal/structured request shape.
Expected behavior
Identical requests with reasoning enabled should behave consistently across upstreams. The endpoint should either return reasoning or explicitly indicate that it is unavailable, rather than silently returning HTTP 200 without it.
Environment
- Direct hosted OpenCode Go API; OpenCode CLI and plugins are not involved
- Bun 1.3.14
- AlmaLinux 10.2, x86_64
- Observed August 18-19, 2026
Possibly related to #37635, although that issue reports output being placed in reasoning_content; here the final output is correctly in content, but reasoning is absent.
Plugins
No response
OpenCode version
No response
Steps to reproduce
No response
Screenshot and/or share link
No response
Operating System
No response
Terminal
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.