Skip to content
Workbox

Security in every layer.

Give your agent root. Keep your host to yourself.

Seven namespaces. Hard limits. Fifty blocked syscalls. On by default.

Network access, exactly as wide as you need.

passes dropped
sandbox network namespaceAgent processroot in the boxno CAP_NET_ADMINnftablesinet workboxslirp4netnsresolver 10.0.2.3--disable-host-loopbackProxy198.18.0.1 · workbox0one per sandboxInternetpublic addressesvia proxypublic IPv4DNS :53host + privateIPv6

egressDefault

Open internet. Private network sealed.

  • The whole public internet
  • Host and private ranges blocked

blocked

host addressesprivate rangesIPv6

Eight layers of protection.

01Isolation

Root inside. Nobody outside.

  • Seven namespaces per sandbox
  • A private, writable overlay
  • Only 14 capabilities, no privilege escalation
  • Self-checked before it ever runs
chowndac_overridefownerfsetidkillsetgidsetuidsetpcapnet_bind_servicenet_rawsys_chrootmknodaudit_writesetfcap

02Hard limits

Bounded from the very first instruction.

  • Memory, CPU and process caps on every box
  • One clean kill when it’s done
2 GiB
memory
0
swap
2 cores
CPU
4096
processes

03Seccomp

Fifty syscalls the box simply can’t make.

  • Kernel-level filtering on every process
  • Blocks mount, ptrace, bpf and io_uring

50syscalls blocked

  • mountEPERM
  • umount2EPERM
  • pivot_rootEPERM
  • setnsEPERM
  • unshareEPERM
  • keyctlEPERM
  • add_keyEPERM
  • request_keyEPERM
  • kexec_loadEPERM
  • open_by_handle_atEPERM
  • ptraceEPERM
  • bpfEPERM
  • perf_event_openEPERM
  • userfaultfdEPERM
  • acctEPERM
  • clock_adjtimeEPERM
  • clock_settimeEPERM
  • settimeofdayEPERM
  • create_moduleEPERM
  • init_moduleEPERM
  • finit_moduleEPERM
  • delete_moduleEPERM
  • get_kernel_symsEPERM
  • query_moduleEPERM
  • iopermEPERM
  • ioplEPERM
  • kcmpEPERM
  • kexec_file_loadEPERM
  • lookup_dcookieEPERM
  • nfsservctlEPERM
  • process_vm_readvEPERM
  • process_vm_writevEPERM
  • quotactlEPERM
  • rebootEPERM
  • swaponEPERM
  • swapoffEPERM
  • sysfsEPERM
  • _sysctlEPERM
  • uselibEPERM
  • ustatEPERM
  • io_uring_setupEPERM
  • io_uring_enterEPERM
  • io_uring_registerEPERM
  • open_treeEPERM
  • move_mountEPERM
  • fsopenEPERM
  • fsconfigEPERM
  • fsmountEPERM
  • fspickEPERM
  • mount_setattrEPERM

04Verified boot

Every box proves who it is.

  • Single-use boot nonce
  • Host token never enters the box
  • One control channel, no impersonation

05Network

A firewall the box can’t touch.

  • Per-sandbox proxy and ruleset
  • Private ranges and the host sealed off
  • Every decision logged

06Secrets

Use a secret without ever storing it.

  • Injected into one process only
  • Scrubbed from output and logs, even when encoded
session output, as the host stores it
$ wb secret exec GITHUB_TOKEN -- sh -c 'echo "$GITHUB_TOKEN"' $ wb secret exec GITHUB_TOKEN -- sh -c 'printf %s "$GITHUB_TOKEN" | base64' 

07API access

Scoped keys, shown once, revocable anytime.

  • Keys bound to the sandboxes they own
  • Browser and DNS-rebinding requests refused
  • Brute force rate limited

08Audit

A tamper-evident record of everything.

  • Hash-chained, append-only log
  • Verified with one command

sandbox.create

prev …

sandbox.launch

prev 3f9a…c21e

sandbox.ready

prev a07d…914b

net.deny

prev e5c2…08fd

secret.resolve

prev 71b4…6a3c

Found a way out of the box?

Tell us privately. We’ll take it from there.