One section per release, oldest first. Start below the version you have and read down to the one you are moving to. Each section lists what breaks, the compiler errors it raises and what Emendant patches.
- 4.0.90: authToken type changed 1 breaking, 0 deprecations
- 4.0.97: AnthropicLanguageModelOptions and AnthropicProviderOptions members changed 2 breaking, 0 deprecations
- 4.0.98: AnthropicSystemMessageProviderOptions toolChanges type changed 1 breaking, 0 deprecations
@ai-sdk/anthropic 4.0.90: authToken type changed
@ai-sdk/anthropic 4.0.90 declares authToken on AnthropicProviderSettings with a different type than 4.0.89. The changelog says the option now supports synchronous and asynchronous token providers, so applications can use refreshable credentials. You are affected if your code names AnthropicProviderSettings and supplies or reads authToken.
What changed
authTokenis declared with another type. The 4.0.90 declarations forAnthropicProviderSettingsdiffer from 4.0.89 on this one member. The changelog describes synchronous and asynchronousauthTokenproviders, with tokens resolved before each request. It says existing authentication headers and beta-header behavior are preserved. The feed carries this as the single change in the release, and it is breaking.- A dependency bump is not covered. The release also updates
@ai-sdk/provider-utilsto 5.0.70. Emendant reports nothing for that update.
Before and after
This release has no deterministic rewrite. The scan reports a type position that names the type imported from @ai-sdk/anthropic:
import type { AnthropicProviderSettings } from '@ai-sdk/anthropic';The after shape depends on what your code does with authToken. Where the code passes a value to it or reads it back, bring that code into line with the 4.0.90 declaration for the member. Where it only passes the settings along, no edit may be needed.
Migration guidance and its limits
The finding carries an assisted fix. emendant fix writes a patch only when you name a model provider, on the command line or in your Emendant configuration. Without one, each finding is reported with its guidance and nothing is changed. Nothing in this release is report only. Run emendant scan first to see which files are named, then emendant fix for the patches.
Each patch is checked with your typecheck and tests. Read the patch header to see which checks passed, and review every edit that touches authToken. The patch changes only the member that differs and leaves the rest of the settings alone.
A scan hit means the file names the type, not that the changed member reaches it. Code that only builds or forwards AnthropicProviderSettings may need no edit, and a patch may not be available there. If the release declares no clear replacement for what your code supplies, review the surrounding code yourself.
A clean scan does not cover everything. An object literal passed straight to createAnthropic that never names the type is not reported, and neither is the type reached through your own re-export or imported from another module. This page covers the one change the feed carries for 4.0.90 and nothing else in the release.
What Emendant detects, fixes and verifies
1 change in @ai-sdk/anthropic 4.0.90. 0 automatic fixes, 1 fixes requiring a model provider you choose, 0 report only. Each patch states which checks passed. Understand patch evidence.
| Change | Severity | Detects | Fix | Verified by |
|---|---|---|---|---|
Changed the members of AnthropicProviderSettingsai-sdk-anthropic-npm-4.0.90-anthropic-provider-settings-members-changed | Breaking medium confidence |
| Patch, only when you name a model provider | Your typecheck and tests |
emendant explain <change-id> prints any row's entry, guidance and sources at the terminal.
Requires emendant@0.3.0 or later. Feed entry feed/npm/@ai-sdk/anthropic/4.0.90.json, snapshot 2026-10-27.1.
Primary sources
@ai-sdk/anthropic 4.0.97: AnthropicLanguageModelOptions and AnthropicProviderOptions members changed
@ai-sdk/anthropic 4.0.97 changes the members declared on AnthropicLanguageModelOptions and AnthropicProviderOptions. It adds an optional includePings member and declares serviceTier with a different type than 4.0.96. You are affected if your code names either type and supplies or reads one of those two members.
What changed
includePingsis a new optional member. The changelog says Anthropic emits typed streaming heartbeat parts only whenincludePingsis set to true, and that it is disabled by default. Code that never sets it keeps working as before.serviceTieris declared with another type. The changelog describes addedserviceTiersupport forstandardandpriorityadmission. Code that sets or readsserviceTieron these types should be checked against the 4.0.97 declarations.- Two names, one declaration. The 4.0.97 declarations export
AnthropicProviderOptionsas an alias ofAnthropicLanguageModelOptions, so the same members changed under both names. The feed carries them as two breaking changes.
Before and after
This release has no deterministic rewrite. The scan reports a type position that names either type, imported from @ai-sdk/anthropic:
import type { AnthropicLanguageModelOptions } from '@ai-sdk/anthropic';import type { AnthropicProviderOptions } from '@ai-sdk/anthropic';The after shape depends on what your code does with the two members. Where it sets serviceTier, bring the value into line with the type 4.0.97 declares. Where it wants heartbeat parts, set includePings. Where it only passes the options along, no edit may be needed.
Migration guidance and its limits
Both findings carry an assisted fix. emendant fix writes a patch only when you name a model provider, on the command line or in your Emendant configuration. Without one, each finding is reported with its guidance and nothing is changed. Nothing in this release is report only. Run emendant scan first to see which files are named, then emendant fix for the patches.
Each patch is checked with your typecheck and tests. Read the patch header to see which checks passed, and review every edit that touches serviceTier or includePings. The patch changes only the member that differs and leaves the rest of the options alone.
A scan hit means the file names the type, not that a changed member reaches it. Code that only builds or forwards these options may need no edit, and a patch may not be available there. If the release declares no clear replacement for what your code supplies, review the surrounding code yourself.
A clean scan does not cover everything. An object literal that never names either type is not reported, and neither is a type imported from another module or reached through your own re-export. The changelog also says consumers with exhaustive stream-part switches must handle the new ping variant on upgrade. Emendant reports nothing for that, nor for the other changes listed for 4.0.97. This page covers the two member changes the feed carries.
What Emendant detects, fixes and verifies
2 changes in @ai-sdk/anthropic 4.0.97. 0 automatic fixes, 2 fixes requiring a model provider you choose, 0 report only. Each patch states which checks passed. Understand patch evidence.
| Change | Severity | Detects | Fix | Verified by |
|---|---|---|---|---|
Changed the members of AnthropicLanguageModelOptionsai-sdk-anthropic-npm-4.0.97-anthropic-language-model-options-members-changed | Breaking medium confidence |
| Patch, only when you name a model provider | Your typecheck and tests |
Changed the members of AnthropicProviderOptionsai-sdk-anthropic-npm-4.0.97-anthropic-provider-options-members-changed | Breaking medium confidence |
| Patch, only when you name a model provider | Your typecheck and tests |
emendant explain <change-id> prints any row's entry, guidance and sources at the terminal.
Requires emendant@0.3.0 or later. Feed entry feed/npm/@ai-sdk/anthropic/4.0.97.json, snapshot 2026-11-05.1.
Primary sources
@ai-sdk/anthropic 4.0.98: AnthropicSystemMessageProviderOptions toolChanges type changed
@ai-sdk/anthropic 4.0.98 declares toolChanges on AnthropicSystemMessageProviderOptions with a different type than 4.0.97. You are affected if your code names that type and supplies or reads toolChanges on it.
What changed
toolChangeshas a new type. The changelog says 4.0.98 supports adding tools by value in mid-conversationtoolChanges. In 4.0.97 an addition was atool_additionentry that carried only atoolName. The 4.0.98 declarations show additions that carry a tool definition, either a function tool with an input schema or a provider tool with an id and args.- Removals read the same. A
tool_removalentry still carries atoolNamein the 4.0.98 declarations, so code that only removes tools is the least likely to need an edit. - One finding is carried for this release. It is a breaking change with medium confidence, found wherever a type position names
AnthropicSystemMessageProviderOptionsimported from@ai-sdk/anthropic.
Before and after
This release has no deterministic rewrite. The shape change is the point, so here are the two declarations. First, toolChanges in 4.0.97:
toolChanges?: ({ type: "tool_addition"; toolName: string;} | { type: "tool_removal"; toolName: string;})[] | undefined;Then the tail of the 4.0.98 declaration. An addition now carries a tool by value, as one of these two shapes:
type: "function"; name: string; inputSchema: Record<string, unknown>;} | { [x: string]: unknown; type: "provider"; id: string; name: string; args: Record<string, unknown>;};Where your code builds a tool_addition entry from a name alone, bring it into line with the 4.0.98 declaration. Code that only forwards the options, or only builds tool_removal entries, may need no edit.
Migration guidance and its limits
The finding carries an assisted fix. emendant fix writes a patch only when you name a model provider, on the command line or in your Emendant configuration. Without one, the finding is reported with its guidance and nothing is changed. Nothing in this release is report only. Run emendant scan first to see which files name the type, then emendant fix for the patches.
Each patch is checked with your typecheck and tests. Read the patch header to see which checks passed, and review every edit that touches toolChanges. The patch brings the changed member into line with the release and leaves the rest of the options alone.
A scan hit means the file names the type, not that toolChanges reaches it. Code that only passes these options along may need no edit, and a patch may not be available there. If the declarations give no clear replacement for what your code supplies, review the surrounding code yourself.
A clean scan does not prove the upgrade is safe. An object literal that never names the type is not reported, and neither is a type imported from another module or reached through your own re-export. The changelog lists other 4.0.98 changes, including thread support and model catalog refactors. Emendant reports nothing for those. This page covers the one member change the feed carries.
What Emendant detects, fixes and verifies
1 change in @ai-sdk/anthropic 4.0.98. 0 automatic fixes, 1 fixes requiring a model provider you choose, 0 report only. Each patch states which checks passed. Understand patch evidence.
| Change | Severity | Detects | Fix | Verified by |
|---|---|---|---|---|
Changed the members of AnthropicSystemMessageProviderOptionsai-sdk-anthropic-npm-4.0.98-anthropic-system-message-provider-options-members-changed | Breaking medium confidence |
| Patch, only when you name a model provider | Your typecheck and tests |
emendant explain <change-id> prints any row's entry, guidance and sources at the terminal.
Requires emendant@0.3.0 or later. Feed entry feed/npm/@ai-sdk/anthropic/4.0.98.json, snapshot 2026-11-06.1.
Primary sources
Scan your repository
Find affected code without editing your files.
npx emendant scanThen npx emendant fix writes the patches the tables say exist. Run emendant feed update first to get the latest coverage. The getting started guide covers the flags and the patch grades.
Related release pages
Every @ai-sdk/anthropic release page is listed on one page.