Real for you.
Synthetic for agents.
Keep the normal file shape and developer workflow. Change what the agent receives.
SecretHarbor gives your coding agent everything it needs to move fast—and nothing it needs to become a security incident.
curl -fsSL https://secretharbor.dev/install.sh | sh
Your agent is powerful because it can touch the whole system. SecretHarbor makes that power safe by giving it a projected world instead of your actual one.
See how the harbor works ↘postgresql://prod_admin:••••••••@aws.rds:5432/appALLOWsk_live_51Oz••••••••••••••••94F1ALLOW/var/run/ssh-agent.sockALLOWpostgresql://fake_agent:shb_sync@127.0.0.1:5432/testFAKEsk_test_shb_fake_mocked••••••••FAKE[Blocked by SecretHarbor]DENYThe agent controls its work. It does not control its security boundary. SecretHarbor intercepts capabilities at the OS and process layers, then follows every child process through the tree.
shb run -- claude
▋
The safety layer should not be another black box. Every decision has a reason, every capability has a name, and every boundary can be inspected.
Keep the normal file shape and developer workflow. Change what the agent receives.
Children, grandchildren, MCP servers, and task runners inherit the boundary — but only if the root process was started from the terminal under shb run.
Secrets and privileged local endpoints are faked or removed before the agent begins.
Allow, restrict, or deny destinations. Capability use stays explicit and auditable.
Docker and local services can be leased briefly instead of exposed without limits.
Run the attacks yourself. Eighteen live vectors show pass, fail, limited, and not tested.
Policy is a product surface. Explore a few examples, then run the same command against your own project.
Sensitive project files are virtualized with synthetic values so normal development tools keep working.
Security claims should be measurable. SecretHarbor exposes what passed, what failed, and what the current platform could not test.
Run your own audit ↘Direct reads. Python & Node interpreters. Symlinks. Path traversal. Copy & rename tricks. ptrace & core dumps. Network egress. Filesystem escape. Policy tampering.
SecretHarbor is currently in active beta development. Pre-compiled binaries for macOS, Linux, and Windows are distributed via GitHub Releases and installed only after SHA-256 checksum verification.
Install once. Initialize in your project. Keep the commands you already know.
curl -fsSL https://secretharbor.dev/install.sh | sh
shb init
claudecodexgeminicursor .shb guard off intentionally disables the guard.
cursor ., open -a Cursor .) so they inherit the SecretHarbor boundary set by shb run.
Here are the details that matter when you put a security layer between an agent and your work.
.env?+No. On macOS it runs inside an ephemeral shadow workspace and on Linux inside a mount namespace, so familiar tools still read a .env file — but the real file on disk is never modified. The agent sees format-preserving synthetic values, while your editor, shell, and test runners keep the real ones.
In fake mode, it receives synthetic, format-preserving values. In deny mode, it receives no value. The real value never enters the agent memory space or execution environment.
Standard mode intercepts common Docker and Podman sockets, asks for human approval, and can grant a short-lived capability lease instead of handing over unrestricted root socket access.
Existing processes cannot be retroactively sandboxed. Use shb adopt or shb restart to move an existing agent into a fresh protected session.
Yes. Integrations and shims make common agents convenient (Claude Code, Gemini CLI, Cursor, OpenAI Codex), but the security boundary is the OS runtime beneath them, not a system prompt inside any one agent.
Only if you launch them from the terminal. A desktop app opened by double-clicking, via Spotlight, or from the Dock starts outside the shb run process tree and receives no protection — even if shb is installed.
To bring Cursor inside the boundary: shb run -- cursor . — or just cursor . from a shell after shb init. Every child process, including the agent running inside the IDE, inherits the full kernel security boundary automatically.