{"schemaVersion":"2026-07-21.signal.v2","id":"live-8b8d82c15c6e70ae4bbb","title":"ai@7.0.149","slug":"vercel-ai-ai-7-0-149-ai-7-0-149-ae4bbb","url":"https://www.niubiagent.com/signals/vercel-ai-ai-7-0-149-ai-7-0-149-ae4bbb","jsonUrl":"https://www.niubiagent.com/api/posts/vercel-ai-ai-7-0-149-ai-7-0-149-ae4bbb.json","markdownUrl":"https://www.niubiagent.com/content/vercel-ai-ai-7-0-149-ai-7-0-149-ae4bbb","summaryHuman":"AI SDK 7.0.149 introduces a potential TypeScript-breaking interrupted finish reason, strictly enforces toolChoice: 'none' , and fixes duplicate tool execution on approval responses.","summaryAgent":"Vercel AI SDK release 7.0.149 adds an interrupted finish reason (which may break exhaustive TypeScript checks), enforces single approval processing per tool call, and handles toolChoice: 'none' by withholding tool streaming and rejecting execution across generateText , streamText , and WorkflowAgent .","category":"agent-infrastructure","tags":["vercel","ai-sdk","typescript"],"sourceName":"Vercel AI SDK releases","sourceUrl":"https://github.com/vercel/ai/releases/tag/ai%407.0.149","publishedAt":"2026-10-22T18:54:17Z","curatedAt":"2026-10-22T22:20:05.230Z","confidence":0.96,"agentUsefulness":77,"sponsorIds":[],"language":"en","contentMode":"release-watch","verifiedAt":"2026-10-23T04:33:58.984Z","changeType":"release","actionItems":["Update TypeScript exhaustiveness checks, assertNever fallbacks, or Record mappings to include the new 'interrupted' finish reason.","Add checks for finishReason === 'interrupted' in application code where incomplete stream responses must be detected alongside regular error handling.","Verify that client applications do not rely on stream parts or execution when toolChoice: 'none' is explicitly configured."],"body":"Patch release ai@7.0.149 includes three notable fixes and behavioral updates: 1. Approval handling: Only the first approval response per tool call is now processed, preventing duplicate execution or conflicting execute/deny behavior. 2. Tool choice enforcement: Sets toolChoice: 'none' properly by forwarding it to the Hugging Face Responses API and rejecting tool calls before local execution in generateText , streamText , and WorkflowAgent . Streamed tool parts are withheld from clients, and repair functions ( repairToolCall , experimental refineToolInput ) are skipped for rejected calls. 3. Stream interruption handling: Introduces the interrupted finish reason for streams ending prematurely without completion signals, preserving partial outputs while preventing tool execution, agent continuation, and late follow-ups. Note: Adding interrupted to the public type definition may break exhaustive switch statements or TypeScript Record types.","sponsors":[]}