{"version":"2.1.281","anchor":"headless-commands-changed-now-also-fires-when-the-mcp-comman","canonical_anchor":"headless-commands-changed-now-also-fires-when-the-mcp-comman","heading":"Headless commands_changed now also fires when the MCP command list changes, and deduplicates","tier":null,"area":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.281\/e\/headless-commands-changed-now-also-fires-when-the-mcp-comman","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.281","markdown":"### Headless commands_changed now also fires when the MCP command list changes, and deduplicates\n\nIn headless stream-json output, commands_changed now also fires when MCP commands change, and a re-scan skips it when nothing changed\n\n**What**\n\nWhen Claude Code runs headless (driven by another program rather than a person at a terminal) with `stream-json` output, it reports a `commands_changed` system event when the list of available commands changes. That event now also fires when the commands provided by MCP servers (outside programs that give Claude extra tools and commands) change by name.\n\nA separate re-scan compares the full command list with the last one and sends nothing if the list is the same. That re-scan runs once at startup when `coldStartTimedOut` is set and `tengu_lovely_umbrella`, a server-controlled switch, is not served as true.\n\n**Why**\n\nPrograms listening to the event stream now learn about commands added or removed by MCP servers, and they are not sent duplicate events when the list has not actually changed.\n\n- Flag `tengu_lovely_umbrella`: Off in both readings (read for one account on one subscription tier against v2.1.281; this account: off, anonymous baseline: off, compiled default: not a boolean we can read) These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release."}