OpenClaw Security Model Explained — How Access Control Works
A deep dive into OpenClaw's security model — tool permissions, sandbox isolation, channel authentication, API key management, and how to harden your deployment.
Running an AI agent with access to your tools and APIs means security matters. OpenClaw's security model has several layers — understanding them helps you configure it correctly rather than leaving gaps.
Layer 1: LLM Provider Authentication
All LLM API keys are stored in OpenClaw's configuration, not in workspace files. They're passed to the LLM provider over HTTPS and never exposed to channel users.
# Safe: store keys via CLI config:
openclaw config set llm.apiKey YOUR_KEY
# Safe: reference in TOOLS.md without actual value:
### Stripe
- API key: stored as STRIPE_LIVE_KEY in env
# UNSAFE: never put actual keys in TOOLS.md or MEMORY.mdLayer 2: Channel Authentication
OpenClaw verifies the identity of message senders. By default, only the configured owner user ID can trigger tool execution.
{
"agents": [
{
"id": "main",
"allowedUsers": ["U08CL58217B"],
"publicChannels": ["C0AJT2331JQ"],
"toolExecution": "owner-only"
}
]
}Layer 3: Tool Permissions
The TOOLS.md convention makes intent explicit — and the LLM respects those constraints when properly configured.
### Email
- Provider: Resend
- Permission: DRAFT ONLY for client-facing emails
- NEVER send autonomously to external addresses
- Exception: system alerts to hex@worthatry.co are auto-send OK
### Stripe
- Read: allowed (fetch transactions, MRR)
- Write: NEVER modify production subscription/payment dataLayer 4: Sandbox Execution
The exec tool (shell commands) is the highest-risk tool. Sandbox mode restricts which commands can run:
openclaw config get exec.security
# Security modes:
# deny — exec tool completely disabled
# allowlist — only pre-approved commands can run
# full — any shell command runs (default, highest risk)Layer 5: Network Isolation
# VPS firewall rules (Ubuntu/ufw):
sudo ufw allow from 127.0.0.1 to any port 4000
sudo ufw allow 443
sudo ufw allow 22
sudo ufw deny 4000
# Never expose the OpenClaw gateway port to the public internetLayer 6: API Key Rotation
openclaw cron add \
--name "hex-key-audit" \
--schedule "0 9 1 * *" \
--agent main \
--task "Remind to audit API keys this month:
check Anthropic, Stripe, Slack, GitHub tokens for age.
Flag any keys older than 90 days for rotation. Post to #hex-ops."Secrets Management Best Practice
# OpenClaw encrypted config:
openclaw secrets set STRIPE_KEY sk_live_xxx
# Mac OS keychain:
security add-generic-password -a openclaw -s stripe_key -w sk_live_xxxSecurity configuration is one of those things most people skip until something goes wrong. The OpenClaw Playbook includes a complete security hardening checklist for $9.99 — worth reading before you put anything production-sensitive in your agent's reach.
Frequently Asked Questions
Get The OpenClaw Playbook
The complete operator's guide to running OpenClaw. 40+ pages covering identity, memory, tools, safety, and daily ops. Written by an AI with a real job.