Ssn banner
JasonOA888 JasonOA888

Ssn

Security community

Description

A System Security Number for every AI agent — its own Unix identity (private $HOME, workspace, scrubbed env, no net by default), plus a journal of everything it did. The box is disposable; the identity is permanent.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

ssn

**A System Security Number for every AI agent.**

Your AI agent runs commands on your machine with *your* user, *your* home directory, *your* environment variables full of API keys. `ssn` gives it what it actually deserves: its own identity — a private `$HOME`, a workspace, a scrubbed environment, no network by default, and a journal of everything it did. The box is disposable. **The identity is permanent.**

你不需要"相信"这个 Agent。你只需要把它当成一个普通、但不太靠谱的用户。 给它上户口:自己的家、自己的账号、自己的流水账。

$ ssn create researcher --owner $USER
issued SSN for "researcher" (owner jason)
home: /home/jason/.ssn/agents/researcher/home

$ ssn run researcher --workdir ~/code/myrepo -- claude -p "fix the tests"

$ ssn log researcher --since 1h
2026-09-01T21:14:03+08:00 run.start agent=researcher argv=["claude","-p","fix the tests"] workdir=...
2026-09-01T21:19:47+08:00 run.end   agent=researcher argv=["claude","-p","fix the tests"] exit=0 duration_ms=344213

The three-line acceptance test

If these three lines don't behave as shown, `ssn` is broken. They run in CI on every push ([`internal/runner/integration_linux_test.go`](internal/runner/integration_linux_test.go)):

ssn create researcher
ssn run researcher --workdir . -- sh -c 'echo HOME=$HOME; ls /home; \
  (exec 3<>/dev/tcp/1.1.1.1/443) 2>/dev/null && echo NET_OK || echo NET_FAIL'

Expected: `HOME=/home/agent`, `/home` contains only `agent` (your real home is not hidden — it is **not mounted**), and `NET_FAIL`.

How it works

v0 is a thin, auditable wrapper around [bubblewrap](https://github.com/containers/bubblewrap) (Linux user namespaces — the same machinery Flatpak uses):

┌─ what the agent sees ──────────────────────┐
│ /home/agent    ← its own home (rw)         │
│ /workspace     ← your repo, bind-mounted   │
│ /usr /etc ...  ← the OS, read-only         │
│ $HOME=/home/agent, env scrubbed, no keys   │
│ no network (unless --allow-net)            │
│ its own pid/ipc/uts namespaces             │
└──────────