Skip to main content

LASSO

Run AI coding agents safely inside sandboxed Docker containers.

LASSO wraps Claude Code, OpenCode, and other AI agents in isolated containers with command filtering, network control, and tamper-evident audit logging. Every action the agent takes is controlled and recorded.

Quick Start

pip install lasso-sandbox

# Pre-build images (one time, ~2 min)
lasso prebuild

# Start coding with Claude Code
lasso up --agent claude-code --dir ~/my-project

# Or start from the dashboard
lasso dashboard

That's it. Claude Code opens in a sandboxed terminal with your project files mounted.

What It Does

When an AI agent runs inside LASSO:

  • Dangerous commands are blocked — rm, docker, sudo, ssh, nc, and 30+ others can't execute
  • Network is controlled — only package registries and AI APIs are reachable (configurable)
  • Files are isolated — the agent can only see your project directory, nothing else
  • Everything is logged — every command is recorded with tamper-proof signatures
  • Your code stays on your machine — files are mounted from your computer, never copied into the container

Commands

lasso up                              # Start a sandbox (auto-detect agent + profile)
lasso up --agent claude-code          # Start with Claude Code
lasso up --agent opencode             # Start with OpenCode
lasso down                            # Stop all sandboxes

lasso shell --agent claude-code       # Create sandbox + drop into terminal
lasso attach <id>                     # Reconnect to a running sandbox
lasso status                          # List running sandboxes
lasso stop <id>                       # Stop a sandbox

lasso why "pip install requests"      # Check if a command would be allowed
lasso dashboard                       # Open the web dashboard
lasso prebuild                        # Pre-build container images

Dashboard

The web dashboard is the easiest way to use LASSO:

lasso dashboard
# Opens at http://127.0.0.1:8080

From the dashboard you can:

  • Create sandboxes with one click (pick agent + security profile)
  • Open a terminal window connected to any running sandbox
  • View and edit security profiles visually
  • Browse activity logs
  • Create custom profiles with the profile editor

Security Profiles

LASSO comes with 5 built-in profiles:

Profile Commands Internet Best For
standard Block dangerous, allow rest Package registries + AI APIs Everyday coding
open Block dangerous, allow rest Full internet Research, browsing docs
offline Block dangerous, allow rest None Sensitive data work
strict Approved commands only None Compliance-critical work
evaluation Read-only only None Testing untrusted agents

Create custom profiles via the dashboard or TOML files:

# team-secure.toml
extends = "strict"
name = "team-secure"

[commands.blocked_args]
git = ["push --force", "config --global"]

How It Works

lasso up --agent claude-code --dir ~/my-project

1. Loads the "standard" security profile
2. Creates a Docker container from a pre-built image
3. Mounts ~/my-project as /workspace (read-write)
4. Mounts ~/.claude for authentication (read-write)
5. Applies network firewall rules (iptables)
6. Starts Claude Code inside the container
7. Logs everything to a tamper-evident audit trail

Inside the container:
- Non-root user (uid 1000)
- Read-only root filesystem
- All capabilities dropped
- No new privileges allowed
- Database ports blocked
- Cloud metadata blocked

Container Security

Note: In interactive mode (lasso up, lasso shell), the agent has a raw PTY inside the container. The command gate and per-command audit logging apply only to lasso exec commands. Interactive sessions rely on container-level isolation (cap_drop ALL, no-new-privileges, read-only root, network policy).

Every sandbox has these protections:

  • cap_drop: ALL — no Linux capabilities
  • no-new-privileges — prevents privilege escalation
  • Read-only root filesystem
  • Non-root user (uid 1000)
  • Resource limits (memory, CPU, PIDs)
  • Database port blocking (PostgreSQL, MySQL, MSSQL, etc.)
  • IPv4 + IPv6 firewall rules
  • iptables binaries removed after rule setup

Audit Trail

Every command is logged with HMAC-SHA256 signatures in a hash chain:

lasso audit view audit/<id>.jsonl     # View the audit trail
lasso audit verify audit/<id>.jsonl   # Verify chain integrity

Each entry records: timestamp, command, outcome (allowed/blocked), reason, and a tamper-proof signature.

Extra Folder Mounts

Mount additional directories into the sandbox:

# Read-write mount
lasso shell --agent claude-code --dir ~/project --mount ~/data:/data

# Read-only mount for shared context
lasso shell --agent claude-code --dir ~/project --mount ~/team-docs:/context:ro

Requirements

  • Python 3.10+
  • Docker Desktop or Podman
  • ~2 GB disk for container images

Install

# From PyPI
pip install lasso-sandbox

# With all extras (dashboard + Docker SDK + keyring)
pip install lasso-sandbox[all]

# From source
git clone https://github.com/ClawWorksCo/lasso-sandbox.git
cd lasso-sandbox
pip install -e ".[all]"

License

Apache 2.0

Metadata

Release files for lasso-sandbox 1.6.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lasso-sandbox 1.6.3
File Size Uploaded
lasso_sandbox-1.6.3.tar.gz 227.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lasso-sandbox 1.6.3
File Interpreter ABI Platform
lasso_sandbox-1.6.3-py3-none-any.whl Python 3 none any Details

Total release size: 478.6 kB

Release files / lasso_sandbox-1.6.3.tar.gz

Download URL lasso_sandbox-1.6.3.tar.gz
Size 227.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1376e718a5f091ce7c5ba2f1d63476b95d8904cd944e0298c5cb74bc5571112a
BLAKE2b-256 checksum
How to use checksums
1e90200a7b2e369af6a8704af975dbb060a1cb99574812e29738a98ba74e1a28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release files / lasso_sandbox-1.6.3-py3-none-any.whl

Download URL lasso_sandbox-1.6.3-py3-none-any.whl
Size 251.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7eebc5248d7af4d361bf233bcb96a433720dd11310c7cf09bca1a6c0a7fdbb4a
BLAKE2b-256 checksum
How to use checksums
bc47c95e4043a2e915865c719d038fb1dfd8de0f7e1cabcdae83945890178ee0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

1.6.3 This release

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.5

2 release files

1.4.4

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.0.0

2 release files

0.5.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page