Changelog
Claude Agent SDK
Anthropic Agent SDK, showing TypeScript releases
Recently checked
Last checked against an official source:
Open official changelog sourceCollection from official sources is limited. Earlier releases may be missing. This page does not claim a complete version history.
Latest Releases (95)
v0.3.319New
November 6, 2026
- •Added MCP task support in SDK sessions (not on Bedrock, Vertex or Foundry): with
CLAUDE_AUTO_BACKGROUND_TASKS=1and streaming input, an MCP task runs in the background withtask_type"mcp_task" - •Fixed the OpenTelemetry
claude_code.session.countmetric countingprewarm()processes that were never claimed; a pre-started process now counts once, whenSpareProcess.claim()succeeds - •Fixed
session_writes_lostlisting the wrong session intranscript_session_idsafter/clearin a session resumed from a transcript file outside the projects folder - •Improved
deleteSession()to reject withENOTEMPTYif the session's folder could not be fully deleted - •Changed
session_writes_lostto be sent only when the CLI exits 0; a run that ends on an error result now gets only the stderr line - •Updated to parity with Claude Code v2.1.319
v0.3.318New
November 4, 2026
- •Added an optional
credential_expires_atfield to result messages: when the stored claude.ai sign-in in use ends - •Added the
config_file_invalidstartup failure reason, reported when a configuration file read at startup isn't valid JSON - •Fixed the interrupt response missing a message held behind a model change: it is now listed, cancelled with
cancel_queued, and stopped at start-up as a queued message is - •Changed
agentProgressSummaries: while the subagent waits for a response on a likely-cold prompt cache, a summary can wait up to 5 minutes, and is not sent if the subagent ends first - •Changed
statusinPushNotificationInputto optional - •Updated to parity with Claude Code v2.1.318
v0.3.317New
November 3, 2026
- •Added
onFailureto hook matchers: with"block", a hook that throws or returns invalid output blocks the action - •Added a warning message in the stream when a hook callback fails
- •Added a
session_writes_lostsystem message, sent after the last result when a full disk or disk quota kept the CLI from saving the session transcript or ~/.claude.json - •Added
initialize_not_firsttostartup_failure_reason, for a--await-initializelaunch whose first stdin line is not the initialize request - •Added
task.descriptionto the TaskCreate tool'stool_use_result: the description the task was created with - •Added
lossytoreadFile()utf-8 answers:truewhen decoding replaced bytes that are not valid UTF-8 - •Removed the
file_unchangedvariant ofFileReadOutputinsdk-tools.d.ts; a repeated Read now returns the file content - •Fixed
setMcpServersclosing a folder's.mcp.jsonand local-scope MCP servers in sessions started withprewarm()and bound withSpareProcess.claim()
Show more (1)Show less
- •Updated to parity with Claude Code v2.1.317
v0.3.314
October 30, 2026
- •Added
sandbox_required_unavailabletostartup_failure_reason, for the result Claude Code writes when a required sandbox cannot run - •Added
permissions.blockWritesOutsideWorkingDirectoriesto theSettingstype - •Added
prewarm()(alpha) to the@anthropic-ai/claude-agent-sdk/coreentry point - •Fixed a settings file left out of
settingSourcesstill supplying some settings, such as auto mode rules and saved permission consents - •Updated to parity with Claude Code v2.1.314
v0.3.312
October 27, 2026
- •Added
autoMode,skipAutoPermissionPrompt,useAutoModeDuringPlanandpermissions.disableAutoModeto theSettingstype - •Added
unanswered(skipped,replied_in_chatordismissed) to AskUserQuestion answers' per-questionannotations; send it only whensystem/initlists theask_user_question_unanswered_v1capability - •Fixed
resolveSettings()returning mistyped managed auto-mode settings, such aspermissions.disableAutoMode: true, as written instead of reading them as the CLI does; a user or project settings file whose auto-mode keys hold an invalid value is now skipped, as in the CLI - •Updated to parity with Claude Code v2.1.312
v0.3.311
October 26, 2026
- •Added
cacheCreationEphemeral5mInputTokensandcacheCreationEphemeral1hInputTokenstoModelUsage, splittingcacheCreationInputTokensby cache lifetime - •Changed background start-up work to wait until the first model request is sent, for about 10 seconds at most, when the first message arrives during start-up
- •Changed the minimum supported Node.js version from 18.0.0 to 18.14.0
- •Updated to parity with Claude Code v2.1.311
v0.3.309
October 23, 2026
- •Fixed host-supplied
managedSettingsdroppingdisableAllHooks,disableSkillShellExecutionand emptyallowedHttpHookUrls/httpHookAllowedEnvVarslists - •Changed
extractFromBunfs()to extract the embedded CLI into its own per-user temp directory (claude-agent-sdk-<uid>, orclaude-agent-sdkon Windows) instead of Claude Code's temp root - •Changed
extractFromBunfs()to reuse an already-extracted file only when its bytes match the embedded binary, replacing it otherwise - •Updated to parity with Claude Code v2.1.309
v0.3.307
October 22, 2026
- •Added
wakeup_sourceto thecommand_lifecyclestartedframe of a scheduled wakeup or task, andscheduled_forfor a wakeup (capabilitylifecycle_wakeup_source_v1), so a host can tell which one fired - •Added
supportedDialogKindsto browser SDKquery(), sent oninitialize; a non-empty list requiresonUserDialog - •Updated to parity with Claude Code v2.1.307
v0.3.305
October 20, 2026
- •Added
recommendationsandfixto theget_usageresponse's behavior windows - •Fixed servers set with
setMcpServersbeing replaced later in the session by a same-named server from the user's own settings - •Fixed
startup()withinitializeTimeoutMs: nullcounting time spent in SessionStart or Setup hooks against its 60-second limit;nullnow works like leaving the option out - •Changed the
startup()andprewarm()timeout error for a start with no open SessionStart or Setup hook: it lists possible causes and no longer says to check authentication and network - •Updated to parity with Claude Code v2.1.305
v0.3.304
October 19, 2026
- •Added
suspendSseStream(query)andresumeSseStream(query)to the browser SDK: close a query's event stream and reopen it later without ending the query - •Added stable row ids to
getContextUsage(), and, when the CLI answers on its own stdio, plugin ids, agent and skill file paths, and per-server MCP instruction token shares - •Fixed
startup()timing out while a SessionStart or Setup command hook was running when noinitializeTimeoutMsis passed: up to 10 minutes of that time no longer counts toward the 60-second limit, and the timeout error now says what the process reported - •Fixed
startup()keeping everyhook_progressmessage of a running SessionStart or Setup hook in memory until it resolved; it now keeps only the newest one for each hook - •Updated to parity with Claude Code v2.1.304
v0.3.302
October 16, 2026
- •Fixed structured output results delivering a response's output as
structured_outputwhen the API refused that response; the result is now an error with no payload - •Changed an omitted
permissionModeto start indefaultmode on third-party providers, with telemetry off or on a fresh install; passpermissionMode: 'auto'to keep auto mode - •Changed fork subagents (
subagent_type: "fork") to be on by default in SDK sessions, as in the terminal;run_in_backgroundis still offered, andCLAUDE_CODE_FORK_SUBAGENT=0turns them off - •Updated to parity with Claude Code v2.1.302
v0.3.301
October 15, 2026
- •Added per-tool permission policies to sdk-type MCP server configs:
toolsentries withpermission_policyalways_askoralways_deny, applied oninitializeandsetMcpServers() - •Added
BUILTIN_TOOL_NAMESandLEGACY_TOOL_NAME_ALIASESexports: the public built-in tool names and their earlier names, for checking permission rules and tool settings - •Added
addPluginstoQuery.reloadPlugins()so a host can load more plugin folders into a running session - •Fixed
setModel()with a model ID failing while the account is at its five-hour or weekly usage limit; the model now applies and the next message reports the limit - •Changed the error when a full disk keeps the login from being refreshed:
erroris nowinvalid_request, notauthentication_failed, andapi_error_statusisnull, not 401 - •Changed
mcpServerStatus()to still report a tool's_meta.ui.visibilitywhen the rest of its_meta.uifails validation - •Updated to parity with Claude Code v2.1.301
v0.3.300
October 14, 2026
- •Fixed
importSessionToStoreskipping transcript rows that contain a Unicode line or paragraph separator (U+2028, U+2029) on Node 24 and Bun - •Fixed a background subagent's final report in auto mode being joined into one turn with another message from the same subagent; the report now always runs as its own turn
- •Fixed
rewind_conversationwithinterrupt_if_runningstopping the running turn before refusing with "unseen later turn" - •Reverted
canUseTooloptions carryingsuppressAlwaysAllowRule: truefor connector tools that an organization set to require approval (added in 0.3.292) - •Improved the browser SDK bundle (
@anthropic-ai/claude-agent-sdk/browser): 40% smaller to download, by no longer bundling a Nodecryptopolyfill - •Changed
thinking: { type: 'disabled' }andmaxThinkingTokens: 0to run as adaptive thinking on models that can't turn thinking off - •Changed
updatedInputfrom PreToolUse and PermissionRequest hook callbacks: it is now validated like Claude's own input and unknown keys are dropped;canUseToolis unchanged - •Updated to parity with Claude Code v2.1.300
v0.3.299
October 14, 2026
- •Added an optional
nextFireAt(epoch ms of the next run) to the CronCreate and CronList tool outputs - •Added
property_orderto theelicitationcontrol request: a form's field names in the order the MCP server listed them, for hosts whose transport keeps no JSON object key order - •Fixed
rewind_conversationanswering "target not found" for a message stopped during its prompt hooks or plugins: until a reply or input follows, it answersrewound: truewith a nullprefillText - •Fixed in-process SDK MCP servers named
constructorortoStringbeing silently dropped when aprewarm()process is claimed withSpareProcess.claim() - •Fixed queued user messages with content-block arrays running together without a line break when merged into one turn
- •Fixed
origin.bodyon a user message that merges several queued peer messages (from other sessions or agents) carrying only the first message's text; it is now omitted - •Changed
initialize,mcp_set_serversandclaim_sessionto refuse the reserved MCP server names__proto__,__defineGetter__,__defineSetter__,__lookupGetter__,__lookupSetter__ - •Updated to parity with Claude Code v2.1.299
v0.3.296
October 9, 2026
- •Added
claude_code_versionto theinitializecontrol response so clients know the CLI version before the first turn - •Added
autoCompactWindowtoAgentDefinition, so a subagent can auto-compact earlier than the main conversation's window - •Fixed the
sandboxoption discarding an inlinesettings.sandboxblock: the two now merge, the option's values win, and deny and credential lists from both sides are combined - •Changed the default limit on MCP tool descriptions sent up front and on MCP server instructions, in-process SDK servers included, from 2,048 to 4,096 characters
- •Changed permission answers that arrive after a restart to be parsed like live ones: over 4,096
updatedPermissionsentries count as a denial, and a malformed list is ignored as a whole - •Updated to parity with Claude Code v2.1.296
v0.3.295
October 8, 2026
- •Added
overageEnabledtoSDKRateLimitInfo: on usage-limit warnings, whether the account has extra usage turned on - •Fixed an MCP server added with
mcp_set_serverssometimes keeping an outdated tool list when another server in the same request connected later - •Fixed assistant text blocks losing their
citationsin streamed responses - •Fixed Claude being told "disabled by the user" about an in-process MCP server that was switched off with
toggleMcpServer() - •Fixed
rate_limit_eventwith statusallowed_warningomittingoverageStatus,overageResetsAtandoverageDisabledReason, whichallowedandrejectedevents already carry - •Changed MCP tool descriptions the model loads through tool search, including those from in-process SDK servers, to be cut at 16,384 characters instead of 2,048
- •Changed a permission answer whose
updatedPermissionsholds over 4,096 updates, rules and directories to count as a denial - •Changed
tool_result_meta[].non_execution_kindto be absent when a mod withheld the result of a tool that ran without error; it waspermission-rule
Show more (6)Show less
- •Changed
pasted_contenton user messages to be ignored when it holds over 1,000 entries and blocks in all - •Changed how the SDK passes option values to Claude Code: the values of its named options are now sent in the same argument as their flag (
--flag=value) - •Changed
tool_use_resultfor MCP Apps tools:structuredContentor_metaover 8,388,608 JSON characters is left off, and_meta.uiwith noui://resource no longer lifts the ordinary caps - •Changed
tool_use_resultfor MCP tools: when a long result is saved to a file, or cut because it could not be, the text kept past 500,000 characters is dropped, with a note of how much - •Changed
tool_use_resultfor MCP tools: a result_metaover 1,048,576 JSON characters is left off, except for SDK-server tools; so is text blocks'_metathat totals over 65,536 - •Updated to parity with Claude Code v2.1.295
v0.3.292
October 6, 2026
- •Added
agent_idto theassistantandusermessages a subagent produces; it equals thetask_idon that subagent's task events and stays the same when the subagent is resumed - •Added
parent_task_idtotask_startedevents andbackground_tasks_changedentries, naming the subagent task that launched a task - •Added
run_idto background task events andorigin.runIdto task notifications, so a host can tell a resumed task's runs apart - •Added typed
sectionsandnotesto theListAgentstool'stool_use_result, so hosts can list agents without parsing its text - •Added
recipient_kindto SendMessagetool_useinputs on assistant messages, and their top-levelapproveis now always a boolean, so hosts no longer infer them from the raw input - •Added two optional fields to the
ReadNotificationstool output:read_at, when the tool read the session's queued notifications, andarrived_aton each notification, when it reached the session - •Fixed subagents with a declared auto permission mode having their tool calls decided by the auto-mode classifier instead of the canUseTool callback when auto mode is unavailable
- •Changed
background_tasks_changedfor a finishing background task to arrive after that task'stask_updatedandtask_notification
Show more (2)Show less
- •Changed
canUseTooloptions to carrysuppressAlwaysAllowRule: truefor connector tools that an organization set to require approval, so hosts can hide their "always allow" choice - •Updated to parity with Claude Code v2.1.292
v0.3.290
October 6, 2026
- •Added an optional
offsetfield to the WebFetch tool input for reading on through long pages - •Fixed failed Claude in Chrome tool calls dropping the result's
_meta: when the result has one,tool_use_resultis now{ content, _meta }, as for other MCP tools - •Fixed deny and ask rules missing
toolAliasestools when written with a wildcard (Bash*), a match-all pattern (Bash(**), also on the mapped name), or an input field also indisallowedTools - •Fixed a user message sent again under the same
uuidbeing replayed (--replay-user-messages) while the first copy still waited for its turn; its replay now comes when a turn takes it - •Fixed
includePartialMessagesstreams leaving a message withoutmessage_stopwhen the stream was cut, interrupted or fell back to non-streaming - •Changed
user_message_uuid,user_message_uuidsandresume_reasonto also be set on a turn a restarted worker resumes from a permission answer or from tool calls still in flight - •Updated to parity with Claude Code v2.1.290
v0.3.287
October 1, 2026
- •Added optional remote-session latency fields (
first_text_post_queue_wait_ms,first_text_post_queued_behind) to the success result message - •Fixed
includePartialMessagesstreams sending a cut-short reply'smessage_stoplate or never, so apps could show the reply as still in progress - •Fixed the error for a revoked claude.ai login, which now reads "Failed to authenticate: OAuth token revoked" instead of a generic or "does not have access" message
- •Fixed a tool call to an in-process MCP server being left waiting after
toggleMcpServer()disabled the server orsetMcpServers()removed it - •Fixed
commands_changedarriving beforeinit, or twice, at session start: theinitializeresponse now includes commands registered at startup - •Changed
tool_use_resultfor a WebFetch or WebSearch call that steps aside for a priority "now" message to{ detachedToolCall: true }; the result follows in a later turn - •Changed
tool_use_resultfor MCP tools:structuredContentover 1,048,576 JSON characters is left off andstructuredContentOmitted: trueset, except for SDK-server and MCP Apps tools - •Updated to parity with Claude Code v2.1.287
v0.3.286
September 30, 2026
- •Added the initialize response field
sdk_mcp_manifests_parkedand thesystem/initcapabilitiessdk_mcp_manifestsandsdk_mcp_tools_list_changed - •Fixed foreground subagents sometimes not receiving the task-tracking tools listed in
toolsorallowedTools - •Fixed an SDK MCP server listing no tools when one tool's schema cannot be converted to JSON Schema; that tool is now left out with a warning naming it
- •Fixed
toggleMcpServer()not disconnecting, and failing to re-enable, an in-process MCP server created withcreateSdkMcpServer(), except one namedclaude-in-chrome - •Changed a person's priority
nowmessage to move running shell commands, agents and MCP calls to the background and join the running turn instead of stopping it - •Changed the TypeScript Agent SDK to leave an omitted
permissionModeto Claude Code, so a settingsdefaultModenow applies and, on third-party providers or with telemetry off, the session starts in auto mode likeclaude -p; passpermissionMode: 'default'for manual approvals - •Updated to parity with Claude Code v2.1.286
Showing 30 of 95