Follow Discord
Sweep 25 Sep 2026 · 19:33Z Build v2.1.283 504 read Stable v2.1.274 Latest v2.1.283 Next v2.1.283 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.281 ·

SDK Query: tighter control-request lifecycle and remote-tool subtypes left unanswered

The SDK now ignores control requests after close, leaves remote-tool requests unanswered, and logs failed replies and closes

Entry
JSON All of v2.1.281
EntryKind: in v2.1.281,
ChangesSection of the release
What

The SDK is the kit for driving Claude Code from another program. Control requests are messages that program sends to steer a running session. Their handling changed in several ways:

  • Requests that arrive after the session has closed are now skipped.
  • A request's cancel handle is removed only if it still belongs to that request.
  • Success and error replies share one path, which logs "Response write failed" when a reply cannot be sent.
  • Requests of type remote_tool_call, remote_plumbing_call, remote_tools_probe and remote_tools_reannounce are deliberately left unanswered, because they are meant for the machine serving the session's tools.
  • cleanup() now logs a failed transport.close() instead of silently skipping the rest of shutdown.
  • firstResultReceivedResolve is no longer called when the stream ends.
Why

Late requests and failed replies no longer go unnoticed, and shutdown now finishes even when closing the connection fails. Remote-tool requests are left for the machine that serves the tools to answer.

See this entry in the whole of v2.1.281 →

Feedback