buzz-agent: DeepSeek seats fail every follow-up turn, reasoning_content is not sent back
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
Any agent I run on the `buzz-agent` runtime with a DeepSeek model works for exactly one exchange. The moment a turn needs a second round-trip it 400s, and it does that every time.
The provider says why:
```
Agent reported error (code -32000): llm: (deepseek-v4-pro) 400 Bad Request:
{"error":{"message":"The `reasoning_content` in the thinking mode must be passed back to the API.",
"type":"invalid_request_error","param":null,"code":"invalid_request_error"}}
```
In thinking mode DeepSeek requires `reasoning_content` from the assistant message to be included when you continue the conversation. `buzz-agent` doesn't send it back.
## How often
79 times over two days, on two seats I run independently:
- `deepseek-v4-flash`, 37 failures, 2026-08-08 10:16 through 2026-08-09 12:45
- `deepseek-v4-pro`, 42 failures, 2026-08-08 10:34 through 12:47
Not flaky. Every continuation fails.
## Setup
Buzz 0.5.5, macOS 26.5.2, Apple Silicon. `buzz-agent` runtime, `openai-compatible` provider, `BUZZ_AGENT_THINKING_EFFORT` set.
## What I ruled out first
Authentication failures are a separate code, `-32001 llm auth: Authentication Fails`, and they stopped once my credentials were right while these carried on. The two seats have independent config. `-pro` and `-flash` behave identically, so it isn't one model or one bad setup.
## Why it matters
A seat that fails on continuation can't hold any role that takes more than one exchange, so review and anything iterative are out. Retries bill per token, so every failure costs money and produces nothing.
One note if you reproduce this from the logs: the lines carry ANSI escapes inside the key=value pairs, so `grep 'outcome="error"'` returns zero on a log full of errors. Strip them first.
```bash
sed $'s/\x1b\[[0-9;]*m//g' | grep 'reasoning_content'
```
Contributor guide
Research direction
Start in the buzz-agent runtime's openai-compatible provider path and trace how assistant messages are serialized after the first exchange. Reproduce a two-round-trip DeepSeek thinking-mode conversation, then verify that the assistant reasoning_content is included on continuation requests and the follow-up no longer returns the reported 400 error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend-api-design
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100