Default Assumptions
Safehouse’s default behavior is designed to make common coding workflows functional while keeping sensitive paths and integrations opt-in. This page documents the baseline assumptions so you know what to expect without configuration.Design Assumptions
The defaults follow four principles:Agents should work with normal developer tooling
Package managers, compilers, git, and language runtimes work out of the box
Sensitive paths require explicit opt-in
SSH keys, cloud credentials, browser data, and clipboard access are denied
Least privilege should be practical to maintain
Defaults balance security with usability; constant overrides would get disabled
Allowed by Default
Filesystem Access
Selected Workdir (Read/Write)
Selected Workdir (Read/Write)
What: The project directory you’re working in (git root above CWD, or CWD if not in a git repo)Why: The agent must read and modify files in your current projectSecurity Note: The agent can only touch files in this directory, not other projects
System Runtime Paths (Read-Only)
System Runtime Paths (Read-Only)
What:
/usr/bin, /bin, /usr/lib, /System/Library, /Library, etc.Why: Shells, compilers, system utilities, and macOS frameworks live hereSecurity Note: These are read-only and contain system software, not personal dataToolchain Installation Directories (Read-Only to Read/Write)
Toolchain Installation Directories (Read-Only to Read/Write)
What: Node.js, Python, Go, Rust, Bun, Java, PHP, Perl, Ruby installationsWhy: Language runtimes and their package managers must be accessibleSecurity Note: Read access to binaries; read/write to caches like
~/.npm, ~/.cargo, ~/.cache/pipPackage Manager Caches (Read/Write)
Package Manager Caches (Read/Write)
What:
~/.npm, ~/.cargo, ~/.cache/pip, ~/.gem, etc.Why: Package managers need to cache downloads for performanceSecurity Note: Caches contain public packages, not sensitive dataGit Integration Paths (Selective)
Git Integration Paths (Selective)
What:
.git directories, ~/.gitconfig, ~/.gitignore_global, ~/.ssh/config, ~/.ssh/known_hostsWhy: Git operations need repo metadata and SSH config for remotesSecurity Note: SSH private keys are explicitly denied; only config/known_hosts allowedTemporary Directories (Read/Write)
Temporary Directories (Read/Write)
What:
/tmp, /var/tmp, $TMPDIRWhy: Many tools write temporary files during operationsSecurity Note: Standard temp dirs, automatically cleaned by OSIntegrations
Core SCM Tools (Always On)
Core SCM Tools (Always On)
What:
git, gh (GitHub CLI), glab (GitLab CLI)Why: Version control is fundamental to coding workflowsSecurity Note: Includes config files but not private keysAgent-Specific Config Directories
Agent-Specific Config Directories
What: Config dirs for the specific agent being run (e.g.,
~/.aider for Aider, ~/.claude for Claude)Why: Agents need their own state/config directoriesSecurity Note: Only the profile matching the wrapped command is loadedNetwork and Environment
Network Access (Full)
Network Access (Full)
What: All network operations allowedWhy: Package registries, git remotes, MCP servers, and LLM APIs require networkSecurity Note: Safehouse does not prevent network exfiltration of allowed files
Sanitized Environment
Sanitized Environment
What: Minimal environment variables by default (PATH, HOME, TMPDIR, etc.)Why: Shell startup files (which may contain secrets) are denied, so full env is not passedSecurity Note: Use
--pass-env or --keep-env to explicitly pass needed varsProcess Execution
Process Execution
What: Ability to fork/exec child processesWhy: Agents run compilers, linters, tests, git, npm, etc.Security Note: Child processes inherit the same sandbox policy
Opt-In (Disabled by Default)
Enable these with--enable=<integration> only when needed:
Optional Integrations
clipboard
What: Clipboard read/write access via
pbcopy/pbpasteEnable when: Agent needs to copy output or read clipboard inputRisk: Users often copy sensitive data temporarilycloud-credentials
What: AWS, GCP, Azure credential filesEnable when: Agent needs to deploy or query cloud resourcesRisk: Cloud credentials can access production infrastructure
docker
What: Docker socket and related accessEnable when: Agent needs to build/run containersRisk: Docker socket can be used to escape sandbox via privileged containers
kubectl
What: Kubernetes config, cache, and krew stateEnable when: Agent needs to interact with k8s clustersRisk: k8s credentials can access production workloads
shell-init
What: Shell startup files (
.zshrc, .bashrc, etc.)Enable when: Agent needs environment variables from shell configRisk: Shell files often contain API keys and tokensssh
What: Extended SSH agent socket and system SSH configEnable when: Agent needs full SSH functionality beyond git-over-sshRisk: SSH agent can be used to authenticate to remote servers
browser-native-messaging
What: Browser native messaging host integration pathsEnable when: Agent needs to communicate with browser extensionsRisk: Can interact with browser extensions that have elevated permissions
process-control
What: Host process enumeration and signaling (ps, kill)Enable when: Agent needs to manage local processesRisk: Can list all running processes and terminate them
lldb
What: LLDB debugger toolchain and task-port accessEnable when: Agent needs to debug running processesRisk: Debugger can inspect memory of all host processes
macos-gui
What: GUI app-related integration pathsEnable when: Agent is a desktop app or needs GUI featuresRisk: Access to app-specific state directories
electron
What: Electron integration (also enables
macos-gui)Enable when: Agent is an Electron app (Cursor, VS Code, etc.)Risk: Access to Electron app directories and statewide-read
What: Broad read-only visibility across
/Enable when: You need maximum convenience and trust the agent completelyRisk: Can read most files on the system (defeats much of the sandbox purpose)Agent/App Loading
all-agents
all-agents
What: Load all agent profiles (not just the one matching the command)Enable when: Running one agent that invokes other agent CLIsRisk: Grants access to config dirs for all known agents
all-apps
all-apps
What: Load all desktop app profilesEnable when: Running app-hosted agents that need multiple app configsRisk: Grants access to app-specific directories for all known apps
Explicitly Denied by Default
These are blocked even if parent directories are allowed:SSH Private Keys
Paths:
~/.ssh/id_*, ~/.ssh/*_keyRationale: Private keys provide authentication to remote servers; not needed for git-over-sshBrowser Profile Data
Paths: Browser cookies, sessions, profiles (Chrome, Firefox, Safari)Rationale: Contains authentication sessions and personal browsing data
Setuid/Setgid Executables
Paths: Any executable with setuid/setgid bit setRationale: These can be used for privilege escalation
Raw Device Access
Paths: Most of
/dev (with exceptions for /dev/null, /dev/urandom, etc.)Rationale: Direct device access can bypass filesystem permissionsOperational Defaults for Common Scenarios
Daily Coding Agent Use
Cross-Repo Read Context
Cloud Task Burst
Docker/k8s Workflow
Local Process Triage
IDE App-Hosted Agents
macos-gui
Denied: Other app profiles unless --enable=all-agents
Before You Enable Anything
Ask yourself these questions:Is this required for the current task?
Or is it just convenient? Convenience today can be a security incident tomorrow.
How to Override Defaults
Grant Additional Directories
Enable Optional Integrations
Apply Custom Policy Overlays
local.sb:
Explain Current Settings
Trust Workdir Config
By default,.safehouse config files in project directories are ignored for security.
Summary Table
| Category | Default | Why | Override |
|---|---|---|---|
| Workdir | ✅ Read/Write | Agent must modify project files | --workdir="" to disable |
| System paths | ✅ Read-Only | Required for shells, compilers | Cannot disable |
| Toolchains | ✅ Read-Only (+ RW caches) | Language runtimes and package managers | Cannot disable |
| Git integration | ✅ Config only | Version control workflows | Cannot disable |
| SSH keys | ❌ Denied | Not needed; high risk | --enable=ssh (not recommended) |
| Cloud credentials | ❌ Denied | Opt-in for cloud tasks | --enable=cloud-credentials |
| Clipboard | ❌ Denied | Opt-in when needed | --enable=clipboard |
| Docker | ❌ Denied | Opt-in for container workflows | --enable=docker |
| Shell startup | ❌ Denied | Often contains secrets | --enable=shell-init |
| Network | ✅ Allowed | Package managers, git, APIs | Cannot disable (by design) |
| Other repos | ❌ Denied | Deny-first model | --add-dirs or --add-dirs-ro |
Next Steps
Getting Started
Install Safehouse and run your first sandboxed agent
Customization
Learn how to create custom policies for specific needs
Debugging
Diagnose and fix sandbox denial issues
Policy Architecture
Understand how policy assembly works