.env file.
User authorization
Telegram authorization
Comma-separated list of authorized Telegram user IDs.How to get your Telegram user ID:
- Message @userinfobot on Telegram
- Or use the
/myidcommand with your bot (requires temporarily allowing all users) - Add the ID to
ALLOWED_USER_IDSin.env
Slack authorization
Comma-separated list of authorized Slack user IDs (start with How to get Slack user IDs:
U).Unlike Telegram, this is optional. If empty, all workspace members can use the bot.
- Use the
/claudio-statuscommand to see your user ID - Or click a user’s profile → More → Copy member ID
- Add IDs to
SLACK_ALLOWED_USER_IDS
Rate limiting
Protect against spam and DoS attacks by limiting how many requests users can make.Maximum number of requests allowed per time window.When a user exceeds this limit, they receive an error message and must wait for the window to reset.
Time window in seconds for rate limiting.Default allows 10 requests per 60 seconds (1 minute). Adjust both values together:
How rate limiting works
Claudio tracks timestamps of recent requests for each user:- User sends a message
- Claudio checks how many requests they’ve made in the current window
- If under the limit, the request is processed and logged
- If over the limit, the request is rejected with a countdown timer
- Old timestamps outside the window are automatically cleaned up
- Separate tracking per user (one user can’t block another)
- Automatic cleanup of expired timestamps
- Clear error messages showing wait time
Execution timeouts
Maximum execution time for commands in seconds.When a command exceeds this timeout:
- The process is killed automatically
- User receives a timeout error message
- Resources are cleaned up
Input validation
Maximum length of user messages in characters.Prevents DoS attacks from extremely long messages that could:
- Consume excessive memory
- Overload the Claude API
- Create performance issues
Permission controls
Bypass all tool permission prompts.When to use:
- ✅ Required for Telegram and Slack bots
- ✅ Safe in trusted environments with authorized users only
- ❌ Don’t use if you need approval for every action
- ❌ Don’t use in shared/public environments
--dangerously-skip-permissions flag to Claude CLI commands.Restrict which tools Claude can use.Options:
*- All tools (recommended for MCPs)- Comma-separated list - Only specific tools
When using MCPs, set this to
* because MCP tool names can’t be predicted in advance.Process isolation
Claudio includes safeguards against multiple instances and orphaned processes:Lock files
Both Telegram and Slack bots use lock files to prevent multiple instances:Process cleanup
When the bot shuts down, it automatically:- Kills all active Claude CLI subprocesses
- Releases lock files
- Cleans up temporary files
Security checklist
Before deploying Claudio:- Set
ALLOWED_USER_IDS(Telegram) orSLACK_ALLOWED_USER_IDS(Slack) - Configure rate limiting (
RATE_LIMIT_REQUESTS,RATE_LIMIT_WINDOW) - Set a reasonable
COMMAND_TIMEOUT - Limit
MAX_INPUT_LENGTHto prevent DoS - Only enable
SKIP_PERMISSIONSif you trust all authorized users - Restrict
ALLOWED_TOOLSif you don’t need all tools - Keep bot tokens secret (never commit to git)
- Use environment files (
.env) that are gitignored - Monitor logs for unauthorized access attempts
- Regularly review authorized user lists
Example secure configuration
.env
Next steps
Environment variables
Configure all environment variables
MCP setup
Set up Model Context Protocol servers