Skip to content

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.

Scan all enabled capabilities for security issues.

Terminal window
omnidev security issues

By default, low-severity findings (like binary files) are hidden. Use --all to show all findings:

Terminal window
omnidev security issues --all

With verbose output:

Terminal window
omnidev security issues --verbose

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)
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_script

security allow <capability-id> <finding-type>

Section titled “security allow <capability-id> <finding-type>”

Allow (ignore) a specific security finding type for a capability.

Terminal window
omnidev security allow my-capability suspicious_script

Allowed findings are stored in .omni/security.json and hidden from security issues output.

TypeDescription
unicode_bidiBidirectional text override characters
unicode_zero_widthZero-width characters
unicode_controlSuspicious control characters
symlink_escapeSymlinks escaping capability directory
symlink_absoluteSymlinks with absolute paths
suspicious_scriptSuspicious script patterns
binary_fileBinary files in content directories

security deny <capability-id> <finding-type>

Section titled “security deny <capability-id> <finding-type>”

Remove a previously allowed finding type.

Terminal window
omnidev security deny my-capability suspicious_script

The finding will appear again in security issues output.

List all current security allows.

Terminal window
omnidev security list-allows

Example output:

Security Allows:
my-capability:
- suspicious_script
- unicode_bidi
another-cap:
- binary_file

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.