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.

  1. 4.0.90: authToken type changed 1 breaking, 0 deprecations
  2. 4.0.97: AnthropicLanguageModelOptions and AnthropicProviderOptions members changed 2 breaking, 0 deprecations
  3. 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 released Published Updated

@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

  • authToken is declared with another type. The 4.0.90 declarations for AnthropicProviderSettings differ from 4.0.89 on this one member. The changelog describes synchronous and asynchronous authToken providers, 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-utils to 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.

ChangeSeverityDetectsFixVerified by
Changed the members of AnthropicProviderSettings
ai-sdk-anthropic-npm-4.0.90-anthropic-provider-settings-members-changed
Breaking
medium confidence
  • AnthropicProviderSettings imported from @ai-sdk/anthropic, named in any type position
Patch, only when you name a model providerYour 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 released Published

@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

  • includePings is a new optional member. The changelog says Anthropic emits typed streaming heartbeat parts only when includePings is set to true, and that it is disabled by default. Code that never sets it keeps working as before.
  • serviceTier is declared with another type. The changelog describes added serviceTier support for standard and priority admission. Code that sets or reads serviceTier on these types should be checked against the 4.0.97 declarations.
  • Two names, one declaration. The 4.0.97 declarations export AnthropicProviderOptions as an alias of AnthropicLanguageModelOptions, 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.

ChangeSeverityDetectsFixVerified by
Changed the members of AnthropicLanguageModelOptions
ai-sdk-anthropic-npm-4.0.97-anthropic-language-model-options-members-changed
Breaking
medium confidence
  • AnthropicLanguageModelOptions imported from @ai-sdk/anthropic, named in any type position
Patch, only when you name a model providerYour typecheck and tests
Changed the members of AnthropicProviderOptions
ai-sdk-anthropic-npm-4.0.97-anthropic-provider-options-members-changed
Breaking
medium confidence
  • AnthropicProviderOptions imported from @ai-sdk/anthropic, named in any type position
Patch, only when you name a model providerYour 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 released Published

@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

  • toolChanges has a new type. The changelog says 4.0.98 supports adding tools by value in mid-conversation toolChanges. In 4.0.97 an addition was a tool_addition entry that carried only a toolName. 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_removal entry still carries a toolName in 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 AnthropicSystemMessageProviderOptions imported 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.

ChangeSeverityDetectsFixVerified by
Changed the members of AnthropicSystemMessageProviderOptions
ai-sdk-anthropic-npm-4.0.98-anthropic-system-message-provider-options-members-changed
Breaking
medium confidence
  • AnthropicSystemMessageProviderOptions imported from @ai-sdk/anthropic, named in any type position
Patch, only when you name a model providerYour 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 scan

Then 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.

Every @ai-sdk/anthropic release page is listed on one page.