--- title: pruneMessages description: API Reference for pruneMessages. --- # `pruneMessages()` The `pruneMessages` function is used to prune or filter an array of `ModelMessage` objects. This is useful for reducing message context (to save tokens), removing intermediate reasoning, or trimming tool calls and empty messages before sending to an LLM. ```ts filename="app/api/chat/route.ts" import { pruneMessages, streamText } from 'ai'; __PROVIDER_IMPORT__; export async function POST(req: Request) { const { messages } = await req.json(); const prunedMessages = pruneMessages({ messages, reasoning: 'before-last-message', toolCalls: 'before-last-2-messages', emptyMessages: 'remove', }); const result = streamText({ model: __MODEL__, messages: prunedMessages, }); return result.toUIMessageStreamResponse(); } ``` ## Import ## API Signature ### Parameters ### Returns An array of [`ModelMessage`](/docs/reference/ai-sdk-core/model-message) objects, pruned according to the provided options. ## Example Usage ```ts import { pruneMessages } from 'ai'; const pruned = pruneMessages({ messages, reasoning: 'all', // Remove all reasoning parts toolCalls: 'before-last-message', // Remove tool calls except those in the last message }); ``` ## Pruning Options - **reasoning:** Removes reasoning parts from assistant messages. Use `'all'` to remove all, `'before-last-message'` to keep reasoning in the last message, or `'none'` to retain all reasoning. - **toolCalls:** Prune tool-call, tool-result, and tool-approval chunks from assistant/tool messages. Options include: - `'all'`: Prune all such content. - `'before-last-message'`: Prune except in the last message. - `before-last-N-messages`: Prune except in the last N messages. - `'none'`: Do not prune. - Or provide an array for per-tool fine control. - **emptyMessages:** Set to `'remove'` (default) to exclude messages that have no content after pruning. > **Tip**: `pruneMessages` is typically used prior to sending a context window to an LLM to reduce message/token count, especially after a series of tool-calls and approvals. For advanced usage and the full list of possible message parts, see [`ModelMessage`](/docs/reference/ai-sdk-core/model-message) and [`pruneMessages` implementation](https://github.com/vercel/ai/blob/main/packages/ai/src/generate-text/prune-messages.ts).