In NousResearch/hermes-agent commit f9728af5e, Hermes adds an authenticated runtime-readiness collector that reports state, configuration, provider, disk, gateway, scheduler, and queue checks. A health check is useful only when it tells an operator what they can trust; it is dangerous when collecting that answer becomes a new way to expose credentials, task data, or a broken database.
The first angle was “Hermes added a health endpoint.” The code changes the meaning. The endpoint is authenticated, returns only status and bounded counts, and makes deliberate decisions about what a probe must not do: it opens the state database read-write so it cannot create or repair one, checks config syntax without returning config values, and reports queue depths without examining queue payloads.
Readiness is not a repair tool
The new gateway/readiness.py assembles checks for the state database, configuration, selected provider, disk, gateway state, scheduler, and background queues. The API route calls that collector only after gathering counts for active API runs, process completions, and delegations. Its own docstring draws the boundary: the detailed surface must expose neither paths, credentials, commands, payloads, nor exception messages.
That is more than an omission list. The SQLite probe uses mode=rw precisely so a readiness request will not create or “heal” a missing database. It runs a quick integrity check and immediately rolls back an immediate transaction. A malformed configuration becomes a degraded status; it does not become an invitation for a diagnostic endpoint to rewrite it.
The tests are part of the claim
The accompanying tests make the contract inspectable: a healthy temporary runtime reports checks and queue counts, while an invalid configuration and stopped gateway degrade the result without modifying the malformed file. The practical consequence is a compact signal operators can automate around; maintainers avoid turning “are you alive?” into a privileged debugging backdoor.
The commit proves an implementation and tests, not that the endpoint is deployed, that every provider behaves the same way, or that this policy eliminates all operational leakage. The next meaningful signal is whether the authenticated surface is documented with an operator action for each degraded state—and whether production users can distinguish a full queue from a failed runtime without ever inspecting the work inside it.