Vibeleaderboard
Index / tool
Visit droprun.sh
Category
Developer Tools
Rank
No. 1125Tools index

Previous survey · No. 1107 ·

Type
TOOL
Use case
Security & Identity
GitHub
400 stars
Latest release
v0.3.2
Date

About

Drop is a rootless Linux sandboxing tool that isolates third-party programs so a compromised dependency can't reach the rest of the system. Each environment gets its own disposable home directory with only selected config files mounted read-only from the real home, enforced through Linux namespaces (user, mount, network, PID, IPC, cgroup) rather than the convention-based isolation of tools like virtualenv, with an optional gVisor user-space kernel to add protection against host kernel escape exploits.

At a glance

Drop is a rootless Linux command-line sandbox for running coding agents or untrusted packages inside your existing setup. Each environment gets its own separate home directory that persists across runs. Chosen config files are mounted read-only, the project folder stays writable, and .git is read-only. Linux namespaces enforce the isolation, localhost services are blocked by default, and an optional gVisor mode keeps programs off the host kernel.

Good fit

A Linux developer who wants to run an agent with permission prompts off, or install from npm or PyPI, without rebuilding their toolchain in a container. The project's tour walks through running Claude Code (Anthropic) inside a Drop environment.

Consider something else when

You are on macOS or Windows. Also skip it if you need sound, setuid programs, Podman or Snap software inside the sandbox, or GUI apps (they only run if you grant broad access). For reproducible server images the README points to Docker, and for shipping desktop apps to Flatpak or Snap.

Start here

Install passt. On Ubuntu 24+ apply the AppArmor config, and on Fedora the SELinux config, before running anything. Put the binary on your PATH, then run drop init and drop run. The generated base config exposes files such as git and cargo config, which can hold tokens. Check base.toml for secrets first.

Cost and requirements

Apache 2.0, with prebuilt Linux binaries for amd64 and arm64. Install the passt/pasta package for isolated networking; using the optional gVisor runtime needs additional setup. Ubuntu and Fedora require the distribution-specific configuration described in the installation guide.

Limits to know

The project directory remains writable by default, so sandboxing does not protect your working files from edits. Read-only configuration files can still reveal secrets to a sandboxed program. Review the mounts in base.toml; for work that needs no internet, disable networking with mode = "off" in the [net] configuration.

Read the source review

What it does

A command-line wrapper you put around a terminal session so that anything run inside, including a coding agent, works in a walled-off copy of your machine. You create an environment per project, step into it, and keep using the programs and username you already have. The current project folder stays writable, its git history stays locked, secrets like your SSH keys simply are not there, and outbound traffic passes through a separate network stack that blocks local services by default.

Why it's ranked here

Agents and package installs now run arbitrary code on developer laptops, and most sandboxes make you rebuild your toolchain inside a container first. Drop takes the opposite bet: reuse the host's installed software, hide everything sensitive, and need no root. The code backs the claims. It refuses to start as root, discards every privilege before handing over control, and blocks the same sensitive system entries a standard container runtime does. Apache 2.0, written in Go, shipped as a single prebuilt binary for x86 and ARM.

What's good

The generated defaults are opinionated in useful ways. Shell startup files are exposed but never writable, because the host runs them and a writable copy would let sandboxed code plant commands outside. Package managers such as uv, pipx, cargo and Go can use host-installed tools while new installs land in a sandbox-only location. Published ports bind to localhost unless you ask otherwise, and the config comments warn plainly when an option like automatic port publishing exposes the machine. Non-terminal input and output are piped rather than handed over directly, so sandboxed code cannot rewrite them.

Tradeoffs

Terminal only: GUI apps, sound, setuid programs, Podman and Snap-installed software do not run inside. Isolated networking depends on the separate pasta package, and Ubuntu 24 and Fedora need extra AppArmor or SELinux setup. Read-only mounts that cover every nested mount need a kernel of at least 5.12. Outbound connection filtering exists only behind an in-progress feature flag, so by default a sandboxed program can still reach any remote host. Self-update is not built yet; the update command only checks.

How to use it well

Best for one developer running an AI coding agent or untrusted dependencies on a Linux workstation who wants containment without maintaining a container image. Run the generated base config past your own eyes first: the default list exposes files like your git config and cargo config, which can hold tokens. Switch network mode off for jobs that need no internet. Turn on the optional gVisor runtime when kernel exploits are in your threat model. It does not replace Docker for reproducible deployments or Flatpak for shipping desktop apps.

Technical notes+

cmd/drop/main.go rejects euid 0 and re-executes itself with -init as the in-namespace process. internal/command/run.go clones with CLONE_NEWNS, NEWIPC, NEWPID, NEWUSER, NEWCGROUP and NEWNET, maps only the caller's uid and gid, disables setgroups, passes CAP_SYS_ADMIN, CAP_DAC_OVERRIDE, CAP_FOWNER and CAP_NET_ADMIN as ambient caps for setup, and sets Pdeathsig SIGKILL with LockOSThread. internal/jailfs/mount.go binds /usr, /bin, /lib* and /sbin read-only via MountSetattr with AT_RECURSIVE, overlays /etc to substitute its own DNS resolver file, and blocks the runc default paths. internal/netns/netns.go drives pasta with --dns-forward 169.254.1.1 and --no-map-gw. internal/gvisor/gvisor.go execs runsc with --network=host over Drop's own namespace and --overlay2=none. internal/config/firewall.go gates the firewall behind DROP_INPROGRESS_FIREWALL.

Observed

License
Apache 2.0 (LICENSE)
Language
Go (go.mod)
Interface
CLI with init, run, ls, rm, edit and update subcommands
Platform
Linux only, amd64 and arm64 prebuilt binaries
Install
Prebuilt binary download or build from source with make
Runtime dependency
pasta (passt package) for isolated networking; runsc for the optional gVisor runtime
Privileges
Refuses to run as root (cmd/drop/main.go)
Outbound firewall
Behind an in-progress feature flag (internal/config/firewall.go)
Configuration
TOML base file plus one file per environment

Read from README.md, go.mod, cmd/drop/main.go, internal/cli/cli.go, internal/command/run.go, internal/config/default.go, internal/config/firewall.go, internal/gvisor/gvisor.go, internal/jailfs/mount.go, internal/netns/netns.go, website/content/docs/sandbox-overview.md, LICENSE.

Intel on Drop

More in Intel

Tags

sandboxinglinuxgvisornamespacessecurity

Tech Stack

Go

Media

Drop

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.