Follow Discord
Sweep 10 Nov 2026 · 02:18Z Build v2.1.322 539 read Stable v2.1.311 Latest v2.1.322 Next v2.1.322 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

Under the hood Internal Changes
JSON All of v2.1.281
Under the hoodTier: how much it should matter to you
1Useful: my rating, 1 to 5
2Signal: worth watching, 1 to 5
SDKArea: what it touches
Internal ChangesKind: in v2.1.281,
Internal 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