Tor is down
The declared route is unreachable. The run stops. It does not retry over clearnet, and it does not queue the message for later.
MRD-0201 route_unavailable
Threat model
An agent reads untrusted text and then acts with your credentials. Sooner or later it will be talked into something. hermes-mordred is built so that the worst outcome of that is a refusal, not a leak.
Trusted
Not trusted
Untrusted
Assumed hostile, or one prompt away from it.
Policy — hermes-mordred
Any ✗ stops the run. It never downgrades to a weaker path.
Trusted — hardware
The private key is generated here and never leaves. Signatures come out; key material does not.
A claim you cannot verify from your own terminal is marketing. Each row below ends in a command.
| Guarantee | How it is enforced | How you verify |
|---|---|---|
| The private key never leaves the device. | Generated in the Enclave/TPM with export disabled at creation. Signing happens behind the platform helper. | mordred keyvault attest |
| Traffic only goes where you declared. | Egress is denied by default; the run inherits one route from policy and cannot open another. | mordred network show |
| Gateways carry ciphertext only. | Message bodies are sealed to the recipient key before the transport client is handed anything. | mordred e2e inspect --last |
| Secrets do not reach remote inference. | Prompts are scanned on the way out; a match halts the call rather than redacting silently. | mordred guard test |
| Nothing runs with a broken guarantee. | Startup evaluates the whole policy; an unmet clause aborts the run with a reason code. | hermes-mordred status |
[TBD]Final subcommand names pending CLI freeze.
Three ordinary situations. In each one the safe move is to stop, say why, and leave the decision to you — never to continue on a weaker path because it was more convenient.
The declared route is unreachable. The run stops. It does not retry over clearnet, and it does not queue the message for later.
MRD-0201 route_unavailable
The agent pasted a credential into context. The call to the provider never opens; the matched span is named in the log, not its value.
MRD-0142 secret_in_prompt
Disk is full or the log key is unavailable. Unrecorded work counts as unsafe work, so the run stops there too.
MRD-0310 audit_unwritable
[TBD]Reason-code numbering to be confirmed against the implementation.
Append-only, encrypted to the device key, and written before the action it describes. It records decisions and reasons — never the secret that triggered them.
mordred audit tail
The honest half of a threat model. If your adversary is on this list, hermes-mordred is not enough on its own.
Everything here assumes the OS is honest.
A route can hide content and destination; it cannot hide that you are working at 3am.
End-to-end encryption ends at someone else's screen.
Hardware keys stop extraction, not use.
The guard can refuse; it cannot overrule you.
[TBD]Engineering to confirm this list before launch.
Report it privately. We answer within 72 hours and credit reporters who want it.
Verify it yourself