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. 0.50.1: what breaks in the client rewrite 6 breaking, 1 deprecation
  2. 0.58.0: citation locations gain a required file_id 3 breaking, 0 deprecations
  3. 0.59.0: tool results can hold search result blocks 1 breaking, 0 deprecations
  4. 0.62.0: documents in tool results, and nullable citations 2 breaking, 0 deprecations
  5. 0.70.0: ClientOptions.apiKey accepts an async function 2 breaking, 0 deprecations
  6. 0.72.1: two output-format helpers leave the package root 2 breaking, 0 deprecations
  7. 0.75.0: server tool use names and tool result content widen 2 breaking, 0 deprecations
  8. 0.76.0: Tool.allowed_callers accepts code_execution_20260120 1 breaking, 0 deprecations
  9. 0.105.0: Tool.allowed_callers accepts code_execution_20260521 1 breaking, 0 deprecations
  10. 0.118.0: MidConversationSystemBlockParam removed 1 breaking, 0 deprecations
  11. 0.119.0: file sources, container params and browser state blocks 7 breaking, 0 deprecations
  12. 0.122.0: resolveSkillVersion is removed 1 breaking, 0 deprecations
  13. 0.132.0: ModelInfo, ModelCapabilities and ThinkingTypes gain required members 3 breaking, 0 deprecations
  14. 0.134.0: SessionMemoryStores no longer declares syncAll 1 breaking, 0 deprecations
  15. 0.135.0: ThinkingTypes newly requires between_tools 1 breaking, 0 deprecations

Anthropic TypeScript SDK 0.50: what breaks in the client rewrite

@anthropic-ai/sdk 0.50.1 released Published

Release 0.50 is the client rewrite, and it changes the package layout more than the API. messages.create does not move. What breaks is the plumbing around it: fileFromPath is gone in all three forms, the fetch shims and src entrypoints no longer resolve, APIClient became BaseAnthropic at a new path, and APIError.headers is a Web Headers instance.

What changed

  • Removed. fileFromPath as a named export of @anthropic-ai/sdk/uploads, of the package root, and as a static method on Anthropic. @anthropic-ai/sdk/shims/web and /shims/node, since the SDK now uses the runtime’s own fetch. @anthropic-ai/sdk/src and /src/index, which editors auto-completed into real code.
  • Replaced. APIClient is gone and so is the bare @anthropic-ai/sdk/core entrypoint. The base class is BaseAnthropic at @anthropic-ai/sdk/client, with the request plumbing and none of the resource properties.
  • Changed type. APIError.headers was a plain record. Subscripting it now returns undefined at runtime.
  • Moved, old path kept. @anthropic-ai/sdk/error, /pagination, /resource, /streaming and /uploads are under @anthropic-ai/sdk/core/*, with deprecated re-exports at the old paths. Twelve internal names /uploads exported went with the split; Uploadable and toFile stayed.

Before and after

The core module move is what Emendant rewrites:

import { APIError } from '@anthropic-ai/sdk/error';
import { Page } from '@anthropic-ai/sdk/pagination';
import { APIResource } from '@anthropic-ai/sdk/resource';
import { Stream } from '@anthropic-ai/sdk/streaming';
import { toFile } from '@anthropic-ai/sdk/uploads';

After npx emendant fix, each specifier gains core and the import clauses are untouched, because the move kept every name:

import { APIError } from '@anthropic-ai/sdk/core/error';
import { Page } from '@anthropic-ai/sdk/core/pagination';
import { APIResource } from '@anthropic-ai/sdk/core/resource';
import { Stream } from '@anthropic-ai/sdk/core/streaming';
import { toFile } from '@anthropic-ai/sdk/core/uploads';

@anthropic-ai/sdk/src becomes @anthropic-ai/sdk the same way. fileFromPath is guidance rather than a patch, because the replacement is not a promise:

const upload = await fileFromPath('data/transcript.txt');

becomes

const upload = fs.createReadStream('data/transcript.txt');

Migration guidance and its limits

Apply the two deterministic patches, the core module rewrite and the src rewrite. The src rewrite covers only the two specifiers that mean the package root; a deeper @anthropic-ai/sdk/src/... path is reported by nothing.

The four assisted changes need a model provider named on the command line or in emendant.json. fileFromPath and the shims are small edits. APIClient is two edits, the name and the module, and a subclass that reached for this.messages needs Anthropic from the root rather than BaseAnthropic, so read that diff.

APIError.headers is reported at medium confidence, because the receiver type cannot be resolved from imports alone. Confirm it, then replace err.headers['request-id'] with err.headers.get('request-id').

The internal upload helpers are report only. The core module move is not urgent, since the old paths resolve. If removing a shim import produces type errors about Request or Headers, the fix is in tsconfig.json and your runtime’s @types package, per the migration guide.

What Emendant detects, fixes and verifies

7 changes in @anthropic-ai/sdk 0.50.1. 2 automatic fixes, 4 fixes requiring a model provider you choose, 1 report only. Each patch states which checks passed. Understand patch evidence.

ChangeSeverityDetectsFixVerified by
Public core modules moved under @anthropic-ai/sdk/core
anthropic-ai-sdk-npm-0.50.1-core-module-paths
Deprecation
  • any import of @anthropic-ai/sdk/error
  • any import of @anthropic-ai/sdk/pagination
  • any import of @anthropic-ai/sdk/resource
  • any import of @anthropic-ai/sdk/streaming
  • any import of @anthropic-ai/sdk/uploads
Patch, written by the replace-module-path transformYour typecheck and tests
APIClient base class replaced by BaseAnthropic
anthropic-ai-sdk-npm-0.50.1-apiclient-removed
Breaking
  • APIClient imported from @anthropic-ai/sdk/core
Patch, only when you name a model providerYour typecheck and tests
fileFromPath helper removed
anthropic-ai-sdk-npm-0.50.1-filefrompath-removed
error TS2614: Module '"@anthropic-ai/sdk"' has no exported member 'fileFromPath'. Did you mean to use 'import fileFromPath from "@anthropic-ai/sdk"' instead?
error TS2305: Module '"@anthropic-ai/sdk/uploads"' has no exported member 'fileFromPath'.
error TS2339: Property 'fileFromPath' does not exist on type 'typeof Anthropic'.
Breaking
  • fileFromPath imported from @anthropic-ai/sdk/uploads
  • fileFromPath imported from @anthropic-ai/sdk
  • calls to fileFromPath imported from @anthropic-ai/sdk/uploads
  • calls to fileFromPath imported from @anthropic-ai/sdk
  • .fileFromPath() on the @anthropic-ai/sdk namespace
Patch, only when you name a model providerYour typecheck and tests
Internal upload helpers dropped from the uploads entrypoint
anthropic-ai-sdk-npm-0.50.1-uploads-internal-exports-removed
error TS2305: Module '"@anthropic-ai/sdk/uploads"' has no exported member 'createForm'.
error TS2305: Module '"@anthropic-ai/sdk/uploads"' has no exported member 'isBlobLike'.
error TS2305: Module '"@anthropic-ai/sdk/uploads"' has no exported member 'FileLike'.
Breaking
  • BlobPart imported from @anthropic-ai/sdk/uploads
  • BlobLike imported from @anthropic-ai/sdk/uploads
  • FileLike imported from @anthropic-ai/sdk/uploads
  • ResponseLike imported from @anthropic-ai/sdk/uploads
  • isResponseLike imported from @anthropic-ai/sdk/uploads
  • isFileLike imported from @anthropic-ai/sdk/uploads
  • isBlobLike imported from @anthropic-ai/sdk/uploads
  • isUploadable imported from @anthropic-ai/sdk/uploads
  • isMultipartBody imported from @anthropic-ai/sdk/uploads
  • maybeMultipartFormRequestOptions imported from @anthropic-ai/sdk/uploads
  • multipartFormRequestOptions imported from @anthropic-ai/sdk/uploads
  • createForm imported from @anthropic-ai/sdk/uploads
Report onlyNot applicable
The shims entrypoints were removed
anthropic-ai-sdk-npm-0.50.1-shims-removed
Breaking
  • any import of @anthropic-ai/sdk/shims/web
  • any import of @anthropic-ai/sdk/shims/node
Patch, only when you name a model providerYour typecheck and tests
The @anthropic-ai/sdk/src entrypoints were removed
anthropic-ai-sdk-npm-0.50.1-src-directory-removed
Breaking
  • any import of @anthropic-ai/sdk/src
  • any import of @anthropic-ai/sdk/src/index
Patch, written by the replace-module-path transformYour typecheck and tests
APIError.headers is now a Web Headers instance
anthropic-ai-sdk-npm-0.50.1-apierror-headers-web
Breaking
medium confidence
  • .headers indexed on a value from @anthropic-ai/sdk
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.

The error TS lines are what TypeScript 5.9.3 printed when code that compiled against @anthropic-ai/sdk 0.41.0 was compiled against 0.50.1. A row without one is a change the compiler does not report, such as a deprecation or a change in behaviour.

Requires emendant@0.1.0 or later. Feed entry feed/npm/@anthropic-ai/sdk/0.50.1.json, snapshot 2026-08-28.1.

Primary sources

Anthropic TypeScript SDK 0.58.0: citation locations gain a required file_id

@anthropic-ai/sdk 0.58.0 released Published Updated

@anthropic-ai/sdk@0.58.0 adds a file_id field to the three citation location types a response can carry: character, content block and page locations. The field is required on the response types, typed string | null. Reading a citation is unaffected. Code that builds one of these objects itself, most often a test fixture or a mock of a response, must now include file_id.

What changed

  • CitationCharLocation, CitationContentBlockLocation and CitationPageLocation require file_id. Each interface in resources/messages/messages.d.ts now declares file_id: string | null beside document_index and document_title. The matching request types, such as CitationCharLocationParam, do not gain it, so a citation you send back is unaffected.

Before and after

The affected type is imported from this module:

import type { CitationCharLocation } from '@anthropic-ai/sdk/resources';

The interface as @anthropic-ai/sdk@0.58.0 declares it:

export interface CitationCharLocation {
cited_text: string;
document_index: number;
document_title: string | null;
end_char_index: number;
file_id: string | null;
start_char_index: number;
type: 'char_location';
}

In 0.57.0 the same interface had every field but file_id. An object literal typed as one of the three now needs file_id: null where the cited document was not an uploaded file.

Migration guidance and its limits

All three findings carry an assisted fix at medium confidence. Name a model provider on the command line or in emendant.json and emendant fix tries them; without one they are reported with their guidance and nothing is sent anywhere. Review whether the changed members affect your code before applying a patch. Emendant checks each patch in a copy of your repository at 0.58.0 and withholds patches that fail. Read the patch header to see which checks passed.

Add file_id to each citation location your code constructs. Code that converts a response citation into a request citation param should drop it, because the param types do not declare it.

The scan reports the names in a type position when they are imported from @anthropic-ai/sdk/resources. The same types reached through @anthropic-ai/sdk/resources/messages, or as Anthropic.CitationCharLocation on the default export’s namespace, are not findings. The release’s other changes, a new model id, a text editor tool version and the removal of older deprecated models, are not covered. A clean scan says no file names these three types from that module, and nothing more about the release.

What Emendant detects, fixes and verifies

3 changes in @anthropic-ai/sdk 0.58.0. 0 automatic fixes, 3 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 CitationCharLocation
anthropic-ai-sdk-npm-0.58.0-resources-citation-char-location-members-changed
Breaking
medium confidence
  • CitationCharLocation imported from @anthropic-ai/sdk/resources, named in any type position
Patch, only when you name a model providerYour typecheck and tests
Changed the members of CitationContentBlockLocation
anthropic-ai-sdk-npm-0.58.0-resources-citation-content-block-location-members-changed
Breaking
medium confidence
  • CitationContentBlockLocation imported from @anthropic-ai/sdk/resources, named in any type position
Patch, only when you name a model providerYour typecheck and tests
Changed the members of CitationPageLocation
anthropic-ai-sdk-npm-0.58.0-resources-citation-page-location-members-changed
Breaking
medium confidence
  • CitationPageLocation imported from @anthropic-ai/sdk/resources, 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/@anthropic-ai/sdk/0.58.0.json, snapshot 2026-09-23.4.

Primary sources

Anthropic TypeScript SDK 0.59.0: tool results can hold search result blocks

@anthropic-ai/sdk 0.59.0 released Published Updated

@anthropic-ai/sdk@0.59.0 adds search result content blocks to the Messages API, and a tool result can now return them. The content array of ToolResultBlockParam accepts SearchResultBlockParam beside text and image blocks. Code that sends tool results keeps compiling. Code that reads a ToolResultBlockParam back and handles each block type in turn is what can break, because its list of cases is now incomplete.

What changed

  • ToolResultBlockParam.content admits a third block type. The array element was TextBlockParam | ImageBlockParam; in 0.59.0 it is TextBlockParam | ImageBlockParam | SearchResultBlockParam. The changelog files it under “search result content blocks.” Nothing is removed, and a string is still accepted in place of the array.

Before and after

The affected type is imported from this module:

import type { ToolResultBlockParam } from '@anthropic-ai/sdk/resources';

The member as @anthropic-ai/sdk@0.58.0 declared it:

content?: string | Array<TextBlockParam | ImageBlockParam>;

And as 0.59.0 declares it:

content?: string | Array<TextBlockParam | ImageBlockParam | SearchResultBlockParam>;

Migration guidance and its limits

The finding carries an assisted fix at medium confidence. Name a model provider on the command line or in emendant.json and emendant fix tries it; without one it is reported with its guidance and nothing is sent anywhere. Review whether the changed members affect your code before applying a patch. A site that only builds tool results may need no edit. Emendant checks each patch in a copy of your repository at 0.59.0 and withholds patches that fail. Read the patch header to see which checks passed.

Look for code that walks content and switches on each block’s type, particularly one ending in an exhaustiveness check against never, or that passes the array to a function typed for text and image blocks only. Add a search_result branch there, or narrow before the call.

The scan reports the name in a type position when it is imported from @anthropic-ai/sdk/resources. The type reached through @anthropic-ai/sdk/resources/messages, or on the default export’s namespace, is not a finding. The widened citation union on streaming CitationsDelta is not covered. A clean scan says no file names ToolResultBlockParam from that module, and nothing more about the release.

What Emendant detects, fixes and verifies

1 change in @anthropic-ai/sdk 0.59.0. 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 ToolResultBlockParam
anthropic-ai-sdk-npm-0.59.0-resources-tool-result-block-param-members-changed
Breaking
medium confidence
  • ToolResultBlockParam imported from @anthropic-ai/sdk/resources, 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/@anthropic-ai/sdk/0.59.0.json, snapshot 2026-09-23.4.

Primary sources

Anthropic TypeScript SDK 0.62.0: documents in tool results, and nullable citations

@anthropic-ai/sdk 0.62.0 released Published Updated

@anthropic-ai/sdk@0.62.0 adds support for documents in tool results. Two request types widen with it: ToolResultBlockParam.content accepts DocumentBlockParam, and DocumentBlockParam.citations accepts null. Code that sends these params keeps compiling. Code that reads them back, and assumes it has seen every block type or that a present citations is an object, is what can break.

What changed

  • Tool results can contain documents. The array element of ToolResultBlockParam.content was TextBlockParam | ImageBlockParam | SearchResultBlockParam; in 0.62.0 it adds DocumentBlockParam. The changelog lists it as “adds support for Documents in tool results.”
  • DocumentBlockParam.citations may be null. It was citations?: CitationsConfigParam, and is now citations?: CitationsConfigParam | null. Reading doc.citations.enabled after an undefined check alone no longer type checks under strict.

Before and after

The affected type is imported from this module:

import type { ToolResultBlockParam } from '@anthropic-ai/sdk/resources';

The two members as @anthropic-ai/sdk@0.61.0 declared them:

content?: string | Array<TextBlockParam | ImageBlockParam | SearchResultBlockParam>;
citations?: CitationsConfigParam;

And as 0.62.0 declares them:

content?: string | Array<TextBlockParam | ImageBlockParam | SearchResultBlockParam | DocumentBlockParam>;
citations?: CitationsConfigParam | null;

Migration guidance and its limits

Both findings carry an assisted fix at medium confidence. Name a model provider on the command line or in emendant.json and emendant fix tries them; without one they are reported with their guidance and nothing is sent anywhere. Review whether the changed members affect your code before applying a patch. Sites that only build requests may need no edit. Emendant checks each patch in a copy of your repository at 0.62.0 and withholds patches that fail. Read the patch header to see which checks passed.

Where code walks a tool result’s content by block type, add a document branch. Where it reads citations on a document block, test for null as well as undefined; optional chaining covers both.

The scan reports the two names in a type position when they are imported from @anthropic-ai/sdk/resources. The same types reached through @anthropic-ai/sdk/resources/messages, or on the default export’s namespace, are not findings. The new web_fetch_20250910 tool is not covered. A clean scan says no file names these two types from that module, and nothing more about the release.

What Emendant detects, fixes and verifies

2 changes in @anthropic-ai/sdk 0.62.0. 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 DocumentBlockParam
anthropic-ai-sdk-npm-0.62.0-resources-document-block-param-members-changed
Breaking
medium confidence
  • DocumentBlockParam imported from @anthropic-ai/sdk/resources, named in any type position
Patch, only when you name a model providerYour typecheck and tests
Changed the members of ToolResultBlockParam
anthropic-ai-sdk-npm-0.62.0-resources-tool-result-block-param-members-changed
Breaking
medium confidence
  • ToolResultBlockParam imported from @anthropic-ai/sdk/resources, 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/@anthropic-ai/sdk/0.62.0.json, snapshot 2026-09-23.4.

Primary sources

Anthropic TypeScript SDK 0.70.0: ClientOptions.apiKey accepts an async function

@anthropic-ai/sdk 0.70.0 released Published Updated

@anthropic-ai/sdk@0.70.0 lets a client take its API key from a function, so credentials can be rotated or refreshed at runtime. ClientOptions.apiKey widens from string | null | undefined to include ApiKeySetter, which is () => Promise<string>. Passing a string still works. Code that reads apiKey out of a ClientOptions value and treats it as a string is what breaks.

What changed

  • apiKey may be an ApiKeySetter. The option is now apiKey?: string | ApiKeySetter | null | undefined. Its documentation says the function is called before each request, must resolve to a non-empty string, and has any error it throws wrapped in an AnthropicError with the original as cause. The client’s own apiKey property is still string | null.
  • One type, two import routes. ClientOptions is exported from @anthropic-ai/sdk and from @anthropic-ai/sdk/client, and the feed carries an entry for each, so the table shows the change twice.

Before and after

The affected type is imported from this module:

import type { ClientOptions } from '@anthropic-ai/sdk';

The option as @anthropic-ai/sdk@0.69.0 declared it:

apiKey?: string | null | undefined;

And as 0.70.0 declares it:

export type ApiKeySetter = () => Promise<string>;
apiKey?: string | ApiKeySetter | null | undefined;

Migration guidance and its limits

Both findings carry an assisted fix at medium confidence. Name a model provider on the command line or in emendant.json and emendant fix tries them; without one they are reported with their guidance and nothing is sent anywhere. Review whether the changed members affect your code before applying a patch. Code that only builds options and passes them to the constructor may need no edit. Emendant checks each patch in a copy of your repository at 0.70.0 and withholds patches that fail. Read the patch header to see which checks passed.

Where your code reads options.apiKey, for logging, for a second client or for a header of its own, narrow it first: typeof options.apiKey === 'function' means the key is only available by awaiting the call. If you wrap ClientOptions in a type that requires a string key, that wrapper now rejects the function form.

The scan reports the name in a type position when it is imported from either module. Options written inline in new Anthropic({ ... }) are not findings. The Foundry SDK the changelog announces for this release is not covered. A clean scan says no file names ClientOptions from these two modules, and nothing more about the release.

What Emendant detects, fixes and verifies

2 changes in @anthropic-ai/sdk 0.70.0. 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 ClientOptions
anthropic-ai-sdk-npm-0.70.0-client-options-members-changed
Breaking
medium confidence
  • ClientOptions imported from @anthropic-ai/sdk, named in any type position
Patch, only when you name a model providerYour typecheck and tests
Changed the members of ClientOptions
anthropic-ai-sdk-npm-0.70.0-client-client-options-members-changed
Breaking
medium confidence
  • ClientOptions imported from @anthropic-ai/sdk/client, 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/@anthropic-ai/sdk/0.70.0.json, snapshot 2026-09-23.4.

Primary sources

Anthropic TypeScript SDK 0.72.1: two output-format helpers leave the package root

@anthropic-ai/sdk 0.72.1 released Published Updated

Release 0.72.1 removes jsonSchemaOutputFormat and zodOutputFormat as named exports of the package root, one day after 0.72.0 added them alongside Structured Outputs support in the Messages API. Anyone who wrote import { zodOutputFormat } from '@anthropic-ai/sdk' against 0.72.0 loses that import at 0.72.1. Neither function moved, changed signature or lost a capability; only the root re-export did.

What changed

  • jsonSchemaOutputFormat no longer resolves from the root. import { jsonSchemaOutputFormat } from '@anthropic-ai/sdk' stops compiling. The function that builds a JSON Schema output format for .parse() and .create() is unchanged.
  • zodOutputFormat no longer resolves from the root. import { zodOutputFormat } from '@anthropic-ai/sdk' stops compiling. The function that builds an output format from a Zod schema is unchanged.

Anthropic’s own changelog files both under Bug Fixes for 0.72.1, as one line: “remove OutputFormat exports from index.ts”. Nothing else in the release touches either helper.

Before and after

Either import, taken straight from the package root, stops resolving:

import { jsonSchemaOutputFormat } from '@anthropic-ai/sdk';
import { zodOutputFormat } from '@anthropic-ai/sdk';
export { jsonSchemaOutputFormat };

Both functions are unchanged and still exported, from the subpath each always lived at internally:

import { jsonSchemaOutputFormat } from '@anthropic-ai/sdk/helpers/json-schema';
import { zodOutputFormat } from '@anthropic-ai/sdk/helpers/zod';

Migration guidance and its limits

Both findings carry an assisted fix. Name a model provider on the command line or in emendant.json and npx emendant fix writes the two patches; without one the findings are reported with their guidance and npx emendant scan is where they surface. The edit is a specifier change rather than a rewrite of the call: repoint the import at @anthropic-ai/sdk/helpers/json-schema or @anthropic-ai/sdk/helpers/zod, and the call site that uses the returned output format is unchanged.

Review both import changes before applying the patches. Emendant checks each patch in a copy of your repository at 0.72.1 and withholds patches that fail. Read the patch header to see which checks passed.

A scan finds the import. It does not find every consequence of that import failing to resolve: a build that only ever ran a bundler’s own module resolution, rather than tsc or your test suite, may not have noticed the root export was gone until you upgrade and it does. Typecheck and run tests after making the change, which is what the feed entry asks verification to cover for both changes.

If your code imported either helper under a local alias, or re-exported it from a module of your own, a text search for the string OutputFormat across your source finds every place the release can affect, since both removed names carry it and nothing else in the package does.

What Emendant detects, fixes and verifies

2 changes in @anthropic-ai/sdk 0.72.1. 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
Removed jsonSchemaOutputFormat
anthropic-ai-sdk-npm-0.72.1-json-schema-output-format-removed
error TS2614: Module '"@anthropic-ai/sdk"' has no exported member 'jsonSchemaOutputFormat'. Did you mean to use 'import jsonSchemaOutputFormat from "@anthropic-ai/sdk"' instead?
Breaking
  • jsonSchemaOutputFormat imported from @anthropic-ai/sdk
Patch, only when you name a model providerYour typecheck and tests
Removed zodOutputFormat
anthropic-ai-sdk-npm-0.72.1-zod-output-format-removed
error TS2614: Module '"@anthropic-ai/sdk"' has no exported member 'zodOutputFormat'. Did you mean to use 'import zodOutputFormat from "@anthropic-ai/sdk"' instead?
Breaking
  • zodOutputFormat imported from @anthropic-ai/sdk
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.

The error TS lines are what TypeScript 5.9.3 printed when code that compiled against @anthropic-ai/sdk 0.72.0 was compiled against 0.72.1. A row without one is a change the compiler does not report, such as a deprecation or a change in behaviour.

Requires emendant@0.1.0 or later. Feed entry feed/npm/@anthropic-ai/sdk/0.72.1.json, snapshot 2026-09-20.1.

Primary sources

Anthropic TypeScript SDK 0.75.0: server tool use names and tool result content widen

@anthropic-ai/sdk 0.75.0 released Published Updated

@anthropic-ai/sdk@0.75.0 releases claude-sonnet-4-6, and its changelog also lists “fix spec errors.” Two request params widen with it. ServerToolUseBlockParam.name was the single literal 'web_search' and is now one of seven server tool names, and ToolResultBlockParam.content accepts a ToolReferenceBlockParam. Code that sends these params keeps compiling. Code that reads them and relies on the old, narrower types is what breaks.

What changed

  • ServerToolUseBlockParam.name names seven tools. It is now 'web_search' | 'web_fetch' | 'code_execution' | 'bash_code_execution' | 'text_editor_code_execution' | 'tool_search_tool_regex' | 'tool_search_tool_bm25'. The param also gains an optional caller, which says whether the tool was called directly or from code execution.
  • Tool results can hold tool references. The array element of ToolResultBlockParam.content adds ToolReferenceBlockParam to text, image, document and search result blocks.

Before and after

The affected type is imported from this module:

import type { ServerToolUseBlockParam } from '@anthropic-ai/sdk/resources';

The member as @anthropic-ai/sdk@0.74.0 declared it:

name: 'web_search';

And as 0.75.0 declares it:

name: 'web_search' | 'web_fetch' | 'code_execution' | 'bash_code_execution' | 'text_editor_code_execution' | 'tool_search_tool_regex' | 'tool_search_tool_bm25';

Migration guidance and its limits

Both findings carry an assisted fix at medium confidence. Name a model provider on the command line or in emendant.json and emendant fix tries them; without one they are reported with their guidance and nothing is sent anywhere. Review whether the changed members affect your code before applying a patch. Sites that only build requests may need no edit. Emendant checks each patch in a copy of your repository at 0.75.0 and withholds patches that fail. Read the patch header to see which checks passed.

Check code that assumed a server tool use was always a web search: a value typed 'web_search' taken from block.name, or a branch that treats every server_tool_use block as one. Branch on name instead. Where code walks a tool result’s content by block type, add a tool_reference case.

The scan reports the two names in a type position when they are imported from @anthropic-ai/sdk/resources. The same types reached through @anthropic-ai/sdk/resources/messages, or on the default export’s namespace, are not findings. The response types widened the same way in this release, ServerToolUseBlock among them, and they have no rows here. A clean scan says no file names these two types from that module, and nothing more about the release.

What Emendant detects, fixes and verifies

2 changes in @anthropic-ai/sdk 0.75.0. 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 ServerToolUseBlockParam
anthropic-ai-sdk-npm-0.75.0-resources-server-tool-use-block-param-members-changed
Breaking
medium confidence
  • ServerToolUseBlockParam imported from @anthropic-ai/sdk/resources, named in any type position
Patch, only when you name a model providerYour typecheck and tests
Changed the members of ToolResultBlockParam
anthropic-ai-sdk-npm-0.75.0-resources-tool-result-block-param-members-changed
Breaking
medium confidence
  • ToolResultBlockParam imported from @anthropic-ai/sdk/resources, 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/@anthropic-ai/sdk/0.75.0.json, snapshot 2026-09-23.4.

Primary sources

Anthropic TypeScript SDK 0.76.0: Tool.allowed_callers accepts code_execution_20260120

@anthropic-ai/sdk 0.76.0 released Published Updated

@anthropic-ai/sdk@0.76.0 adds 'code_execution_20260120' to the callers a tool definition may allow. allowed_callers on Tool, and on every built-in tool type beside it, is an array of caller names, and the union behind it gains one member. Tool definitions written for 0.75.0 keep compiling. Code that reads allowed_callers back and handles each caller by name is what can break.

What changed

  • allowed_callers has one more member. In 0.75.0 the element type was 'direct' | 'code_execution_20250825'; in 0.76.0 it is 'direct' | 'code_execution_20250825' | 'code_execution_20260120'. The same union is used by allowed_callers on the built-in tool types, such as ToolBash20250124 and WebSearchTool20250305. The release’s changelog lists only “manual updates” to the API.

Before and after

The affected type is imported from this module:

import type { Tool } from '@anthropic-ai/sdk/resources';

The member as @anthropic-ai/sdk@0.75.0 declared it:

allowed_callers?: Array<'direct' | 'code_execution_20250825'>;

And as 0.76.0 declares it:

allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;

Migration guidance and its limits

The finding carries an assisted fix at medium confidence. Name a model provider on the command line or in emendant.json and emendant fix tries it; without one it is reported with its guidance and nothing is sent anywhere. Review whether the changed members affect your code before applying a patch. A tool definition that only sets allowed_callers may need no edit. Emendant checks each patch in a copy of your repository at 0.76.0 and withholds patches that fail. Read the patch header to see which checks passed.

Look for code that switches over the entries of allowed_callers, maps them into a type of your own, or ends in an exhaustiveness check against never. Add a case for 'code_execution_20260120' there.

The scan reports Tool in a type position when it is imported from @anthropic-ai/sdk/resources. The built-in tool types carry the same change and have no rows of their own, and Tool reached through @anthropic-ai/sdk/resources/messages or the default export’s namespace is not a finding. A clean scan says no file names Tool from that module, and nothing more about the release.

What Emendant detects, fixes and verifies

1 change in @anthropic-ai/sdk 0.76.0. 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 Tool
anthropic-ai-sdk-npm-0.76.0-resources-tool-members-changed
Breaking
medium confidence
  • Tool imported from @anthropic-ai/sdk/resources, 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/@anthropic-ai/sdk/0.76.0.json, snapshot 2026-09-23.4.

Primary sources

Anthropic TypeScript SDK 0.105.0: Tool.allowed_callers accepts code_execution_20260521

@anthropic-ai/sdk 0.105.0 released Published Updated

@anthropic-ai/sdk@0.105.0 adds 'code_execution_20260521' to the callers a tool definition may allow. allowed_callers on Tool, and on every built-in tool type beside it, is an array of caller names, and the union behind it gains one member. Tool definitions written for 0.104.2 keep compiling. Code that reads allowed_callers back and handles each caller by name is what can break.

What changed

  • allowed_callers has one more member. In 0.104.2 the element type was 'direct' | 'code_execution_20250825' | 'code_execution_20260120'; in 0.105.0 it is 'direct' | 'code_execution_20250825' | 'code_execution_20260120' | 'code_execution_20260521'. The same union is used by allowed_callers on the built-in tool types, such as ToolBash20250124 and WebSearchTool20250305.

Before and after

The affected type is imported from this module:

import type { Tool } from '@anthropic-ai/sdk/resources';

The member as @anthropic-ai/sdk@0.104.2 declared it:

allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120'>;

And as 0.105.0 declares it:

allowed_callers?: Array<'direct' | 'code_execution_20250825' | 'code_execution_20260120' | 'code_execution_20260521'>;

Migration guidance and its limits

The finding carries an assisted fix at medium confidence. Name a model provider on the command line or in emendant.json and emendant fix tries it; without one it is reported with its guidance and nothing is sent anywhere. Review whether the changed members affect your code before applying a patch. A tool definition that only sets allowed_callers may need no edit. Emendant checks each patch in a copy of your repository at 0.105.0 and withholds patches that fail. Read the patch header to see which checks passed.

Look for code that switches over the entries of allowed_callers, maps them into a type of your own, or ends in an exhaustiveness check against never. Add a case for 'code_execution_20260521' there.

The scan reports Tool in a type position when it is imported from @anthropic-ai/sdk/resources. The built-in tool types carry the same change and have no rows of their own, and Tool reached through @anthropic-ai/sdk/resources/messages or the default export’s namespace is not a finding. A clean scan says no file names Tool from that module, and nothing more about the release.

What Emendant detects, fixes and verifies

1 change in @anthropic-ai/sdk 0.105.0. 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 Tool
anthropic-ai-sdk-npm-0.105.0-resources-tool-members-changed
Breaking
medium confidence
  • Tool imported from @anthropic-ai/sdk/resources, 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/@anthropic-ai/sdk/0.105.0.json, snapshot 2026-09-23.4.

Primary sources

@anthropic-ai/sdk 0.118.0: MidConversationSystemBlockParam removed

@anthropic-ai/sdk 0.118.0 released Published Updated

@anthropic-ai/sdk 0.118.0 removes one named export: MidConversationSystemBlockParam, the parameter type for a mid_conv_system content block. The package’s own changelog files this as a bug fix rather than a rename: the type described a block the API never accepted. Code that imports the name from @anthropic-ai/sdk/resources stops compiling on upgrade.

What changed

  • Removed, not renamed. MidConversationSystemBlockParam is gone from @anthropic-ai/sdk/resources and from every path that re-exported it, including the package root. Nothing takes its place in the ContentBlockParam union it used to belong to.
  • Filed as a bug fix. The 0.118.0 changelog lists it under “Bug Fixes” as removing an “unsupported mid_conv_system content block”. The server already rejected this block before the release; 0.118.0 removes the type that described it.

Before and after

The one site Emendant finds:

import { MidConversationSystemBlockParam } from '@anthropic-ai/sdk/resources';
export { MidConversationSystemBlockParam };

The removed type has no replacement. Remove its import and any code that builds the obsolete block. The API already rejected this block before the SDK removed the type.

Migration guidance and its limits

Emendant reports the removed import and supports assisted fixes when you name a model provider. This type has no direct successor, so review and remove the obsolete block-building code yourself if no patch is offered.

Delete the import, and delete any code that still builds a mid_conv_system block by hand, since the API already refused it before this release removed the type.

The scan detects the name imported from @anthropic-ai/sdk/resources only. Uses through a local module, a vendor shim or a different imported name are outside this coverage.

A clean scan says the name is not imported from @anthropic-ai/sdk/resources. It does not say your requests never built a mid_conv_system block, since a plain object literal with that shape needs no import at all, and the tool traces imports and constructed values rather than the fields of an object sent to a client method.

What Emendant detects, fixes and verifies

1 change in @anthropic-ai/sdk 0.118.0. 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
Removed MidConversationSystemBlockParam
anthropic-ai-sdk-npm-0.118.0-resources-mid-conversation-system-block-param-removed
error TS2305: Module '"@anthropic-ai/sdk/resources"' has no exported member 'MidConversationSystemBlockParam'.
Breaking
  • MidConversationSystemBlockParam imported from @anthropic-ai/sdk/resources
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.

The error TS lines are what TypeScript 5.9.3 printed when code that compiled against @anthropic-ai/sdk 0.117.1 was compiled against 0.118.0. A row without one is a change the compiler does not report, such as a deprecation or a change in behaviour.

Requires emendant@0.1.0 or later. Feed entry feed/npm/@anthropic-ai/sdk/0.118.0.json, snapshot 2026-09-20.1.

Primary sources

Anthropic TypeScript SDK 0.119.0: file sources, container params and browser state blocks

@anthropic-ai/sdk 0.119.0 released Published Updated

@anthropic-ai/sdk@0.119.0 makes the Files and Skills APIs generally available and adds computer use and browser use toolsets, and seven request types widen to carry them. container can be an object as well as an id, image and document blocks can point at an uploaded file, and a tool result can hold a browser state block. Requests written for 0.118.0 keep compiling. Code that reads these params back, and relies on the narrower types, is what breaks.

What changed

  • container takes an object. On MessageCreateParamsNonStreaming, MessageCreateParamsStreaming, MessageStreamParams and ParseableMessageCreateParams, container was string | null and is now MessageCreateParamsContainer | null, where MessageCreateParamsContainer is ContainerParams | string. ContainerParams holds an optional id and an optional list of skills. Code that reads params.container as a string must narrow it first.
  • Image and document blocks can reference a file. ImageBlockParam.source adds FileImageSource and DocumentBlockParam.source adds FileDocumentSource, each { file_id: string; type: 'file' }. ImageBlockParam also gains an optional transformations.
  • Tool results gain a block type and a field. ToolResultBlockParam.content adds BrowserStateBlockParam, and the param gains an optional toolset_name, which its documentation describes as the toolset family of the paired tool use.

Before and after

The affected type is imported from this module:

import type { MessageCreateParamsNonStreaming } from '@anthropic-ai/sdk/resources';

The container member in @anthropic-ai/sdk@0.118.0:

container?: string | null;

And in 0.119.0, with the type it now names:

container?: MessageCreateParamsContainer | null;
export type MessageCreateParamsContainer = ContainerParams | string;

Migration guidance and its limits

All seven findings carry an assisted fix at medium confidence. Name a model provider on the command line or in emendant.json and emendant fix tries them; without one they are reported with their guidance and nothing is sent anywhere. Review whether the changed members affect your code before applying a patch. Code that only builds requests may need no edit. Emendant checks each patch in a copy of your repository at 0.119.0 and withholds patches that fail. Read the patch header to see which checks passed.

Where code reads container from a params object, check typeof container === 'string' before using it as an id. Where code switches on source.type for images or documents, add a 'file' case. Where it walks a tool result’s content by block type, add a case for the browser state block.

ParseableMessageCreateParams is matched from @anthropic-ai/sdk; the other six are matched from @anthropic-ai/sdk/resources. The same types reached through @anthropic-ai/sdk/resources/messages, or on the default export’s namespace, are not findings. The new files and skills resources on the client and the toolsets themselves are not covered. A clean scan says no file names these seven types from those modules, and nothing more about the release.

What Emendant detects, fixes and verifies

7 changes in @anthropic-ai/sdk 0.119.0. 0 automatic fixes, 7 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 ParseableMessageCreateParams
anthropic-ai-sdk-npm-0.119.0-parseable-message-create-params-members-changed
Breaking
medium confidence
  • ParseableMessageCreateParams imported from @anthropic-ai/sdk, named in any type position
Patch, only when you name a model providerYour typecheck and tests
Changed the members of DocumentBlockParam
anthropic-ai-sdk-npm-0.119.0-resources-document-block-param-members-changed
Breaking
medium confidence
  • DocumentBlockParam imported from @anthropic-ai/sdk/resources, named in any type position
Patch, only when you name a model providerYour typecheck and tests
Changed the members of ImageBlockParam
anthropic-ai-sdk-npm-0.119.0-resources-image-block-param-members-changed
Breaking
medium confidence
  • ImageBlockParam imported from @anthropic-ai/sdk/resources, named in any type position
Patch, only when you name a model providerYour typecheck and tests
Changed the members of MessageStreamParams
anthropic-ai-sdk-npm-0.119.0-resources-message-stream-params-members-changed
Breaking
medium confidence
  • MessageStreamParams imported from @anthropic-ai/sdk/resources, named in any type position
Patch, only when you name a model providerYour typecheck and tests
Changed the members of ToolResultBlockParam
anthropic-ai-sdk-npm-0.119.0-resources-tool-result-block-param-members-changed
Breaking
medium confidence
  • ToolResultBlockParam imported from @anthropic-ai/sdk/resources, named in any type position
Patch, only when you name a model providerYour typecheck and tests
Changed the members of MessageCreateParamsNonStreaming
anthropic-ai-sdk-npm-0.119.0-resources-message-create-params-non-streaming-members-changed
Breaking
medium confidence
  • MessageCreateParamsNonStreaming imported from @anthropic-ai/sdk/resources, named in any type position
Patch, only when you name a model providerYour typecheck and tests
Changed the members of MessageCreateParamsStreaming
anthropic-ai-sdk-npm-0.119.0-resources-message-create-params-streaming-members-changed
Breaking
medium confidence
  • MessageCreateParamsStreaming imported from @anthropic-ai/sdk/resources, 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/@anthropic-ai/sdk/0.119.0.json, snapshot 2026-09-23.4.

Primary sources

Anthropic TypeScript SDK 0.122.0: resolveSkillVersion is removed

@anthropic-ai/sdk 0.122.0 released Published Updated

Release 0.122.0 drops resolveSkillVersion, the one named export @anthropic-ai/sdk/tools/agent-toolset/node loses this release. It only affects code that imported the helper directly to turn a skill version alias such as latest into the concrete id the download endpoint needs. The toolset’s own skill downloader, setupSkills, never depended on it as a public function and keeps working unchanged.

What changed

  • Removed. resolveSkillVersion is no longer exported from @anthropic-ai/sdk/tools/agent-toolset/node. It resolved a skill version alias like "latest" to the concrete numeric id the skill version endpoints required, by listing a skill’s versions and picking the highest.
  • No like-for-like replacement. The job it did moved into client.beta.skills.versions.retrieve, which now accepts the alias itself and returns the concrete id on the result. Update the call and read the resolved id from the returned object.

Before and after

The removed helper was imported directly:

import { resolveSkillVersion } from '@anthropic-ai/sdk/tools/agent-toolset/node';
export { resolveSkillVersion };

Where your code called resolveSkillVersion(client, skillId, version) before downloading, call the retrieve endpoint and read the id off its result instead:

const version = await client.beta.skills.versions.retrieve(skillVersion, { skill_id: skillId });
const versionId = version.id;

That is the same call setupSkills makes internally, so a latest alias resolves the same way whether you drive the download yourself or let the toolset do it.

Migration guidance and its limits

This finding carries an assisted fix, so emendant fix asks a model once you name a provider on the command line or in emendant.json; without one it is reported with its guidance and nothing is sent anywhere. The replacement has a different call shape. Review its arguments and the returned value when updating each call site. Emendant checks each patch in a copy of your repository at 0.122.0 and withholds patches that fail. Read the patch header to see which checks passed.

Where your code called resolveSkillVersion to resolve an alias before downloading a skill, replace the call with client.beta.skills.versions.retrieve(version, { skill_id }) and take .id from what it returns. Numeric versions round-trip through the same call unchanged, since the endpoint already accepted them.

The scan detects imports from @anthropic-ai/sdk/tools/agent-toolset/node. A copy of the helper vendored into your own module, or a call reached only through a factory Emendant’s provenance tracking cannot follow, is not something a clean scan rules out. This page covers the one change the feed carries for 0.122.0; the release’s other fixes and documentation updates are not part of this entry.

What Emendant detects, fixes and verifies

1 change in @anthropic-ai/sdk 0.122.0. 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
Removed resolveSkillVersion
anthropic-ai-sdk-npm-0.122.0-tools-agent-toolset-node-resolve-skill-version-removed
error TS2305: Module '"@anthropic-ai/sdk/tools/agent-toolset/node"' has no exported member 'resolveSkillVersion'.
Breaking
  • resolveSkillVersion imported from @anthropic-ai/sdk/tools/agent-toolset/node
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.

The error TS lines are what TypeScript 5.9.3 printed when code that compiled against @anthropic-ai/sdk 0.121.0 was compiled against 0.122.0. A row without one is a change the compiler does not report, such as a deprecation or a change in behaviour.

Requires emendant@0.1.0 or later. Feed entry feed/npm/@anthropic-ai/sdk/0.122.0.json, snapshot 2026-09-20.1.

Primary sources

Anthropic TypeScript SDK 0.132.0: ModelInfo, ModelCapabilities and ThinkingTypes gain required members

@anthropic-ai/sdk 0.132.0 released Published

Release 0.132.0 adds required members to three model catalogue types exported from @anthropic-ai/sdk/resources: ModelInfo, ModelCapabilities and ThinkingTypes. Code that only reads these types is unaffected. Code that builds a value of one of them, such as a test double or a cached copy of the models response, stops type-checking until it supplies the new members.

What changed

  • ModelInfo. It newly requires deprecated_at, lifecycle, line and retires_at. lifecycle is 'active', 'deprecated' or 'retired'. deprecated_at and retires_at are RFC 3339 strings or null. line is a ModelLine or null.
  • ModelCapabilities. It newly requires server_tools, a ServerToolsCapability with supported, web_search and code_execution.
  • ThinkingTypes. It newly requires disabled, a CapabilitySupport that sits beside adaptive and enabled. Read each key on its own, since enabled can be false while disabled is true.

Before and after

In 0.132.0 the ModelInfo declaration carries four members that 0.131.0 does not:

export interface ModelInfo {
// ...members from 0.131.0
deprecated_at: string | null;
lifecycle: 'active' | 'deprecated' | 'retired';
line: ModelLine | null;
retires_at: string | null;
}

A hand-built value for an active model with no retirement scheduled gains:

deprecated_at: null,
lifecycle: 'active',
line: 'sonnet',
retires_at: null,

ModelCapabilities gains server_tools and ThinkingTypes gains disabled in the same way. Take each value from the model you are describing. Do not infer line from the model id.

Migration guidance and its limits

All three findings carry assisted fixes, so emendant fix asks a model once you name a provider on the command line or in emendant.json. Without one, each finding is reported with its guidance and nothing is sent anywhere. Emendant checks each patch in a copy of your repository at 0.132.0 and withholds patches that fail. Read the patch header to see which checks passed.

The scan reports every place that names one of these types imported from @anthropic-ai/sdk/resources. Naming a type does not mean a new member reaches that code. Code that only reads a response, or passes a value through unchanged, may need no edit, and a patch may not be available there.

A value you build by hand needs real data for the new members, such as which lifecycle stage a model is in. A patch can add the members but cannot know your model’s retirement schedule, so review those values. A clean scan does not cover a type reached through a re-export in your own module, or response shapes you copied into your own declarations. This page covers the three changes the feed carries for 0.132.0, all of them type-level.

What Emendant detects, fixes and verifies

3 changes in @anthropic-ai/sdk 0.132.0. 0 automatic fixes, 3 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 ModelCapabilities
anthropic-ai-sdk-npm-0.132.0-resources-model-capabilities-members-changed
Breaking
medium confidence
  • ModelCapabilities imported from @anthropic-ai/sdk/resources, named in any type position
Patch, only when you name a model providerYour typecheck and tests
Changed the members of ModelInfo
anthropic-ai-sdk-npm-0.132.0-resources-model-info-members-changed
Breaking
medium confidence
  • ModelInfo imported from @anthropic-ai/sdk/resources, named in any type position
Patch, only when you name a model providerYour typecheck and tests
Changed the members of ThinkingTypes
anthropic-ai-sdk-npm-0.132.0-resources-thinking-types-members-changed
Breaking
medium confidence
  • ThinkingTypes imported from @anthropic-ai/sdk/resources, 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/@anthropic-ai/sdk/0.132.0.json, snapshot 2026-10-08.1.

Primary sources

@anthropic-ai/sdk 0.134.0: SessionMemoryStores no longer declares syncAll

@anthropic-ai/sdk 0.134.0 released Published

Release 0.134.0 of @anthropic-ai/sdk changes the members that SessionMemoryStores declares. It no longer declares syncAll. Code that implements this type, or reads a member from a value of it, can stop type-checking. Code that only names the type may be unaffected.

What changed

  • SessionMemoryStores members. The type is exported from @anthropic-ai/sdk/tools/agent-toolset/node. The 0.134.0 declarations no longer include syncAll, which the 0.133.0 declarations had. The feed marks this breaking, at medium confidence.
  • What the scan flags. emendant scan reports each place that names SessionMemoryStores imported from that module, in any type position. A match means the code names the type. It does not mean a changed member reaches that code.

Before and after

There is no deterministic rewrite for this change, so there is no automatic before and after to show. The scan matches an import like this one:

import type { SessionMemoryStores } from '@anthropic-ai/sdk/tools/agent-toolset/node';

The import itself stays valid in 0.134.0. What needs attention is any code that supplies or reads syncAll on a value of this type. The record does not name a replacement member, so compare your code against the SessionMemoryStores declaration in 0.134.0.

Migration guidance and its limits

The one finding carries an assisted fix, so emendant fix needs a named model provider, chosen on the command line or in your Emendant configuration. Without one, the finding is reported with its guidance and nothing is sent anywhere. Emendant checks each patch with a typecheck and your tests in a copy of your repository at 0.134.0, and withholds patches that fail. Read the patch header to see which checks passed.

Before applying a patch, open each flagged site and check whether the code supplies or reads syncAll. If it only passes the type along or annotates a parameter, it may need no edit, and a patch may not be available. Where the code does use syncAll, the patch brings it into line with what the release declares. Where the replacement cannot be determined from the release, review the surrounding code yourself.

No finding for this release is report only. A clean scan covers imports of SessionMemoryStores from @anthropic-ai/sdk/tools/agent-toolset/node and nothing else. It does not cover the type reached through a re-export in your own module, or a copy of its shape that you declared yourself. The scan also does not cover other changes in 0.134.0 that the feed does not carry.

What Emendant detects, fixes and verifies

1 change in @anthropic-ai/sdk 0.134.0. 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 SessionMemoryStores
anthropic-ai-sdk-npm-0.134.0-tools-agent-toolset-node-session-memory-stores-members-changed
Breaking
medium confidence
  • SessionMemoryStores imported from @anthropic-ai/sdk/tools/agent-toolset/node, 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/@anthropic-ai/sdk/0.134.0.json, snapshot 2026-10-14.1.

Primary sources

@anthropic-ai/sdk 0.135.0: ThinkingTypes newly requires between_tools

@anthropic-ai/sdk 0.135.0 released Published

Release 0.135.0 of @anthropic-ai/sdk changes the members that ThinkingTypes declares: it newly requires between_tools. Code that builds a value of this type, or reads its members, can stop type-checking. Code that only names the type may be unaffected.

What changed

  • ThinkingTypes members. The type is exported from @anthropic-ai/sdk/resources. The 0.135.0 declarations newly require between_tools, and the changelog lists the addition as a feature of thinking types in model capabilities. The feed marks this breaking, at medium confidence.
  • What the scan flags. emendant scan reports each place that names ThinkingTypes imported from that module, in any type position. A match means the code names the type. It does not mean a changed member reaches that code.

Before and after

There is no deterministic rewrite for this change, so there is no automatic before and after to show. The scan matches an import like this one:

import type { ThinkingTypes } from '@anthropic-ai/sdk/resources';

The import itself stays valid in 0.135.0. What needs attention is code that supplies or reads members of a value of this type, such as a hand-built value used as a test double. The record does not state the type of between_tools, so take it from the ThinkingTypes declaration in 0.135.0 rather than copying the shape of another member.

Migration guidance and its limits

The one finding carries an assisted fix, so emendant fix needs a named model provider, chosen on the command line or in your Emendant configuration. Without one, the finding is reported with its guidance and nothing is sent anywhere. Each patch is checked with a typecheck and your tests, so read the patch header to see which checks passed.

Before applying a patch, open each flagged site and check whether the code supplies or reads the members of ThinkingTypes. If it only passes the type along or annotates a parameter, it may need no edit, and a patch may not be available. Where the code does build or read a value of the type, the patch brings it into line with what the release declares. Where the release does not make the right value clear, review the surrounding code yourself.

No finding for this release is report only. A clean scan covers imports of ThinkingTypes from @anthropic-ai/sdk/resources and nothing else. It does not cover the type reached through a re-export in your own module, or a copy of its shape that you declared yourself. It also does not cover other changes in 0.135.0 that the feed does not carry.

What Emendant detects, fixes and verifies

1 change in @anthropic-ai/sdk 0.135.0. 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 ThinkingTypes
anthropic-ai-sdk-npm-0.135.0-resources-thinking-types-members-changed
Breaking
medium confidence
  • ThinkingTypes imported from @anthropic-ai/sdk/resources, 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/@anthropic-ai/sdk/0.135.0.json, snapshot 2026-10-15.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 @anthropic-ai/sdk release page is listed on one page.