Ian Chamberlain
49dee40073
agent: Skip empty assistant messages for Mistral provider ( #47579 )
...
This small change *may* help with #39211 , #35025 or #39031 although I'm
not positive it will fix it entirely. At a minimum, it should prevent
sending invalid requests to the Mistral API, which return a 400 error
and can prevent the thread from progressing if it gets stuck in a retry
loop.
This should prevent sending a message like `{ "role": "assistant",
"content": "" }` if for some reason the thread contains a message with
an empty text content and no tool calls.
Some users (including myself) have encountered this with the Devstral 2
models, although it doesn't seem trivial to reproduce:
https://github.com/zed-industries/zed/issues/37021#issuecomment-3728902562
When it occurs, error logs look something like this:
```
2026-01-24T19:53:35-08:00 ERROR [crates/agent/src/thread.rs:984] invalid type: string "Failed to connect to Mistral API: 400 Bad Request {\"object\":\"error\",\"message\":\"Assistant message must have either content or tool_calls, but not none.\",\"type\":\"invalid_request_assistant_message\",\"param\":null,\"code\":\"3240\"}", expected struct EditFileToolOutput
2026-01-24T19:53:35-08:00 ERROR [crates/agent/src/thread.rs:984] invalid type: string "Failed to connect to Mistral API: 400 Bad Request {\"object\":\"error\",\"message\":\"Assistant message must have either content or tool_calls, but not none.\",\"type\":\"invalid_request_assistant_message\",\"param\":null,\"code\":\"3240\"}", expected struct EditFileToolOutput
2026-01-24T19:53:35-08:00 ERROR [crates/agent/src/thread.rs:984] invalid type: string "Failed to connect to Mistral API: 400 Bad Request {\"object\":\"error\",\"message\":\"Assistant message must have either content or tool_calls, but not none.\",\"type\":\"invalid_request_assistant_message\",\"param\":null,\"code\":\"3240\"}", expected struct EditFileToolOutput
```
Release Notes:
- Fixed agent sometimes sending invalid messages to Mistral API
2026-02-13 11:49:56 +00:00
..
2026-02-12 16:22:58 +00:00
2026-01-21 13:40:42 -03:00
2026-01-22 02:31:14 -05:00
2026-02-10 16:03:46 -03:00
2026-02-13 04:54:22 +00:00
2026-02-10 18:57:31 -05:00
2026-02-12 15:46:10 -05:00
2026-02-13 04:54:22 +00:00
2026-01-28 21:34:10 +00:00
2026-02-07 04:21:58 +00:00
2026-01-30 21:26:13 +00:00
2025-10-17 18:58:14 +00:00
2026-01-26 23:56:55 +00:00
2026-02-06 20:14:35 +01:00
2026-02-09 00:56:20 +01:00
2026-02-12 14:27:55 +01:00
2026-02-10 16:03:46 -03:00
2025-11-11 12:55:19 +00:00
2026-02-12 00:28:17 +00:00
2025-10-17 18:58:14 +00:00
2026-02-13 12:41:14 +01:00
2026-02-06 20:21:19 +00:00
2026-02-10 01:19:01 -05:00
2026-01-07 12:48:24 -08:00
2026-01-07 12:48:24 -08:00
2026-02-10 16:17:49 +01:00
2026-01-28 18:28:53 +00:00
2025-11-06 09:16:45 +00:00
2025-11-10 23:00:55 -07:00
2026-02-07 17:54:29 +00:00
2026-02-06 14:03:03 -05:00
2026-02-05 17:34:34 -05:00
2026-02-12 09:36:48 +02:00
2026-02-12 01:06:23 +00:00
2025-10-17 18:58:14 +00:00
2026-02-12 01:06:23 +00:00
2025-10-17 18:58:14 +00:00
2025-10-17 18:58:14 +00:00
2026-01-23 18:29:20 +01:00
2026-01-30 21:26:13 +00:00
2026-02-11 18:19:41 +01:00
2026-02-12 15:02:17 +00:00
2026-02-12 01:06:23 +00:00
2026-01-14 07:19:13 +00:00
2026-01-07 12:48:24 -08:00
2026-01-28 16:00:52 +00:00
2026-02-04 04:44:42 -05:00
2026-02-12 16:26:13 +00:00
2026-01-14 07:19:13 +00:00
2026-02-10 23:29:51 +00:00
2026-02-12 01:06:23 +00:00
2025-12-18 12:47:34 +00:00
2025-10-17 18:58:14 +00:00
2026-02-12 01:06:23 +00:00
2026-02-12 01:06:23 +00:00
2026-02-04 17:37:13 +00:00
2026-02-13 13:47:28 +02:00
2026-02-12 15:24:24 -05:00
2026-02-12 15:24:24 -05:00
2026-02-04 17:54:11 -05:00
2026-02-13 00:15:59 +00:00
2026-02-13 10:49:50 +00:00
2026-02-12 00:28:17 +00:00
2026-02-13 04:54:22 +00:00
2025-12-18 17:26:20 +01:00
2025-10-17 18:58:14 +00:00
2026-02-04 23:03:15 +01:00
2026-02-05 12:13:02 +00:00
2026-02-07 17:54:29 +00:00
2026-02-10 10:38:47 -08:00
2026-02-12 00:28:17 +00:00
2026-02-12 01:06:23 +00:00
2025-10-17 18:58:14 +00:00
2026-02-12 11:26:49 +00:00
2025-10-17 18:58:14 +00:00
2026-01-30 09:42:28 +01:00
2025-10-20 10:30:06 +00:00
2025-12-08 19:50:20 +01:00
2026-02-03 04:24:11 +00:00
2026-02-12 23:57:19 +00:00
2026-01-31 21:56:34 +00:00
2026-02-12 23:57:19 +00:00
2026-02-12 01:06:23 +00:00
2025-12-17 20:12:40 -06:00
2026-02-13 10:49:50 +00:00
2026-01-27 15:37:22 -03:00
2026-01-07 12:48:24 -08:00
2025-10-17 18:58:14 +00:00
2025-12-09 09:29:40 -08:00
2025-10-17 18:58:14 +00:00
2026-02-12 14:58:21 +00:00
2026-02-05 09:31:11 +00:00
2026-02-12 01:06:23 +00:00
2026-02-12 00:28:17 +00:00
2026-02-12 01:06:23 +00:00
2026-02-12 09:58:38 -05:00
2026-02-12 01:06:23 +00:00
2026-02-13 12:06:34 +01:00
2026-02-04 23:03:15 +01:00
2026-02-07 04:21:58 +00:00
2026-02-13 11:49:56 +00:00
2025-10-17 18:58:14 +00:00
2026-01-23 18:29:20 +01:00
2026-02-12 17:55:36 +00:00
2026-02-12 18:46:43 +02:00
2025-10-22 19:52:38 +00:00
2026-02-03 15:51:40 -05:00
2026-02-12 14:27:55 +01:00
2025-10-17 18:58:14 +00:00
2026-02-07 00:36:37 +00:00
2026-02-02 16:37:58 +00:00
2026-02-13 15:25:40 +05:30
2025-10-17 18:58:14 +00:00
2025-12-30 07:49:01 -03:00
2026-02-10 18:57:31 -05:00
2026-02-12 01:06:23 +00:00
2026-02-05 17:34:34 -05:00
2026-02-10 20:20:57 +00:00
2026-01-06 08:14:34 +00:00
2025-10-17 18:58:14 +00:00
2026-01-21 14:52:44 +00:00
2026-01-07 12:48:24 -08:00
2026-02-12 16:58:24 +00:00
2026-02-12 01:06:23 +00:00
2026-02-13 04:54:22 +00:00
2026-02-12 01:06:23 +00:00
2026-02-12 14:02:16 +00:00
2026-02-12 09:36:48 +02:00
2026-02-12 09:36:48 +02:00
2026-02-02 13:30:07 +01:00
2026-02-06 15:34:36 +00:00
2026-01-23 18:29:20 +01:00
2026-02-12 01:06:23 +00:00
2026-02-07 00:36:37 +00:00
2026-02-13 11:13:18 +00:00
2026-01-20 15:41:31 -05:00
2026-02-12 09:54:33 -03:00
2026-02-12 01:06:23 +00:00
2026-01-30 21:26:13 +00:00
2026-02-11 21:30:03 +02:00
2026-02-12 16:35:18 -08:00
2025-12-15 13:30:13 +00:00
2025-11-27 13:46:43 +00:00
2026-02-12 00:28:17 +00:00
2026-02-02 13:30:07 +01:00
2026-02-12 11:50:24 +00:00
2026-02-13 08:18:55 +01:00
2026-02-04 01:33:12 +00:00
2025-11-03 19:25:15 +00:00
2026-02-11 14:21:13 +01:00
2026-02-11 21:30:03 +02:00
2026-02-12 01:06:23 +00:00
2026-01-15 18:39:06 +00:00
2025-12-16 10:48:14 -05:00
2026-02-12 15:00:31 +02:00
2026-02-12 01:06:23 +00:00
2026-02-13 02:53:18 +00:00
2026-02-12 15:46:10 -05:00
2025-10-27 10:13:26 -04:00
2025-11-21 08:28:17 -07:00
2026-02-12 01:06:23 +00:00
2026-02-12 14:27:55 +01:00
2026-02-09 08:56:21 -05:00
2026-02-12 23:57:45 +00:00
2025-10-17 18:58:14 +00:00
2026-01-26 13:49:26 +00:00
2026-02-12 00:28:17 +00:00
2025-10-17 18:58:14 +00:00
2025-10-17 18:58:14 +00:00
2025-10-17 18:58:14 +00:00
2026-01-29 16:33:38 -03:00
2025-11-03 19:25:15 +00:00
2026-02-05 20:10:02 +00:00
2026-02-04 17:54:11 -05:00
2026-01-04 23:28:18 +00:00
2026-01-28 00:19:13 -03:00
2025-11-24 13:34:04 +01:00
2026-02-12 12:33:51 +00:00
2026-02-12 16:30:47 +00:00
2026-02-12 01:06:23 +00:00
2025-11-07 11:36:05 +00:00
2026-01-28 16:36:44 -08:00
2026-01-30 21:26:13 +00:00
2026-02-12 09:59:59 +00:00
2026-02-08 20:10:52 -05:00
2026-02-04 17:37:13 +00:00
2025-10-17 18:58:14 +00:00
2026-01-15 18:10:21 +00:00
2025-12-01 20:52:57 -07:00
2026-01-28 17:05:34 +01:00
2026-02-12 09:54:33 -03:00
2026-02-02 16:56:25 +00:00
2026-02-12 15:46:10 -05:00
2026-02-02 13:30:07 +01:00
2025-10-17 18:58:14 +00:00
2025-10-17 18:58:14 +00:00
2026-02-12 00:28:17 +00:00
2025-10-17 18:58:14 +00:00
2026-01-25 21:35:32 +01:00
2026-02-12 12:33:51 +00:00
2025-11-07 22:27:14 +00:00
2025-10-17 18:58:14 +00:00
2025-10-17 18:58:14 +00:00
2026-01-23 20:50:50 +00:00
2025-12-17 11:53:48 -07:00
2026-02-13 00:40:45 +00:00
2026-02-12 04:50:54 +00:00
2026-01-29 15:31:13 +00:00
2025-12-08 16:38:34 +01:00
2026-02-13 02:55:42 -05:00
2026-02-12 15:46:10 -05:00
2025-12-13 11:06:30 -05:00
2026-02-13 13:47:28 +02:00
2026-02-13 02:55:42 -05:00
2025-11-07 22:27:14 +00:00
2026-02-11 11:24:04 +00:00
2025-12-05 17:23:06 +00:00