Bug Description
When using DeepSeek V4 Pro with thinking mode enabled, multi-turn conversations fail with:
HTTP 400: The content[].thinking in the thinking mode must be passed back to the API.
Root Cause
DeepSeek V4 Pro returns thinking content inside the content array:
{
"choices": [{
"message": {
"content": [
{"type": "thinking", "thinking": "..."},
{"type": "output", "output": "..."}
]
}
}]
}
However, Hermes transport code only looks for reasoning_content field in the message object — it does not parse content array items with type: thinking.
Result: Thinking content is never saved to session. On the next turn, when the session is replayed, the thinking block is missing → DeepSeek API returns 400.
Reproduction
- Set up a profile with DeepSeek V4 Pro and thinking enabled
- Send a first message → succeeds, thinking appears in response
- Send a second message → fails with HTTP 400
Expected Behavior
Thinking content from content[].thinking should either:
- Be persisted to session (so it is replayed in next turn), or
- Be converted to
reasoning_content field before session storage
Environment
- Hermes v0.13.0 (v2026.5.7)
- Provider: deepseek (DeepSeek V4 Pro)
- OS: Linux (WSL)
Bug Description
When using DeepSeek V4 Pro with thinking mode enabled, multi-turn conversations fail with:
Root Cause
DeepSeek V4 Pro returns thinking content inside the
contentarray:{ "choices": [{ "message": { "content": [ {"type": "thinking", "thinking": "..."}, {"type": "output", "output": "..."} ] } }] }However, Hermes transport code only looks for
reasoning_contentfield in the message object — it does not parsecontentarray items withtype: thinking.Result: Thinking content is never saved to session. On the next turn, when the session is replayed, the thinking block is missing → DeepSeek API returns 400.
Reproduction
Expected Behavior
Thinking content from
content[].thinkingshould either:reasoning_contentfield before session storageEnvironment