Security Commands
Security commands help you verify skill integrity, inspect permissions, and review security scan results.tank verify
Verify that installed skills match the lockfile.Verification Flow
- Read
skills.lockin current directory - For each skill entry:
- Parse skill name from lock key
- Check that skill directory exists in
.tank/skills/ - Verify directory is not empty
- Report any mismatches or missing files
Example Output
All verified:Use Cases
- Verify installation - Ensure
tank installcompleted successfully - Detect tampering - Check if skill files were modified or deleted
- CI/CD checks - Verify lockfile matches installed state
- Troubleshooting - Diagnose missing or corrupt skill files
When to Run
tank permissions
Display resolved permissions for all installed skills.Example Output
Budget Violations
If permissions exceed the budget:No Budget Defined
Ifskills.json doesn’t define a permission budget:
skills.json:
Permission Budget Rules
Network (Outbound)
Define allowed domains with wildcard support:*.example.commatchesapi.example.com,sub.example.com- Does NOT match
example.com(apex) - Does NOT match
malicious.com
Filesystem (Read/Write)
Define allowed paths with glob support:./data/**matches./data/file.txt,./data/sub/file.txt- Exact paths must match exactly
- Relative paths only (no absolute paths)
Subprocess
Boolean flag for subprocess execution:tank audit
Display security audit results for installed skills.Audit All Skills
Audit Single Skill
Audit Scores
Scores range from 0-10:- 7.0-10.0 - Pass (green)
- 4.0-6.9 - Pass with notes (yellow)
- 0.0-3.9 - Issues found (red)
Audit Status
- completed - Analysis finished, score available
- pending - Queued for analysis
- error - Analysis failed (contact support)
Pending Analysis
Newly published skills may show pending status:- Small skills (<100 KB): 1-2 minutes
- Medium skills (100KB-1MB): 2-5 minutes
- Large skills (1MB-50MB): 5-15 minutes
Security Scan Pipeline
Tank uses a 6-stage security scanner:Stage 0: Ingest
- Compute file hashes
- Detect file types
- Extract metadata
Stage 1: Structure
- Analyze directory structure
- Check for suspicious patterns (node_modules, .git, etc.)
- Validate skill.json schema
Stage 2: Static Analysis
- Parse AST (abstract syntax tree)
- Detect dangerous functions (eval, exec, spawn)
- Check code complexity
Stage 3: Injection
- Detect prompt injection attempts
- Check for SQL injection patterns
- Identify command injection risks
Stage 4: Secrets
- Scan for hardcoded credentials
- Detect API keys, tokens, passwords
- Check for PII (personally identifiable information)
Stage 5: Supply Chain
- Analyze dependencies
- Check for known vulnerabilities
- Verify package integrity
Verdict Rules
python-api/lib/scan/stage5_verdict.py
Audit Score Calculation
The audit score is computed from finding severity:Example
- 0 critical, 2 high, 5 medium, 10 low
10.0 - (2 * 1.0) - (5 * 0.3) - (10 * 0.1) = 10.0 - 2.0 - 1.5 - 1.0 = 5.5
Setting Minimum Audit Score
Prevent installation of low-scoring skills:tank install:
Viewing Detailed Findings
To view detailed security findings, use the Tank web interface:- All findings with severity and category
- Source code snippets with line numbers
- Remediation suggestions
- SARIF export for IDE integration
CI/CD Integration
GitHub Actions
Best Practices
-
Always verify after install
-
Define permission budget early
- Add
permissionstoskills.jsonbefore installing skills - Start strict, relax only when needed
- Add
-
Set minimum audit score
-
Review permissions regularly
-
Audit before production
-
Use lockfiles in version control
- Commit
skills.lockto git - Ensures team uses same versions
- Enables integrity verification
- Commit
Troubleshooting
Verify: No lockfile
tank install to create lockfile.
Permissions: Budget violation
permissions.network.outbound in skills.json:
Audit: Pending analysis
tank audit again.