Skip to main content

CLI Reference

Complete reference for all scd commands.


Scanning

CommandDescription
scd scanFull security scan — vendor and .gitignored files excluded by default
scd scan --verboseFull file-grouped + rule-grouped output
scd scan --deepDeep AI-powered analysis via scd-server (Premium)
scd scan --include-vendorInclude vendor/dependency code
scd scan --vendor-onlyScan only vendor/dependency code (supply chain)
scd scan --include-ignoredScan files excluded by .gitignore
scd scan --no-syncSkip pushing this scan to scd-server (Premium)
scd scan --no-auditSkip audit logging for this scan

Reports

CommandDescription
scd reportGenerate HTML report from last scan
scd report --openGenerate and open in browser (macOS / Windows)
scd report --serveServe report via local HTTP server (Linux / Firefox)
scd report --serve --indexAlways show report index page
scd report --scan <id>Generate report from a specific saved scan
scd export-findingsExport all findings from a scan to JSON
scd export-findings --deep-onlyExport only findings with a deep analysis result
scd export-findings --severity criticalFilter by severity
scd export-findings --scan <id>Export from a specific saved scan

Findings

CommandDescription
scd findingsList open findings from last scan
scd findings <finding-id>Show a specific finding with full detail
scd findings --verboseAll open findings with problem, scenario, and fix
scd findings --allAll findings including excepted and resolved
scd findings --exceptedOnly excepted findings
scd findings --severity criticalFilter by severity
scd findings --rule <id>Filter by rule ID
scd findings --scan <id>Load a specific historic scan

Exception management

Exceptions are managed by finding ID — shown in scan output, reports, and scd findings. Never edit source code comments.

CommandDescription
scd accept <finding-id> --reason <text>Accept finding as acceptable risk
scd accept <finding-id> --tag <text>Optional tag, e.g. false_positive, out_of_scope
scd ignore <finding-id> --reason <text>Ignore a finding
scd syncPull approved/rejected exceptions from scd-server (Premium)
scd exceptionsList all local exceptions
scd exceptions --list rejectedList only rejected exceptions
scd exceptions --list pending|approved|allFilter by status
scd resolve --rejected <id>Remove a rejected exception after fixing the issue
scd resolve --rule <id> --file <path> --line <n>Mark an EXPOSURE finding as handled

Exception workflow

# View open findings with their IDs
scd findings

# Accept a risk
scd accept f-a1b2c3d4 --reason "Parameterized internally, validated input only"

# Pull approvals/rejections from team server
scd sync

# List exceptions and their status
scd exceptions --list all

# Remove a rejected exception after fixing the issue
scd resolve --rejected exc-mn7k96ml

After scd sync, the next scan shows pending status inline:

ℹ 2 exception(s) pending approval – run scd sync to refresh
⚠ 1 rejected exception(s) — fix required:
PHP-INJ-002 WS_addUser.php:10 [exc-mn7k96ml]

Exceptions include a hash of the relevant code line. If the code changes, the exception requires re-approval automatically.


History and navigation

CommandDescription
scd auditView scan history and audit trail
scd insightsAnalyze behavioral patterns from audit log
scd rulesList all 174 security rules
scd rules --lang phpFilter rules by language
scd rules --id INFRA-001Show full detail for a rule
scd rules --search "injection"Free-text search across rules
scd rules --statsRule counts by severity and language
scd listList all repos registered in store
scd repoShow store info for current repo
scd repo --showFull metadata for current repo
scd repo --scansList all saved scans
scd repo --verifyVerify all repos exist on disk
scd repo --verify --cleanInteractive cleanup of missing/stale repos
scd removeRemove current repo from store

Setup and configuration

CommandDescription
scd installInstall git hooks globally (once per machine)
scd uninstallRemove git hooks and global git config
scd initRegister current project (once per project)
scd doctorVerify setup, connection, and push queue status
scd configure --central-url <url>Set scd-server URL
scd configure --token <token>Set API token
scd configure --server-timeout <duration>Regular API call timeout (default: 30s)
scd configure --deep-timeout <duration>Deep analysis timeout (default: 20m)
scd verifyVerify CLI release integrity signature

Per-repo configuration

CommandDescription
scd repo configureShow config with source (repo/global/default)
scd repo configure --scan-mode fast|fullSet scan mode
scd repo configure --trust-level <value>Set trust level
scd repo configure --block-on-high <bool>Set blocking behaviour for HIGH findings

Trust levels

ValueBehaviour
maximum_privacyNo external API calls. Local model only. Strongest privacy guarantee.
balancedDefault. Local model preferred; cloud available as explicit opt-in.
maximum_analysisCloud provider (Claude API). Maximum analysis depth.

Set with:

scd repo configure --trust-level maximum_privacy

Scan IDs and finding IDs

Every scan gets a unique ID (s-a3f9b2c1) shown in terminal output. Every finding gets a stable ID (f-a1b2c3d4). Use these IDs directly with scd accept, scd ignore, scd findings, and scd report --scan.

IDs are random, not time-based — no timezone issues when working across machines.