Threat model

This public case study treats AI agents as untrusted, tool-wielding workloads. The platform assumes an agent can be misdirected by untrusted input or compromised through its tools, dependencies, runtime, or operator workflow.

Assets

Asset Why it matters
Operator intent and policy The system must distinguish approved authority from prompt-driven behavior.
Sandbox state Files, sessions, task state, and local caches may contain sensitive or integrity-critical data.
Provider credentials Model/tool-provider credentials must not be copied into the sandbox or public receipts.
Runtime boundary A compromised agent should not become a compromised host or sibling workload.
Tool surface Shell, file, browser, network, messaging, and orchestration tools can create real-world effects.
Evidence receipts Operators need reliable proof for denied crossings, provider routing, rollback, and non-claims.

Actors

Actor Capability
Prompt-injection attacker Supplies content that tries to steer the agent into unsafe tool use or data exfiltration.
Compromised agent workload Executes unexpected tool calls or attempts lateral movement.
Malicious dependency or artifact Enters through package install, image build, or copied runtime assets.
Mistaken operator Runs the wrong command, deploys the wrong revision, or skips rollback proof.
Network attacker Attempts unauthorized access to exposed endpoints or relies on unexpected outbound reachability.
Repository attacker Attempts to alter workflows, scripts, manifests, or docs to weaken validation.

Trust boundaries

public input / operator intent
        |
        v
policy and promotion boundary
        |
        v
OpenShell sandbox running Hermes Agent
        |                         |
        v                         v
rootless Podman runtime      managed provider boundary
        \                         /
         v                       v
       NUC-class VM substrate and evidence receipts

Boundary rules:

Primary threats and controls

Threat Control
Prompt injection triggers unsafe tools Explicit tool/data gates, risk tiers, human approval for sensitive writes, audit events.
Agent exfiltrates data over the network Default-deny egress, SSRF/lateral/DNS negative tests, managed provider path.
Provider credential lands in sandbox Secrets by reference, placeholder-in-sandbox configuration, host/provider-side resolution.
Agent escapes into host or sibling workload OpenShell sandboxing, rootless Podman posture, NUC-class VM substrate, bounded mounts.
Runtime drift or stale claims Status checks, exact revision/artifact identifiers, receipts, and non-claim sections.
Secret exposure in git/logs/images .gitignore, public-safety scan, manual declassification review, no raw values in receipts.
Broken rollback Rollback target and recovery evidence required before production-ready language.
CI or docs drift preserves stale architecture Docs contract tests and architecture-language lint should enforce current public terminology.

Current limitations

Security invariants

These requirements should not be waived for production use: