Default Assumptions (Allow vs Disable)
This page documents the baseline assumptions Safehouse makes so default behavior is predictable.
Design Assumptions
- Agents should work with normal developer tooling by default.
- Sensitive paths and integrations should require explicit opt-in.
- Least privilege should be practical to maintain.
- Final-deny overlays should always remain possible (
--append-profile).
Allowed by Default
These are baseline allowances intended to keep common workflows functional:
- Selected workdir read/write (git root above CWD, otherwise CWD).
- Core system/runtime paths required by shells, compilers, and package managers.
- Toolchain profile access under
profiles/30-toolchains/. - Core integrations in
profiles/50-integrations-core/(git,scm-clis). - Agent-specific profile selection for the wrapped command.
- Network access (open by default).
- Sanitized runtime environment (not full shell env by default).
- SSH metadata read support (
~/.ssh/config,~/.ssh/known_hosts) for git-over-ssh workflows.
Opt-In (Disabled by Default)
Enable only when required for the current task:
clipboard: clipboard read/write integration.cloud-credentials: cloud CLI credential stores.docker: Docker socket and related access.kubectl: kube config/cache + krew state.shell-init: shell startup/config file reads.ssh: extended SSH agent socket and system SSH config integration.browser-native-messaging: browser host messaging integration.process-control: host process enumeration/signalling for local supervision tools.lldb: LLDB/debugserver toolchain access plus debugger-grade host process inspection.macos-gui: GUI app-related integration paths.electron: Electron integration (also enablesmacos-gui).all-agents: load all agent profiles.all-apps: load all desktop app profiles.wide-read: broad read-only visibility across/(high-risk convenience mode).
Not Granted (or Explicitly Denied) by Default
- SSH private keys under
~/.ssh. - Browser profile/cookie/session data.
- Shell startup files unless
shell-initis enabled. - Clipboard access unless
clipboardis enabled. - Host process enumeration/control unless
process-controlorlldbis enabled. - LLDB/debugger toolchain and task-port access unless
lldbis enabled. - Broad raw device access under
/dev. - Setuid/setgid executable paths (
forbidden-exec-sugid).
Operational Defaults for Common Scenarios
- Daily coding agent use: no optional integrations; rely on workdir + minimal explicit grants.
- Cross-repo read context: add
--add-dirs-rofor specific sibling paths or files. - Cloud task burst: enable
cloud-credentialsonly for that run/session. - Docker/k8s workflow: enable
dockerand/orkubectlonly while needed. - Local process triage: prefer
process-control; reservelldbfor real debugger sessions. - IDE app-hosted agents: enable
electronand addall-agentsonly if extension-hosted CLIs require it.
Before You Enable Anything
Ask these questions:
- Is this required for the current task, or just convenient?
- Can I scope it to a narrower path or single feature?
- Can I make it read-only instead of read/write?
- Should this be temporary instead of shell-default?