AI SDK 6 Just Launched and Developers Actually Like It


Someone on Twitter gave AI SDK 6 a "6 out of 10" rating. Not because it's bad. Because it's the sixth version. That's the kind of dad joke you make when a framework just dropped its biggest update of the year and you're actually excited about it.
Vercel launched AI SDK 6 on December 22, 2025. It hit 20 million monthly downloads before this release. Companies like Thomson Reuters rebuilt their entire AI assistant with just 3 developers in 2 months using it. Now they're migrating thousands of lines of code from 10 different providers into one system.
The update brings agents as a first-class thing. Tool execution approval. Full MCP support. DevTools for debugging. And people are actually talking about it without calling it revolutionary.
What agents actually do now
You used to pass the same config object everywhere. Model settings here. Tools there. System prompt over there. If you wanted the same agent in a chat UI and a background job, you copied code or built your own wrapper.
AI SDK 6 gives you an Agent abstraction. Define it once. Use it everywhere.
The ToolLoopAgent class handles the whole loop. It calls the LLM. Executes tools. Adds results back. Repeats up to 20 times by default. You don't write that anymore.
I spent way too many hours building this exact loop in v5.
Here's what broke every time. The agent would call a tool. i'd add the result back wrong. Context would drift. The next call would fail. Debugging meant console.log between every step.
Now you do this: create an agent with a model, instructions, and tools. Call generate with a prompt. Done.
The approval thing everyone wanted
Tools that delete files or charge credit cards need human approval. You can't just let an LLM decide to run rm -rf.
Before this, you built custom approval flows. Tracked pending tool calls. Built UI for approve/deny buttons. Connected it to your database. It was annoying.
AI SDK 6 adds one flag: needsApproval.
Set it to true and the tool pauses before execution. Or pass a function that decides based on input. Maybe ls commands auto-approve but destructive ones don't.
The UI part is straightforward with useChat. Check if the tool state is approval-requested. Show buttons. Call addToolApprovalResponse with approved true or false.
Matt Pocock called this "something i've wanted for so long". He's not alone. Reddit threads from before the launch show people building this manually.
One developer wrote they created custom UI, API routes, database tables, and dashboards just to collect thumbs up/down feedback. That's not even tool approval. That's just feedback.
Why MCP matters
MCP stands for Model Context Protocol. It's a way for AI systems to connect to data sources and tools.
v6 adds OAuth authentication, resources, prompts, and elicitation. You can connect to remote MCP servers over HTTP now.
OAuth was a pain before. PKCE challenges. Token refresh. Dynamic client registration. Retry logic when tokens expire mid-session.
The SDK handles it now. You configure an auth provider with redirect URLs and client metadata. It manages tokens and credentials.
Resources let MCP servers expose files, database records, API responses. Your app discovers and reads them. Prompts are reusable templates from the server. Fill in parameters at runtime.
Elicitation is when the server needs user input mid-operation. A confirmation or a choice. Your app gathers it and sends it back.
Clay used this to build Claygent, their AI web research agent. It scrapes public data and connects to first-party sources via MCP servers.
Debugging without losing your mind
Multi-step agents are hard to debug. Change one thing early. The whole trajectory shifts.
You log every step manually. Piece together what happened. Wonder why the agent took a completely different path this time.
DevTools gives you full visibility into every LLM call.
Wrap your model with devToolsMiddleware. Run npx @ai-sdk/devtools. Open localhost:4983.
You see input parameters, prompts, output content, tool calls, token usage, timing, and raw provider data.
It's not fancy. It's just there. Every call tracked. No manual logging.
Small things that aren't small
Strict mode is now opt-in per tool. Some providers only support subsets of JSON schema in strict mode. If one tool has an incompatible schema, the whole request used to fail.
Now you use strict mode for compatible tools and regular mode for others. Same call.
Input examples show the model concrete instances of correct input. Complex schemas with nested objects are hard to describe. Examples clarify what you actually want.
toModelOutput separates what your tool returns from what gets sent to the model. File contents or search results can be thousands of tokens. Or you're encoding images as base64 strings.
Return complete data from execute. Use toModelOutput to control what tokens go back.
The reranking piece
Reranking reorders search results based on relevance to a specific query. You don't just retrieve everything. You focus on what matters.
The new rerank function takes documents and a query. Returns them ranked by relevance.
It works with structured documents too. Emails, database records, whatever.
Only Cohere, Amazon Bedrock, and Together.ai support it right now. But it's there if you need it.
Provider-specific tools
Anthropic added memory tools, tool search with regex or natural language, and code execution in a sandbox. They also support programmatic tool calling. Claude can call your tools from a code execution environment.
This keeps intermediate results out of context. Token usage drops. Cost drops.
OpenAI has shell tools, apply patch tools for file operations, and MCP tools. Google added Google Maps grounding, Vertex RAG Store retrieval, and file search.
xAI added web search with domain filtering, X search with handle filtering, code execution, view image, and view X video.
These aren't universal. They're platform-specific. The SDK just gives you access.
That tangent about naming things
Thomson Reuters called their AI assistant CoCounsel. It's for attorneys, accountants, and audit teams. 1,300 accounting firms use it now.
i always wonder who comes up with these names. CoCounsel sounds like a lawyer thing. But it also sounds like someone said "co-counsel" out loud and thought it was clever.
Claygent is better. Clay plus agent. Simple.
My own project names are worse. i once called a side project "TaskMaster3000" because i thought it was funny. It wasn't. i changed it three days later.
Naming things is hard. Naming AI agents is somehow harder.
Who shouldn't bother
If you're not using AI SDK at all, v6 won't pull you in. It's an upgrade for people already here.
Most people don't need agents with 20-step tool loops. If your chatbot answers FAQs, this is overkill.
If you're happy with v5, there's no rush. The migration is smooth. Minimal breaking changes. An automated codemod exists.
But if you've been building custom approval flows or debugging agent loops manually, this update saves you time.
Lars Grammel, who works on the SDK, called it "a major feature release" with minimal breaking changes. The version bump is about the internal language model spec, not a redesign.
If you're just getting started with AI stuff, the SDK is still a good place. TypeScript-first. Works with Next.js, React, Svelte, Vue, Node.js.
But don't expect magic. It's a toolkit. You still write the logic.
Final thought
Someone gave this a 6 out of 10 as a joke. But he also said he's updating his entire course for it.
That's the real signal. Not the hype. The fact that people are updating their teaching materials and migrating production code without complaining much.
Vercel's release had 21 replies, 61 reposts, 528 likes on X. Not viral. Just solid traction.
i think about the Reddit developer who built feedback collection manually before this. Wondering if it was worth solving. Turns out it was.
Enjoyed this article? Check out more posts.
View All Posts