block / block/buzz

buzz-agent: DeepSeek seats fail every follow-up turn, reasoning_content is not sent back

Open
#5,399 2 comments 1 reaction 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.