Claude Agent SDK
Changelog
Anthropic Agent SDK, showing TypeScript releases
This page shows at most the 60 most recent releases from official sources. It does not claim to be a complete version history.
Latest Version:v0.3.280
Shown Releases:60
Source:GitHub Releases
Latest Releases (60)
v0.3.280New
v0.3.280
September 22, 2026
- •Added optional
fireReasonto the task-notificationSDKMessageOrigin; a local host's declared scheduled-task fire is honored only in a process it started withCLAUDE_CODE_HOST_SCHEDULED_RUN=1 - •Added
verbatimPromptsoption: prompts are delivered as written — no@pathexpansion, no slash-command dispatch and, on current CLIs, no ambient attachments with the prompt (Claude Code 2.1.248+) - •Added
_metatomcpServerStatus()tool entries, carrying a tool's MCP Appsuimetadata so a host can find itsui://resource - •Added
readMcpResource()(alpha) to read an MCP Appsui://resource from an MCP server that Claude Code connected - •Improved
askSideQuestion(): asked while a turn is running, it now sees that turn (its prompt, replies and finished tool results so far) instead of only the last completed turn - •Improved unattended retry (
CLAUDE_CODE_RETRY_WATCHDOG): a usage-limit wait emitsrate_limit_event(rejected,resetsAt) as it begins;api_retryheartbeats continue while sub-agent work waits - •Changed
session_state_changedevents (CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS=1) to reportrequires_actionwhile an MCP elicitation waits on the user, as for permission prompts - •Changed headless sessions to cancel an MCP server's pending form question when the tool call that drew it ends
- •Updated to parity with Claude Code v2.1.280
v0.3.277New
v0.3.277
September 18, 2026
- •Added an optional
builtinfield toSlashCommand, set when a command is built into Claude Code - •Added
pasted_contenttoSDKUserMessage: text the user pasted rather than typed, appended after the typed prompt - •Added optional remote-session latency fields (
first_text_post_ms,first_text_post_wall_ms,first_stream_post_queue_wait_ms,first_stream_post_queued_behind) to the success result message - •Added
'userSettings'as anupdateSettings()source, accepting onlyeffortLevel, which is saved for the session's current model as/effortsaves it - •Fixed a resumed or forked session's
total_cost_usd,modelUsageandget_usagetotals starting at zero instead of continuing from the earlier turns (maxBudgetUsdis unchanged) - •Changed
SDKUsageReportusage rows to always carryseverityandis_active: the report relays only rows from a live server reply, and none while the usage fetch is failing - •Updated to parity with Claude Code v2.1.277
v0.3.275New
v0.3.275
September 18, 2026
- •Fixed a deferred tool call's result being emitted with internal keys such as
toolUseResultinstead oftool_use_resultwhen the tool re-runs at the start of a resumed turn - •Fixed
getSessionMessages()andforkSession()sometimes missing a turn's assistant message when called right after the turn'sresultmessage - •Fixed
forkSession({ upToMessageId })rejecting a client-suppliedSDKUserMessage.uuidthat is not in UUID format - •Fixed
forkSessionrejecting the id thatgetSessionMessagesreturns for a message sent while Claude was working, and a fork showing a re-run prompt twice - •Fixed
getSessionMessages()omitting a task notification or other queued message that Claude read while running a tool; it now comes back where Claude read it - •Updated to parity with Claude Code v2.1.275
v0.3.274New
v0.3.274
September 17, 2026
- •Added
startup_failure_reasonto the error result a stream-json run writes before exiting on a known startup failure - •Added
mcpServer: {name, source}tocanUseTooloptions,mcp_serverto tool hook inputs, andsourceto MCP server status rows, so hosts can key trust onsource === "sdk" - •Added
CLAUDE_CODE_MCP_STARTUP_WAIT_MS(pass viaenv) to bound or disable (0) the first-turn wait for connecting MCP servers - •Added
CLAUDE_CODE_EMIT_STARTUP_TIMING=1for stream-json hosts: the session's firstsystem/initthen carries the per-phasestartup_timingbreakdown that cloud sessions already emit - •Fixed
getSessionMessages()omitting a message the user sent while Claude was running a tool; it now comes back as a user message where Claude read it - •Fixed missing
origin: {kind: 'task-notification'}on the replayed user message when a background task finishes during a running turn (--replay-user-messages) - •Improved startup: the first turn no longer waits up to 2s for connecting MCP servers from settings files or plugins whose tools tool search defers;
options.mcpServersservers are still awaited - •Changed queued background-task completions to share one model call: each still gets its own
result, all but the last empty withnum_turns: 0 - •Updated to parity with Claude Code v2.1.274
v0.3.273
v0.3.273
September 15, 2026
- •Added a
usage_reportsibling (SDKUsageReport: session totals, the plan's usage rows as the server sends them, extra usage) on the assistant message that delivers a headless/usageresult - •Added
reason: "worker_restart"totask_notificationmessages when a background task was stopped by a worker process restart - •Added a one-line transcript notice when the SDK host's
StoporSessionStarthook callback times out, shown once until the host answers again - •Fixed a
Stop,SubagentStoporSessionStarthook callback that exceeds its timeout being reported as a hook failure and discarding other hooks' decisions; it now counts as no decision - •Fixed the browser SSE transport dropping the live slash-command list update (
system/commands_changed) - •Updated to parity with Claude Code v2.1.273
v0.3.271
v0.3.271
September 15, 2026
- •Added optional
omitClaudeMdtoAgentDefinitionin theagentsoption, so a subagent can run without user, project and local CLAUDE.md files; managed policy files still load - •Fixed
listSessions,getSessionMessagesandgetSessionInfowithdiron Windows not finding sessions for a directory on a mapped network drive or SUBST drive - •Fixed
sessionStoreresume losing the global config when it is stored under the legacy.config.jsonname or an OAuth-suffixed file name - •Removed
persistentfrom theMonitorInputtool type - •Updated to parity with Claude Code v2.1.271
v0.3.269
v0.3.269
September 11, 2026
- •Changed
user_message_uuid,user_message_uuidsandresume_reasonto be stamped on a turn's first complete assistant message as well as its first stream event when partial messages are on - •Fixed
result.permission_denialsomitting Read, Edit and Write calls blocked by a path-scoped deny rule - •Fixed interrupts and permission responses being delayed while a host-started MCP server OAuth sign-in waited on a slow authorization server
- •Fixed missing
tool_use_idontask_started/task_notificationwhen the CLI resumes a background subagent on its own; they now carry the agent's last call id - •Changed plan mode to route writes through
canUseTooleven whenallowDangerouslySkipPermissionsis set; the flag now only enables switching tobypassPermissionslater - •Updated to parity with Claude Code v2.1.269
v0.3.268
v0.3.268
September 10, 2026
- •Added
result_indexto result messages: the result's position in delivery order within the run, from 0 - •Added
local_commandto the result message of a turn that ran a slash command without entering the model loop, carrying the command's name - •Added
hold_on_cache_impactto thereload_pluginscontrol request (Query.reloadPlugins({ holdOnCacheImpact: true })): holds a reload that would invalidate the session's prompt cache - •Added
resume_reasonto assistant, stream-event and result messages, set only on the automatic re-run of a turn a host restart interrupted - •Added
kind(used, free, buffer, deferred) to each category in theget_context_usagecontrol response, matching the/contextresult'scontext_usagerows - •Added optional
defaultToNoandsuppressAlwaysAllowRulehints tocanUseTooloptions: the prompt should open on its decline option, or offer no persistent "always allow" choice - •Changed
setModel()to confirm a model id the CLI doesn't know locally with the API the first time a session uses it, instead of refusing it as unrecognized - •Changed
user_message_uuidon the automatic re-run of an interrupted turn to name that turn's last user prompt - •Changed the
initializesuccess response to always includepending_permission_requests(empty when nothing is pending), so clients can tell that apart from an older CLI - •Changed the task-tracking tools (TaskCreate/Get/Update/List, TodoWrite) to be default tools only on Claude 3.x, Opus 4.0–4.7, Sonnet 4.0–4.6 and Haiku 4.5; elsewhere list them in
tools/allowedTools - •Updated to parity with Claude Code v2.1.268
v0.3.267
v0.3.267
September 9, 2026
- •Added
getCcrEvent(query, message)andgetSseLastSequenceNum(query)to the browser SDK's SSE transport, plusfromSequenceNum,onCatchUpTruncatedandonDeliveryUpdateSSE options - •Changed
systemPromptrecording to default on for custom prompts and appends (a mid-session prompt change takes effect at the next compaction); passsnapshot: falseto keep per-request rendering - •Updated to parity with Claude Code v2.1.267
v0.3.265
v0.3.265
September 8, 2026
- •Added
user_message_uuidanduser_message_uuidsto a synthetic turn's first reply and result for a message sent withisSynthetic: trueand auuid, naming the message that started it - •Added
user_message_uuidanduser_message_uuidsto the first reply and the result of a turn Claude Code started itself, such as a resume, naming the messages you sent that it picked up mid-turn - •Fixed
user_message_uuidmissing from the success result of a turn that sent no API request, such as a slash command - •Fixed multi-turn sessions resetting the shell working directory to the
cwdoption at each new user message; acdmade by the agent now persists across turns, as in the interactive app - •Changed
user_message_uuidto be set on the first reply after each change of the message a turn is answering, instead of on one reply frame per turn - •Updated to parity with Claude Code v2.1.265
v0.3.261
v0.3.261
September 4, 2026
- •Added
pluginDelivery: 'initialize'to sendpluginsover stdin so the launch command line no longer grows with the plugin count (fixes Windows start failures with many plugins) - •Fixed
query()throwing "Object not disposable" in runtimes without a nativeSymbol.dispose, such as Node ≤22vmcontexts (Jest'snodeenvironment, vitestvmThreads/vmForks) and Node <18.18 - •Updated to parity with Claude Code v2.1.261
v0.3.260
v0.3.260
September 4, 2026
- •Added optional
user_message_uuidtothinking_tokenssystem messages, linking thinking progress to the user message that triggered the turn - •Added optional
first_content_frame_ms,first_stream_post_ms,first_stream_post_ack_msandfirst_stream_post_wall_msfields to the success result message for remote-session latency breakdowns - •Fixed
managedSettingsdisableAutoMode: "disable"(either spelling) being dropped by the restrictive-only filter instead of turning auto mode off for the spawned session - •Fixed
rewindFiles()reporting success when no files could be restored (for example when checkpoint backups are missing); it now fails - •Changed
error_max_structured_output_retriesresults to append the last StructuredOutput tool error; validation errors now name the offending key, allowed values, and actual length or count - •Changed
rate_limit_eventto also re-emit during an exceeded window on repeat 429s (about once per 30 seconds per limit window), so stream consumers can refresh stale rate-limit state - •Updated to parity with Claude Code v2.1.260
v0.3.259
v0.3.259
September 3, 2026
- •Added
user_message_uuidsbesideuser_message_uuidon a turn's first reply frame and result: every user message the turn answered, so a reply to several merged messages can be matched to each - •Added
permissionPrompts: 'none'option to auto-deny permission prompts in sessions with nobody to answer them, without disabling auto mode's classifier - •Updated to parity with Claude Code v2.1.259
v0.3.257
v0.3.257
September 1, 2026
- •Added
thinkingTokenstoModelUsage(a subset ofoutputTokens), and fixed result-messageusage.output_tokens_details.thinking_tokensreporting 0 instead of the session's real count - •Added
tool_use_result.resourceLinkson user messages carrying MCP tool results: theresource_linkblocks the tool returned, so hosts can render returned files without parsing the result text - •Added optional
resource_linkstotask_notificationfor an auto-backgrounded MCP tool call that completed, listing the files it returned by reference; join to the call viatool_use_id - •Fixed
mcp_reconnectandmcp_toggleacting on a same-named.mcp.json/~/.claude.jsonserver instead of the--mcp-configormcp_set_serversone - •Fixed
mcp_toggledisable also removing the tools of a sibling MCP server whose name extends the disabled one's (disablingfoodroppedfoo__bar's tools) - •Changed
mcp_set_serversto also list a server whose connection attempt throws underadded(with afailedrow inmcp_status), not only undererrors - •Changed Agent tool calls to emit the periodic
tool_progressheartbeat (heartbeat: true) like other long tools; heartbeat frames never clear asubagent_retryindicator - •Fixed the browser SDK bundle (
@anthropic-ai/claude-agent-sdk/browser) never streaming any messages on engines without nativeSymbol.dispose(Safari/iOS, Firefox ESR, older Chromium) - •Fixed a background Bash task that is still running when a stream-json session ends right after an interrupt (stdin closed) never receiving its final
task_notification - •Fixed
-pgiving up on a long-running background subagent without actually stopping it, sobackground_tasks_changedkept listing it and events for it arrived after itsstoppednotification - •Added
detailoption toQuery.getContextUsage():'summary'answers from the last response's usage and local estimates without per-category token-count API calls (default'full') - •Updated to parity with Claude Code v2.1.257
v0.3.247
v0.3.247
August 27, 2026
- •Added an optional
ambientflag totask_started,task_notificationandbackground_tasks_changedtask entries so hosts can exclude housekeeping tasks from activity indicators - •Fixed the
permissionModeon per-turnsystem/initframes reporting the mode at turn start instead of the live mode, so a mode switch right after submitting no longer sends a stale value
v0.3.246
v0.3.246
August 26, 2026
- •Added optional
user_message_uuidto error result messages and to the first assistant message orstream_eventof each turn, linking a reply or failure to the user message that triggered it - •Added
modelUsage[*].costBasis('list' | 'managed' | 'unknown') reporting which price table each model'scostUSDwas computed from - •Added
modelPricingsupport in themanagedSettingsoption for hosts that setCLAUDE_CODE_PROVIDER_MANAGED_BY_HOST; an admin-managed settings source that setsmodelPricingstill wins - •Added
perTaskStopAffordanceoption: when set,interrupt()aborts only the current turn and keeps background agents and workflows running; otherwise (and for one-shot string prompts) they stop
Showing 30 of 60