Allowlist
Allowlist (whitelist) lets you bypass all security checks for trusted users, channels, or domains. Perfect for team members, VIP users, or testing environments.
Quick Startâ
Trust a specific phone number:
{
"allowlist": {
"enabled": true,
"senders": ["+15551234567"]
}
}
This user bypasses:
- â Threat detection (all types)
- â Rate limiting
- â Semantic analysis
- â All security checks
Allowlist Typesâ
By Sender IDâ
Trust specific users by their unique ID:
{
"allowlist": {
"senders": [
"+15551234567", // WhatsApp/SMS
"telegram:@admin", // Telegram username
"discord:123456789", // Discord user ID
"email:boss@company.com" // Email
]
}
}
Sender ID formats:
- WhatsApp:
+1555123456(phone number) - Telegram:
telegram:@usernameortelegram:123456789(user ID) - Discord:
discord:123456789012345678(user ID) - Slack:
slack:U12345678(user ID) - Email:
email:user@domain.com - SMS:
+1555123456(phone number)
By Channelâ
Trust entire channels/groups:
{
"allowlist": {
"channels": [
"whatsapp:team_group",
"telegram:-1001234567890",
"discord:987654321",
"slack:C12345678"
]
}
}
Everyone in these channels is trusted.
Use cases:
- Internal team channels
- Private company groups
- Admin-only channels
- Testing environments
By Domainâ
Trust all users from specific email domains:
{
"allowlist": {
"domains": [
"@company.com",
"@partners.com"
]
}
}
Anyone with user@company.com or user@partners.com is trusted.
Use cases:
- All company employees
- Partner organizations
- Educational institutions
- Enterprise deployments
Combining Allowlist Typesâ
Mix and match for flexible control:
{
"allowlist": {
"enabled": true,
"// Individual VIPs": "",
"senders": [
"+15551111111",
"telegram:@ceo"
],
"// Trusted Channels": "",
"channels": [
"whatsapp:executive_group",
"slack:C98765432"
],
"// Company Employees": "",
"domains": [
"@company.com"
]
}
}
Precedence and Behaviorâ
Allowlist Checking Happens Firstâ
- â Allowlist check (immediate pass)
- Rate limit check
- Threat detection
- Semantic analysis
If user is allowlisted, skip everything else.
Performanceâ
Allowlist checks are ultra-fast:
- Latency: < 0.1 ms
- Lookup: Hash table (O(1))
- No impact on throughput
Use Casesâ
Internal Team Membersâ
{
"allowlist": {
"domains": ["@company.com"],
"channels": ["slack:team-internal"]
}
}
All employees can use the bot without restrictions.
VIP Customersâ
{
"allowlist": {
"senders": [
"+15551111111",
"+15552222222",
"+15553333333"
]
}
}
Premium users get priority access without rate limits.
Testing and Developmentâ
{
"allowlist": {
"senders": [
"+15555551234" // Your test phone
],
"channels": [
"telegram:test_group"
]
}
}
Test threatening messages without getting blocked.
Admin Operationsâ
{
"allowlist": {
"senders": [
"telegram:@admin1",
"telegram:@admin2"
]
}
}
Admins can perform maintenance without interference.
Security Considerationsâ
Risksâ
â ī¸ Allowlisted users bypass ALL security
This means they can:
- Send malicious content
- Spam without limits
- Trigger prompt injection
- Leak data via bot
Best Practicesâ
- Minimize allowlist - Only add truly trusted users
- Use channels for groups, not individual IDs
- Regular audits - Review allowlist monthly
- Document reasons - Why is each entry trusted?
- Emergency removal - Have process to quickly remove compromised users
When NOT to Use Allowlistâ
â Don't use for:
- Public users (even if they complain)
- Unverified identities
- Temporary testing (use
/shield pauseinstead) - "Less strict" filtering (use
flagmode instead)
â DO use for:
- Verified team members
- System administrators
- Automated services
- Partner integrations
Dynamic Allowlistâ
Via Dashboardâ
Add users dynamically without config changes:
- Go to dashboard.securecheck.io
- Navigate to "Allowlist"
- Click "Add User"
- Enter sender ID
- Save
Changes apply immediately without restart.
Via Shield Commandsâ
/shield allowlist add +15551234567
Add temporarily (resets on restart).
Partial Trust (Advanced)â
Skip Only Rate Limitingâ
{
"allowlist": {
"senders": ["+15551234567"]
},
"rateLimit": {
"enabled": true,
"bypassAllowlist": true
}
}
Wait, that's not in the current implementation. Let me revise:
{
"rateLimit": {
"enabled": true,
"exemptSenders": ["+15551234567"]
}
}
This user bypasses ONLY rate limiting, still checked for threats.
Full "partial trust" levels coming soon. Currently allowlist is all-or-nothing.
Testing Allowlistâ
Verify User is Allowlistedâ
/shield test dangerous message from <sender-id>
If allowlisted:
âšī¸ Sender is allowlisted - all checks bypassed
Check Current Allowlistâ
/shield allowlist
Shows all allowlisted senders, channels, and domains.
Troubleshootingâ
User Still Being Blockedâ
Problem: Allowlisted user getting blocked
Solutions:
- Verify exact sender ID format
- Check spelling/case sensitivity
- Verify
enabled: true - Restart OpenClaw after config change
- Check logs:
grep "allowlist" ~/.securecheck/shield/logs/*.log
Can't Find Sender IDâ
Problem: Don't know user's sender ID
Solutions:
- Check Shield logs when they message:
tail -f ~/.securecheck/shield/logs/security-*.log - Dashboard shows sender IDs in alerts
- Use
/shield statusto see recent senders
Allowlist Not Workingâ
Problem: All users still being checked
Solutions:
- Verify
enabled: true - Check JSON syntax is valid
- Restart bot after config change
- Test with
/shield validate
Complete Configuration Exampleâ
{
"allowlist": {
"enabled": true,
"// CEO and CTO": "",
"senders": [
"+15551111111",
"telegram:@ceo",
"discord:123456789012345678"
],
"// Internal Channels": "",
"channels": [
"whatsapp:exec_team",
"slack:C12345678",
"discord:987654321"
],
"// All Employees": "",
"domains": [
"@company.com",
"@subsidiary.com"
]
}
}
Allowlist vs Other Methodsâ
Allowlist vs Flag Modeâ
Allowlist:
- Completely bypasses checks
- Zero processing overhead
- All-or-nothing trust
Flag Mode:
- Still checks messages
- Adds warning but allows
- Maintains audit trail
Recommendation: Use allowlist for team, flag mode for less-trusted users.
Allowlist vs Disabling Shieldâ
Allowlist:
- Only affects specific users
- Everyone else still protected
- Granular control
Disabling Shield:
- Affects ALL users
- No protection for anyone
- Global effect
Recommendation: Always use allowlist, never disable Shield globally.
Next Stepsâ
- Rate Limiting - Prevent spam (works with allowlist)
- Notifications - Get alerted when allowlist used
- Dashboard - Manage allowlist visually