Sandboxed agent supervision

Govern your AI coding agent

Sandbox it. Verify its work. Approve before it lands.

skep launch demo 6.6 sec
Skep terminal demo showing inline shell approval, review, branch approval, and a remembered approval template on the next run.
Transcript
  1. $ skep run ~/code/demo "add a health endpoint" --execution-mode workspace
  2. worker started in isolated worktree skep/019f...
  3. approval needed: shell.run
  4. reason: shell.run requires approval for command: python -m pytest
  5. [a] approve once [b] approve + remember [d] deny [s] skip
  6. > b
  7. resumed: original -> resumed-1
  8. re-verify: passed on clean copy
  9. review: patch + evidence ready
  10. approved: patch applied on branch skep/019f...
  11. saved template: health-endpoint
  12. $ skep run ~/code/demo "add a status endpoint" --execution-mode workspace
  13. matched template: health-endpoint (shell: python -m pytest)
  14. completed without new approvals

The risk

Raw coding agents move fast and wide

They can mutate repos directly

Agents can edit, commit, or push before you have reviewed the actual diff.

They can run broad commands

Package installs, shell commands, and network calls need a boundary.

They can overstate verification

A model saying "tests passed" is not the same as an independent check.

The control plane

Skep puts the agent behind a contract

Sandbox

OS-level containment

macOS Seatbelt and Linux bubblewrap keep writes and network inside policy.

Verify

Evidence over claims

Skep re-runs checks on a clean copy before you see the result.

Approve

Patch-first review

The agent produces a patch. You approve the branch when the evidence holds.

Audit

Durable run history

Events, commands, approvals, artifacts, and decisions are queryable later.

Flow

From prompt to review branch

  1. 1 run
  2. 2 sandbox
  3. 3 worker edits
  4. 4 re-verify
  5. 5 review
  6. 6 approve branch

Quickstart

Run your first supervised task

Install
pip install skep
Run and review
skep run /path/to/repo "fix the failing test" --execution-mode workspace
skep status --personal
skep review <task_id>
skep review <task_id> --approve

Linux sandboxing requires bubblewrap. Claude Code users can run with --worker-cmd "python -m skep.workers.claude_code". Prefer source? git clone https://github.com/Anmolnoor/skep.git and uv sync --frozen work too.

Why it is different

Skep adds the missing control loop

Capability Raw coding agent Agent Safehouse Cursor sandbox Skep
Sandbox boundary Depends on the agent Primary focus Editor-owned Supervisor-owned
Independent verification Usually absent Not the core loop Editor-dependent Required evidence
Patch approval Optional Outside the wrapper Editor workflow Default landing path
Audit trail Fragmented logs Sandbox-level logs Editor history Durable run store

Workers

Use the agent you already trust

Claude Code

--worker-cmd "python -m skep.workers.claude_code"

Custom contract worker

SKEP_WORKER_CMD="your-skep-worker"

Codex and Aider

--worker-cmd "python -m skep.workers.codex"

Documentation

Read the docs

How it works

The Queen/worker split, the contract, and the life of a task.

Sandboxing

Seatbelt and bubblewrap; the network allowlist boundary.

Full index

Every doc, curated — concepts, reference, releasing, decisions.