df27876a8f
An unset risk is treated as destructive by the agent approval gate. Only test_connection carried one, so the other 83 commands — get-threats, get-alerts, count-agents, every lookup in the package — sat behind the same gate as isolate-agent and run-remote-script. A gate that stops everything stops being read as a signal. The package was the marketplace's worst on this: 2 of 86 commands annotated, where all 180 packages declare some and 57 declare them throughout. The next weakest is panos at 2 of 10. 39 read, 22 safe_write, 24 destructive. The line drawn for destructive is impact on the estate, not reversibility — isolate-agent is reversible and is the canonical destructive example: - what removes detection or protection: creating an exclusion, disabling or editing a STAR rule (an edit can silently narrow a rule to match nothing) - what adds blocking: the hash blocklist, a firewall rule - what changes containment in either direction: isolate and reconnect both, since undoing containment mid-incident is its own decision - what reboots or shuts a host down: shutdown, uninstall, enable-agent (it takes an optional reboot), move-agent (it changes the applied policy) - every delete, including removals from the blocklist and the exclusions Authoring detection content in a customer console is a change to that console, so the whole STAR rule lifecycle is gated: create as well as update, disable and delete. Draft status is one click from live and does not earn a lower tier. Additive threat intel stays safe_write: creating an IOC or enabling an existing STAR rule widens what the console sees, which is not the direction that needs a gate. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>