Skip to main content

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 fireReason to the task-notification SDKMessageOrigin; a local host's declared scheduled-task fire is honored only in a process it started with CLAUDE_CODE_HOST_SCHEDULED_RUN=1
  • Added verbatimPrompts option: prompts are delivered as written — no @path expansion, no slash-command dispatch and, on current CLIs, no ambient attachments with the prompt (Claude Code 2.1.248+)
  • Added _meta to mcpServerStatus() tool entries, carrying a tool's MCP Apps ui metadata so a host can find its ui:// resource
  • Added readMcpResource() (alpha) to read an MCP Apps ui:// 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 emits rate_limit_event (rejected, resetsAt) as it begins; api_retry heartbeats continue while sub-agent work waits
  • Changed session_state_changed events (CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS=1) to report requires_action while 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.278New

v0.3.278

September 19, 2026

  • Updated to parity with Claude Code v2.1.278
v0.3.277New

v0.3.277

September 18, 2026

  • Added an optional builtin field to SlashCommand, set when a command is built into Claude Code
  • Added pasted_content to SDKUserMessage: 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 an updateSettings() source, accepting only effortLevel, which is saved for the session's current model as /effort saves it
  • Fixed a resumed or forked session's total_cost_usd, modelUsage and get_usage totals starting at zero instead of continuing from the earlier turns (maxBudgetUsd is unchanged)
  • Changed SDKUsageReport usage rows to always carry severity and is_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.276New

v0.3.276

September 18, 2026

  • Updated to parity with Claude Code v2.1.276
v0.3.275New

v0.3.275

September 18, 2026

  • Fixed a deferred tool call's result being emitted with internal keys such as toolUseResult instead of tool_use_result when the tool re-runs at the start of a resumed turn
  • Fixed getSessionMessages() and forkSession() sometimes missing a turn's assistant message when called right after the turn's result message
  • Fixed forkSession({ upToMessageId }) rejecting a client-supplied SDKUserMessage.uuid that is not in UUID format
  • Fixed forkSession rejecting the id that getSessionMessages returns 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_reason to the error result a stream-json run writes before exiting on a known startup failure
  • Added mcpServer: {name, source} to canUseTool options, mcp_server to tool hook inputs, and source to MCP server status rows, so hosts can key trust on source === "sdk"
  • Added CLAUDE_CODE_MCP_STARTUP_WAIT_MS (pass via env) to bound or disable (0) the first-turn wait for connecting MCP servers
  • Added CLAUDE_CODE_EMIT_STARTUP_TIMING=1 for stream-json hosts: the session's first system/init then carries the per-phase startup_timing breakdown 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.mcpServers servers are still awaited
  • Changed queued background-task completions to share one model call: each still gets its own result, all but the last empty with num_turns: 0
  • Updated to parity with Claude Code v2.1.274
v0.3.273

v0.3.273

September 15, 2026

  • Added a usage_report sibling (SDKUsageReport: session totals, the plan's usage rows as the server sends them, extra usage) on the assistant message that delivers a headless /usage result
  • Added reason: "worker_restart" to task_notification messages when a background task was stopped by a worker process restart
  • Added a one-line transcript notice when the SDK host's Stop or SessionStart hook callback times out, shown once until the host answers again
  • Fixed a Stop, SubagentStop or SessionStart hook 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.272

v0.3.272

September 15, 2026

  • Updated to parity with Claude Code v2.1.272
v0.3.271

v0.3.271

September 15, 2026

  • Added optional omitClaudeMd to AgentDefinition in the agents option, so a subagent can run without user, project and local CLAUDE.md files; managed policy files still load
  • Fixed listSessions, getSessionMessages and getSessionInfo with dir on Windows not finding sessions for a directory on a mapped network drive or SUBST drive
  • Fixed sessionStore resume losing the global config when it is stored under the legacy .config.json name or an OAuth-suffixed file name
  • Removed persistent from the MonitorInput tool type
  • Updated to parity with Claude Code v2.1.271
v0.3.270

v0.3.270

September 12, 2026

  • Updated to parity with Claude Code v2.1.270
v0.3.269

v0.3.269

September 11, 2026

  • Changed user_message_uuid, user_message_uuids and resume_reason to 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_denials omitting 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_id on task_started / task_notification when 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 canUseTool even when allowDangerouslySkipPermissions is set; the flag now only enables switching to bypassPermissions later
  • Updated to parity with Claude Code v2.1.269
v0.3.268

v0.3.268

September 10, 2026

  • Added result_index to result messages: the result's position in delivery order within the run, from 0
  • Added local_command to 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_impact to the reload_plugins control request (Query.reloadPlugins({ holdOnCacheImpact: true })): holds a reload that would invalidate the session's prompt cache
  • Added resume_reason to 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 the get_context_usage control response, matching the /context result's context_usage rows
  • Added optional defaultToNo and suppressAlwaysAllowRule hints to canUseTool options: 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_uuid on the automatic re-run of an interrupted turn to name that turn's last user prompt
  • Changed the initialize success response to always include pending_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) and getSseLastSequenceNum(query) to the browser SDK's SSE transport, plus fromSequenceNum, onCatchUpTruncated and onDeliveryUpdate SSE options
  • Changed systemPrompt recording to default on for custom prompts and appends (a mid-session prompt change takes effect at the next compaction); pass snapshot: false to keep per-request rendering
  • Updated to parity with Claude Code v2.1.267
v0.3.266

v0.3.266

September 9, 2026

  • Updated to parity with Claude Code v2.1.266
v0.3.265

v0.3.265

September 8, 2026

  • Added user_message_uuid and user_message_uuids to a synthetic turn's first reply and result for a message sent with isSynthetic: true and a uuid, naming the message that started it
  • Added user_message_uuid and user_message_uuids to 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_uuid missing 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 cwd option at each new user message; a cd made by the agent now persists across turns, as in the interactive app
  • Changed user_message_uuid to 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.263

v0.3.263

September 6, 2026

  • Updated to parity with Claude Code v2.1.263
v0.3.261

v0.3.261

September 4, 2026

  • Added pluginDelivery: 'initialize' to send plugins over 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 native Symbol.dispose, such as Node ≤22 vm contexts (Jest's node environment, vitest vmThreads/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_uuid to thinking_tokens system 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_ms and first_stream_post_wall_ms fields to the success result message for remote-session latency breakdowns
  • Fixed managedSettings disableAutoMode: "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_retries results to append the last StructuredOutput tool error; validation errors now name the offending key, allowed values, and actual length or count
  • Changed rate_limit_event to 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_uuids beside user_message_uuid on 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.258

v0.3.258

September 2, 2026

  • Updated to parity with Claude Code v2.1.258
v0.3.257

v0.3.257

September 1, 2026

  • Added thinkingTokens to ModelUsage (a subset of outputTokens), and fixed result-message usage.output_tokens_details.thinking_tokens reporting 0 instead of the session's real count
  • Added tool_use_result.resourceLinks on user messages carrying MCP tool results: the resource_link blocks the tool returned, so hosts can render returned files without parsing the result text
  • Added optional resource_links to task_notification for an auto-backgrounded MCP tool call that completed, listing the files it returned by reference; join to the call via tool_use_id
  • Fixed mcp_reconnect and mcp_toggle acting on a same-named .mcp.json / ~/.claude.json server instead of the --mcp-config or mcp_set_servers one
  • Fixed mcp_toggle disable also removing the tools of a sibling MCP server whose name extends the disabled one's (disabling foo dropped foo__bar's tools)
  • Changed mcp_set_servers to also list a server whose connection attempt throws under added (with a failed row in mcp_status), not only under errors
  • Changed Agent tool calls to emit the periodic tool_progress heartbeat (heartbeat: true) like other long tools; heartbeat frames never clear a subagent_retry indicator
  • Fixed the browser SDK bundle (@anthropic-ai/claude-agent-sdk/browser) never streaming any messages on engines without native Symbol.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 -p giving up on a long-running background subagent without actually stopping it, so background_tasks_changed kept listing it and events for it arrived after its stopped notification
  • Added detail option to Query.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.252

v0.3.252

August 31, 2026

  • Updated to parity with Claude Code v2.1.252
v0.3.251

v0.3.251

August 28, 2026

  • Updated to parity with Claude Code v2.1.251
v0.3.250

v0.3.250

August 28, 2026

  • Updated to parity with Claude Code v2.1.250
v0.3.248

v0.3.248

August 28, 2026

  • Added a per-server timeout for SDK-hosted MCP servers (createSdkMcpServer({ timeout })), overriding MCP_TOOL_TIMEOUT for that server's tool calls
v0.3.247

v0.3.247

August 27, 2026

  • Added an optional ambient flag to task_started, task_notification and background_tasks_changed task entries so hosts can exclude housekeeping tasks from activity indicators
  • Fixed the permissionMode on per-turn system/init frames 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_uuid to error result messages and to the first assistant message or stream_event of 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's costUSD was computed from
  • Added modelPricing support in the managedSettings option for hosts that set CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST; an admin-managed settings source that sets modelPricing still wins
  • Added perTaskStopAffordance option: when set, interrupt() aborts only the current turn and keeps background agents and workflows running; otherwise (and for one-shot string prompts) they stop
v0.3.245

v0.3.245

August 25, 2026

  • Updated to parity with Claude Code v2.1.245
v0.3.241

v0.3.241

August 23, 2026

  • Updated to parity with Claude Code v2.1.241
v0.3.240

v0.3.240

August 22, 2026

  • Updated to parity with Claude Code v2.1.240
Showing 30 of 60