Security
Security is the reason boks exists. Every tool you install on your host has full access to your files, your SSH keys, and your network. boks runs each tool in an isolated container where it can see only your current directory and has no network access — by default.
Zero-trust defaults
Every container starts in the most locked-down configuration possible:
| Capability | Default | Override |
|---|---|---|
| Network access | denied | --cap net |
| Filesystem writes | denied | --cap rw |
| Image filesystem writes | denied | --cap rwimg |
| Linux capabilities | dropped | --privileged |
| New privileges | denied | --privileged |
You decide what to grant. The default assumption is that the tool should not be trusted with anything beyond your current directory.
What protection looks like
# A malicious tool cannot write to your files:
boks some-tool
# → PermissionError: [Errno 30] Read-only file system
# A malicious tool cannot reach the network:
boks some-tool
# → curl: (6) Could not resolve host: example.com
# A malicious tool cannot read your SSH keys:
# ~/.ssh is visible but access-denied — open() fails with "Permission denied"
boks some-tool
# → PermissionError: [Errno 13] Permission denied: '/boks/workdir/.ssh/id_rsa'What's in this section
- Zero-Trust Model — the core security philosophy
- Security Layers — the canonical reference for default restrictions, filesystem isolation, and each security mechanism
- Security Configuration — per-invocation flags and image-defined defaults