We pointed the classifier at a domain it had never been tuned for, and it immediately made a dangerous mistake. This is the most useful thing we learned building NitroWatch, so it gets told rather than buried.
The classifier was written and tested against a billing vocabulary. To check whether it generalised, we ran it over an infrastructure server. One result stopped us.
read scale_deployment matched read-only verb "count"
scale_deployment was classified read. In NitroWatch, read means autonomous from birth. It runs immediately, forever, with no approval. A tool that resizes production deployments would have run completely unsupervised.
The classifier was reading the tool name and its description as one bag of words. The description said "change the replica count of a deployment", and count is in the read-verb list. One noun in a sentence of prose was enough to grant a mutating tool permanent unattended execution. The same flaw hit rotate_credentials, which matched set in "invalidate the previous set".
The name is authoritative
A name is written to state what a tool does. A description is prose. They are no longer read as one bag of words, so a noun buried in a sentence cannot decide a tier.
Descriptions may only escalate
Prose can reveal a tool is more dangerous than its name suggests. A cleanup tool that "permanently deletes" really is irreversible. It can never argue one down to read.
Rule two is a security property, not a bug fix
If a description could lower a tool's tier, the description becomes an attack surface. Anyone who controls the text of a tool, including the author of a third-party MCP server you connected, could write prose designed to talk NitroWatch into treating delete_everything as read-only.
Under the current rules that is impossible. The worst a hostile description can do is make a tool look more dangerous than it is, which fails safe. The same principle governs the optional LLM classifier: when the model and the heuristic disagree, the more dangerous verdict always wins.
It cost one test run against an unfamiliar vocabulary, and it is now locked in by a regression test asserting scale_deployment can never be classified read. We would rather ship a governance tool that has been caught failing and fixed than one that was never tested outside the domain it was written for.