Compare
Why not just give the LLM SSH?
You can. Some people do. It works on the days it works. Here's what changes when it doesn't.
Both approaches run real commands
emisar isn't a sandbox. When the runner executes nomad job revert, it really rolls back the deploy — exactly like
SSH would. The difference is what happens before exec, and what's
left after.
# one key opens the whole box
$ nomad job revert api 17
↳ done — no who, no why, no record
$ cat /srv/api/.env
DB_PASSWORD=hunter2…
↳ now sitting in the chat scrollback
nomad.job_revert(job: api, version: 17)
reason: roll back the 502 spike
⏸ approval — nomad.job_* is gated
✓ approved · one use · recorded
↳ output redacted · hash-chained journal
Same revert.
Side-by-side
What can the LLM run?
Raw SSH
Anything in the user's shell
emisar
Only declared actions; everything else rejected
What are the args?
Raw SSH
Free-text command line
emisar
Typed, validated, redacted at the boundary
What actually ran?
Raw SSH
Whatever was on PATH that day
emisar
Content-addressed pack — the runner recomputes the SHA-256, published hashes auto-pin, and changed contents are blocked until an admin reviews them
Approvals?
Raw SSH
One chat approval can trust the SSH prefix — and every production command behind it.
emisar
Policy gates with approver email + audit; skipping means a policy change, itself audited
Audit trail?
Raw SSH
Whatever lands in .bash_history
emisar
Hash-chained JSONL on host, plus a searchable cloud audit trail
Output redaction?
Raw SSH
None — passwords leak into chat logs
emisar
20 patterns (bearer/JWT, AWS/GitHub/Slack keys, secret assignments + your custom ones) masked on the host before egress
Lateral movement?
Raw SSH
SSH key on the model's box ≈ key everywhere
emisar
Per-runner token + per-user runner scopes every API key inherits — revoke the user, every key they minted shrinks
Credential leaked?
Raw SSH
Rotate the SSH key on every host that trusts it
emisar
Revoke one scoped API key; host credentials never reached the model. MCP bridge keys are short-lived and rotated automatically
Recovery story?
Raw SSH
“Read the chat scrollback and the logs and hope”
emisar
emisar audit verify checks the retained host journal; the portal keeps inputs and output in run history, with approvals and state changes in the audit trail
When raw SSH is the right answer
Single-operator side projects, throwaway environments, dev clusters you can wipe. The cost of declaring an action pack only pays back when there's another human who needs to audit, override, or recover from the AI's decisions.
When it isn't
Production. Anything regulated. Anything where post-incident your VP of Engineering will ask "what did the model do, exactly, and on whose authority?". That's the question raw SSH can't answer without a forensic budget. emisar makes the answer a query.
Stop handing AI agents raw SSH.
The same real commands — declared, policy-gated, approval-checked, and journaled. Recovery you're not betting your weekend on.
Three runners. Seven-day audit. No credit card.