Security hardening
A checklist for operating a self-hosted installation securely — network, secrets, accounts, workers, capabilities and updates.
Self-hosted
This checklist is what an operator should do to secure a self-hosted installation.
Network
- Serve the control plane only over HTTPS (SSL); keep MongoDB and Redis on a private network.
- Keep
/metricsinternal. Workers need no inbound ports; their local UI binds to127.0.0.1. - For shared installations, set
REQUIRE_PUBLIC_CALLBACK_URLS=trueso integration callbacks cannot reach your private network.
Secrets
- Generate
JWT_SECRETandENCRYPTION_KEYrandomly; storeENCRYPTION_KEYin a secrets manager and back it up separately from the database. - Rotate
ENCRYPTION_KEYwith the procedure in Upgrades. - Put credentials for agents and integrations in organization secrets and reference them as
secret:NAME.
Accounts
- Close registration after the first account (
ALLOW_REGISTRATION=false) and invite members. - Encourage two-factor authentication; prefer SSO through your identity provider.
- Give people the lowest role that works; API tokens are capped at their owner's role.
Workers
- Run workers as a normal user, not as an administrator or root.
- Map only the project folders agents should touch.
- Where available (Linux, macOS), set the OS sandbox policy to
preferredorrequiredfor untrusted work; see Worker security.
Capabilities
- Keep the default install policy
ASK, orRESTRICTEDfor sensitive organizations. - Leave plugin execution off unless you need plugins, and review plugin code before approving it.
- Treat third-party MCP servers as code with the worker user's permissions.
Updates
- Watch the release notes and upgrade the control plane regularly.
- Sign worker releases with an offline key; workers only install releases signed by a trusted key.