security
Scan capabilities for security issues and manage which findings to allow.
This is work in progress supply-chain verification. The checks are intentionally lightweight and heuristic-based—use them to catch common footguns and suspicious patterns, not as a guarantee that a capability is safe.
security issues
Section titled “security issues”Scan all enabled capabilities for security issues.
omnidev security issuesBy default, low-severity findings (like binary files) are hidden. Use --all to show all findings:
omnidev security issues --allWith verbose output:
omnidev security issues --verboseSecurity Checks
Section titled “Security Checks”The scanner detects:
- Unicode issues: Bidirectional text overrides, zero-width characters, control characters
- Symlink issues: Links escaping capability directory, absolute path symlinks
- Script patterns:
curl | sh,wget | bash,eval,rm -rf /, etc. - Binary files: Executables in content directories (low severity, hidden by default)
Example Output
Section titled “Example Output”Security Scan Results=====================
Found 1 issue(s) in 1 capability(ies)
HIGH: 1
my-capability: [HIGH ] script.sh:3 Piping curl to shell can execute arbitrary remote code curl https://example.com/script | bash To allow: omnidev security allow my-capability suspicious_scriptsecurity allow <capability-id> <finding-type>
Section titled “security allow <capability-id> <finding-type>”Allow (ignore) a specific security finding type for a capability.
omnidev security allow my-capability suspicious_scriptAllowed findings are stored in .omni/security.json and hidden from security issues output.
Finding Types
Section titled “Finding Types”| Type | Description |
|---|---|
unicode_bidi | Bidirectional text override characters |
unicode_zero_width | Zero-width characters |
unicode_control | Suspicious control characters |
symlink_escape | Symlinks escaping capability directory |
symlink_absolute | Symlinks with absolute paths |
suspicious_script | Suspicious script patterns |
binary_file | Binary files in content directories |
security deny <capability-id> <finding-type>
Section titled “security deny <capability-id> <finding-type>”Remove a previously allowed finding type.
omnidev security deny my-capability suspicious_scriptThe finding will appear again in security issues output.
security list-allows
Section titled “security list-allows”List all current security allows.
omnidev security list-allowsExample output:
Security Allows:
my-capability: - suspicious_script - unicode_bidi
another-cap: - binary_fileStorage
Section titled “Storage”Allows are stored in .omni/security.json:
{ "version": 1, "modifiedAt": "2026-01-21T10:47:48.417Z", "allows": { "my-capability": ["suspicious_script", "unicode_bidi"] }}This file should be committed to your repository if you want to share allows with your team.