deepseek-v4.1-flash tool-calling regression: missing tool_calls, DSML markers leaking into content (since Sep 22)

Open
#909 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
25/100
Issue type
Bug
Clarity
Needs clarification
Activity status
Active
Domain
ai, api, cli

Research direction

No repository file or test is identified. Start by reproducing the request against the deepseek-v4.1-flash OpenAI-compatible endpoint and compare its response with the expected standard tool_calls shape. Check whether the leaked DSML markers occur only for deepseek-family models; done would require a confirmed repository-side path to restore parsing or a clear upstream attribution.

Written by the indexing model from the issue text.

Description

Summary

Since the morning of 2026-09-22 (starting 02:21 UTC), tool calling on deepseek-v4.1-flash has regressed: the model no longer returns the standard tool_calls field. Instead, DeepSeek's internal DSML tool-call markup is emitted as plain text inside content, making it unparseable for any agent client that relies on standard tool_calls.

Environment

Client: pi-coding-agent (0.86.1 / 0.87.0 — behavior identical on both, ruling out a client regression)
Model: deepseek-v4.1-flash
API: OpenAI-compatible endpoint, with tools defined in the request body
Affected window: 2026-09-22 10:21 – 10:56 (UTC+8), for server-side log lookup

Expected Behavior

{
"choices": [{
"message": {
"content": null,
"tool_calls": [{
"id": "...",
"type": "function",
"function": { "name": "read", "arguments": "{"path": "..."}" }
}]
}
}]
}

Actual Behavior

I'll run a grilling session. First, let me read the skill and gather the facts.

<||DSML|| calls>
<||DSML|| invoke name="read">
<||DSML|| parameter name="path" string="true">/Users/xiaodi/.agents/skills/grill-me/SKILL.md</||DSML|| parameter>
</||DSML|| invoke>
</||DSML|| calls>

Steps to reproduce the issue
Time | Status -- | -- Sep 16 – 21 | Tool calling fully normal — ~420 responses with parsed tool_calls, zero anomalies Sep 22, 10:21 onward | Identical requests start returning the leaked format; 100% reproducible across retries Sep 22, 10:49 | Client upgraded to 0.87.0 — no change, ruling out a client regression Sep 22, 11:00 | Switching to glm-5.3-flash restores normal tool calling — issue specific to deepseek-family models
Command Code Version

go sub

Operating System

macOS

Terminal/IDE

No response

Shell

No response

Session file (optional)

No response

Fix prompt (optional)

No response

Additional context

No response

Dominant language
No language data
Stars
4k
Forks
350
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from CommandCodeAI/command-code

All issues in CommandCodeAI/command-code

Similar issues

More AI Infra & Agents issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.