Getting Started with Occasio (5 minutes)
June 5, 2026 · View on GitHub
What you get: your AI coding agent (Claude Code, Cline, …) keeps working as
usual — but it can't silently read your secrets or borrow your ssh / cloud / root
access. You approve those, and everything the agent did is in a tamper-evident log
you can verify offline.
Requires Node.js ≥ 18. Works on Windows, macOS, and Linux. No account, no cloud, no telemetry — Occasio runs entirely on your machine.
1 · Install
npm install -g @occasiolabs/occasio
occasio doctor # checks Node, the claude CLI, Python — fix anything red
2 · Turn on the identity gate
occasio init --template strict
Writes ~/.occasio/policy.yml — the strict posture: deny secret / environment
reads, and gate ssh / az / sudo behind your approval. (Want a lighter start?
occasio init writes the dev-default policy instead.)
3 · Run your agent through Occasio
Zero setup — just prefix your normal command:
occasio claude "fix the failing test"
Everything the agent does now passes through the gate. To make it permanent so you
can type plain claude, run occasio register once (it adds a shell alias —
restart your shell afterwards).
4 · What happens when the agent reaches for something sensitive
It keeps working normally — Occasio only steps in at the dangerous moment:
- It reads
.envor runsprintenv→ blocked. The secret never leaves your machine; the agent sees[REDACTED]. - It tries
ssh deploy@prod(oraz,sudo) → paused, with:Denied … requires human approval — occasio approvals approve apr_… --once.
You decide, from your own terminal:
occasio identity set --id you # one-time: who you are (for the audit trail)
occasio approvals approve apr_… --once # authorize this one command, once
The agent's retry now goes through once, and is consumed. A different command, or a second attempt, is blocked again. The agent cannot approve itself — that is the whole human-vs-agent point.
5 · See it, and prove it
occasio eyes # live browser view: what's leaving your machine, secrets redacted
occasio audit verify # cryptographic proof of everything the agent did and was stopped from
The audit chain is independently verifiable — a bundled Python walker
(docs/audit_walker.py) re-checks it without trusting Occasio's own verifier.
Optional · Guard sessions that don't go through the proxy
occasio hook --install # a PreToolUse hook in Claude Code, as a second line of defense
This catches identity-borrow commands even when the agent isn't run through the
proxy. (See docs/hook-smoke-test.md to verify it end-to-end.)
Honest notes (so this is real, not marketing)
- Approval is out-of-band on purpose. You approve in your terminal; the agent cannot approve itself (the control plane is in its deny-zone, the token is HMAC-signed). That asymmetry is the human-vs-agent boundary.
- It's a deterministic policy + verifiable audit, not a sandbox. It stops the
common, innocent mistakes (an agent "being helpful" and reaching for a secret or
the server). A determined adversary using runtime tricks (encoded reads, a renamed
binary) is a documented limit — the real boundary there is OS-level isolation. See
docs/identity-gate.mdfor the full threat model. occasio registeredits your shell profile. Restart the shell, or just useoccasio claude …directly.
Every command above is verified against the published @occasiolabs/occasio@0.12.0.