#Bug: DeepSeek V4 Flash returns 400 "reasoning_content must be passed back" in embedded subagent

1 messages · Page 1 of 1 (latest)

faint remnant
#

Description
When using deepseek/deepseek-v4-flash in OpenClaw's embedded subagent (via WeChat), any message triggers a 400 error:
400 The reasoning_content in the thinking mode must be passed back to the API.
Reproduction

  1. Set model to deepseek/deepseek-v4-flash
  2. Send any message from WeChat → triggers embedded subagent call
  3. Error appears immediately

Root Cause
DeepSeek V4 Flash has thinking mode enabled by default. When the model calls a tool, all subsequent requests must include the reasoning_content field. OpenClaw's embedded subagent doesn't implement reasoning_content round-trip, causing the API to reject the request.

DeepSeek Official Docs
https://api-docs.deepseek.com/zh-cn/guides/thinking_mode
The correct way to disable thinking mode is:python
extra_body={"thinking": {"type": "disabled"}}

What I've tried

  • agents.defaults.thinkingDefault = "off" — doesn't translate to extra_body.thinking.type
  • agents.defaults.models["deepseek/deepseek-v4-flash"].params.thinking = "off" — same, no effect
  • Both are accepted by config schema, hot reload succeeds, but the 400 error persists

Suggested Fix
When thinkingLevel === "off" for a DeepSeek model, inject {"thinking": {"type: "disabled"}} into extra_body of the API request.

Workaround
Use deepseek-chat instead (catalog has reasoning: false), but this is a less powerful model.

Environment

  • OpenClaw: 2026.4.23
  • Model: deepseek/deepseek-v4-flash
  • Channel: WeChat (openclaw-weixin)