Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
alsk1992 avatar

Permissions

  • 13 installs
  • 610 repo stars
  • Updated June 26, 2026
  • alsk1992/cloddsbot

Permissions (in cloddsbot) is a skill that manages command-execution approvals, allow/block rules, and tool policies to secure a bot's shell access.

About

This skill controls which shell commands a bot may execute, using approvals, allow/block rules, and per-agent tool policies. A developer uses it to require approval for risky commands, define allowlist or blocklist modes, and always block dangerous patterns like rm -rf / or fork bombs. It also restricts which tools each agent can call.

  • Manages command-execution approvals, allow/block rules, and tool policies
  • Four security modes: deny, allowlist, blocklist, full
  • Built-in safety rules always block rm -rf /, sudo, fork bombs, and injection

Permissions by the numbers

  • 13 all-time installs (skills.sh)
  • Ranked #1,634 of 2,203 Security skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

permissions capabilities & compatibility

Use cases
security audit
Pricing
Free
From the docs

What permissions says it does

Command approvals, tool policies, and exec security
SKILL.md
Manage command execution approvals, tool access policies, and security controls.
SKILL.md
npx skills add https://github.com/alsk1992/cloddsbot --skill permissions

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs13
repo stars610
Last updatedJune 26, 2026
Repositoryalsk1992/cloddsbot

What it does

Gate and approve command execution so a bot cannot run dangerous shell commands.

When should I use this skill?

You need to approve or block shell commands and restrict agent tool access.

What you get

A policy-gated command runner with approvals, allow/block rules, and per-agent tool limits.

By the numbers

  • 4 security modes
  • 5 always-blocked patterns

Files

SKILL.mdMarkdownGitHub ↗

Permissions - Complete API Reference

Manage command execution approvals, tool access policies, and security controls.

---

Chat Commands

View Permissions

/permissions                                View current permissions
/permissions list                           List all rules
/permissions pending                        View pending approvals
/permissions history                        View approval history

Approve/Reject

/approve                                    Approve pending command
/approve <id>                               Approve specific request
/reject                                     Reject pending command
/reject <id> "reason"                       Reject with reason

Allow/Block Rules

/permissions allow "npm install"            Allow pattern
/permissions allow "git *"                  Allow with wildcard
/permissions block "rm -rf"                 Block dangerous command
/permissions remove <rule-id>               Remove rule

Security Mode

/permissions mode                           Check current mode
/permissions mode allowlist                 Only allowed commands
/permissions mode blocklist                 Block specific commands
/permissions mode full                      Allow all (dangerous)

---

TypeScript API Reference

Create Permissions Manager

import { createPermissionsManager } from 'clodds/permissions';

const perms = createPermissionsManager({
  // Security mode
  mode: 'allowlist',  // 'deny' | 'allowlist' | 'blocklist' | 'full'

  // Default rules
  defaultAllow: [
    'ls *',
    'cat *',
    'git status',
    'git diff',
    'npm run *',
  ],

  defaultBlock: [
    'rm -rf *',
    'sudo *',
    'chmod 777 *',
  ],

  // Approval settings
  requireApproval: true,
  approvalTimeoutMs: 60000,

  // Storage
  storage: 'sqlite',
  dbPath: './permissions.db',
});

Check Permission

// Check if command is allowed
const result = await perms.check({
  command: 'npm install lodash',
  userId: 'user-123',
  context: 'Installing dependency',
});

if (result.allowed) {
  console.log('Command allowed');
} else if (result.needsApproval) {
  console.log(`Waiting for approval: ${result.requestId}`);
} else {
  console.log(`Blocked: ${result.reason}`);
}

Request Approval

// Request approval for command
const request = await perms.requestApproval({
  command: 'docker build -t myapp .',
  userId: 'user-123',
  reason: 'Building application container',
});

console.log(`Request ID: ${request.id}`);
console.log(`Status: ${request.status}`);

// Wait for approval
const approved = await perms.waitForApproval(request.id, {
  timeoutMs: 60000,
});

if (approved) {
  console.log('Approved! Executing...');
}

Approve/Reject

// Approve request
await perms.approve({
  requestId: 'req-123',
  approvedBy: 'admin-user',
  note: 'Looks safe',
});

// Reject request
await perms.reject({
  requestId: 'req-123',
  rejectedBy: 'admin-user',
  reason: 'Command too broad',
});

List Pending

// Get pending approvals
const pending = await perms.listPending();

for (const req of pending) {
  console.log(`[${req.id}] ${req.command}`);
  console.log(`  User: ${req.userId}`);
  console.log(`  Reason: ${req.reason}`);
  console.log(`  Requested: ${req.createdAt}`);
}

Add Rules

// Add allow rule
await perms.addRule({
  type: 'allow',
  pattern: 'npm run *',
  description: 'Allow npm scripts',
  createdBy: 'admin',
});

// Add block rule
await perms.addRule({
  type: 'block',
  pattern: 'rm -rf /',
  description: 'Prevent root deletion',
  createdBy: 'admin',
});

// List rules
const rules = await perms.listRules();

for (const rule of rules) {
  console.log(`${rule.type}: ${rule.pattern}`);
}

// Remove rule
await perms.removeRule('rule-id');

Tool Policies

// Set tool policy for agent
await perms.setToolPolicy({
  agentId: 'trading',
  allow: ['execute', 'portfolio', 'markets'],
  deny: ['browser', 'docker', 'exec'],
});

// Check tool access
const canUse = perms.isToolAllowed('trading', 'execute');

// Get agent's allowed tools
const tools = perms.getAllowedTools('trading');

---

Security Modes

ModeBehavior
denyBlock all exec commands
allowlistOnly explicitly allowed commands
blocklistBlock specific patterns, allow rest
fullAllow all (dangerous!)

---

Pattern Syntax

PatternMatches
npm installExact command
npm *npm with any args
git statusExact command
* --versionAny command with --version

---

Built-in Safety Rules

Always blocked regardless of mode:

  • rm -rf /
  • sudo rm -rf
  • chmod 777 /
  • :(){ :|:& };: (fork bomb)
  • Commands with shell injection patterns

---

CLI Commands

# List permission rules
clodds permissions list

# Add allow pattern
clodds permissions allow "npm run *"

# View pending approvals
clodds permissions pending

# Approve request
clodds permissions approve req-123

---

Best Practices

1. Use allowlist mode — Most secure, explicit permissions 2. Review pending regularly — Don't let requests pile up 3. Specific patternsnpm install lodash over npm * 4. Audit history — Review what was approved 5. Tool policies — Restrict agent tool access

Related skills

FAQ

What security modes are available?

deny (block all), allowlist (only allowed), blocklist (block patterns), and full (allow all, dangerous).

What is always blocked?

rm -rf /, sudo rm -rf, chmod 777 /, fork bombs, and shell-injection patterns regardless of mode.

Securityappsecsecrets

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.