From 5c4fe9ca5832de483a88a956092144bf9c57f7ba Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Sun, 21 Jun 2026 00:08:37 -0400 Subject: [PATCH] fix(mistral): strip reasoning_content from assistant input messages When an assistant message includes `reasoning_content` (added by litellm when parsing a Mistral thinking response), and that message is replayed in subsequent requests, Mistral rejects the whole request with 422 `extra_forbidden` because `reasoning_content` is not a valid input field. Fix: in `_transform_messages`, pop `reasoning_content` from assistant messages before forwarding to the Mistral API. This is consistent with the existing `strip_none_values_from_message` call that already prevents similar `extra_forbidden` errors. Fixes #30835. --- litellm/llms/mistral/chat/transformation.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/litellm/llms/mistral/chat/transformation.py b/litellm/llms/mistral/chat/transformation.py index f1ad3708236..ec5caaacafb 100644 --- a/litellm/llms/mistral/chat/transformation.py +++ b/litellm/llms/mistral/chat/transformation.py @@ -268,6 +268,9 @@ class MistralConfig(OpenAIGPTConfig): m = MistralConfig._handle_tool_call_message(m) if MistralConfig._is_empty_assistant_message(m): continue + # Strip reasoning_content from assistant messages — Mistral rejects it as input (extra_forbidden) + if m.get("role") == "assistant": + m.pop("reasoning_content", None) m = strip_none_values_from_message(m) # prevents 'extra_forbidden' error new_messages.append(m)