What
These changes affect headless sessions, where a program drives Claude Code through the SDK using the stream-json output mode instead of the interactive screen:
commands_changed: this system message is now sent only when the list of commands differs from the last one sent. Before, it was sent on every state change. Updates that arrive while a hold is active are deferred and replayed afterwards, and command reloads are tracked as a single in-progress task.- SDK MCP servers: MCP servers are add-on tool providers. Headless sessions now keep a record of their SDK MCP connections and close them when a server is removed, replaced, or switched off with
mcp_toggle. Before, only the connected client was cleaned up, and only on disable. If closing fails, the error "Failed to close SDK MCP server after mcp_toggle disabled it" is reported.
Why
Programs built on the SDK receive fewer redundant command-list events, and removed or replaced MCP servers no longer leave connections open.
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubt
What causes the message to be held back is not known.