bug: [Auto-review] 自动审批偶发拒绝无害命令,报 litellm/Deepseek 接口格式错误
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 395
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
### 问题描述 / What happened
## 环境
- Cindy 桌面版
- sandbox_mode: workspace-write(文件系统受限,网络受限)
- 命令:`Get-ChildItem -Force`(仅列目录,无害)
- 出现时间:2026-08-02,Asia/Singapore
## 现象
执行无害命令时,被拒绝并提示:
`The action was rejected due to unacceptable risk.`
拒绝原因里包含:
`litellm.BadRequestError: DeepseekException - {"error":{"message":"This response_format type is unavailable now", ...}}`
## 推断
自动审批(auto-review)环节调用模型做评审时,模型接口(Deepseek)不支持该 response_format,评审失败,系统按"不可接受风险"默认拒绝。
## 期望行为
评审环节失败时应放行,或提示"自动评审暂不可用",而不是直接拒绝无害命令。
## 其他
另一个会话/环境也出现过相同现象(疑似可复现)。
### 环境 / Environment
- Cindy 版本或 commit / version or commit: 41.2.0
- 平台与版本 / platform & OS version: Windows 11 Pro 10.0.26200 Build 26200
- 安装方式 / install method: 官方安装包(C:\Program Files\Cindy,桌面客户端)
- 沙箱模式 / sandbox mode: workspace-write(文件系统受限 + 网络受限)
- 出现时间 / occurred: 2026-08-02 (Asia/Singapore)
### 复现步骤 / Steps to reproduce
1. 在 workspace-write 沙箱模式下,让 Codex 执行一条无害命令,例如 `Get-ChildItem -Force`(仅列目录)。
2. 该命令未执行,被自动审批(auto-review)拦截,返回:
"The action was rejected due to unacceptable risk."
3. 拒绝原因内嵌报错:
litellm.BadRequestError: DeepseekException - {"error":{"message":"This response_format type is unavailable now","type":"invalid_request_error",...}}
4. 另一个会话/环境中也出现相同现象(疑似可复现)。
期望 / Expected:
自动审批的评审模型调用失败时,应放行无害命令或明确提示"自动评审暂不可用",而不是直接按高风险拒绝。
### 日志与截图 / Logs & screenshots
Get-ChildItem -Force | Select-Object Name, Length, LastWriteTime
cwd: C:\Users\user\AppData\Roaming\CindyGlobal\owners\1106d4699367d440180b\dialogues\2026-08-02\4a5296b3-2b31-4f99-bdee-8c7c2bd196ac
This action was rejected due to unacceptable risk.
Reason: Automatic approval review failed: {"error":{"message":"litellm.BadRequestError: DeepseekException - {\"error\":{\"message\":\"This response_format type is unavailable now\",\"type\":\"invalid_request_error\",\"param\":null,\"code\":\"invalid_request_error\"}}","type":null,"param":null,"code":"400"}}
The agent must not attempt to achieve the same outcome via workaround, indirect execution, or policy circumvention. Proceed only with a materially safer alternative, or if the user explicitly approves the action after being informed of the risk. Otherwise, stop and request user input.
Contributor guide
Research direction
Start by tracing the auto-review flow and its LiteLLM/Deepseek response_format request, using the reproduction with Get-ChildItem -Force as the failure case. Determine how review-call errors are handled, then verify that an unavailable review model produces the intended user-facing outcome instead of an unconditional unacceptable-risk rejection.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend-api-design, security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100