DRIFTSEAL/ 01
TECHNICAL NOTES / V0.1

Local CLI

Useful offline, without a cloud account. No target installation and no execution of downloaded code.

30-second quick start

Python 3.12 or later is required. Install from the published DriftSeal source release when available, or from a local checkout. The npm wrapper also requires Python; it never installs Python or a scanned dependency for you.

python3 -m pip install .
driftseal scan ./agent-tools --json
driftseal baseline ./agent-tools --output approved.json
driftseal scan ./agent-tools --json --output current.json
driftseal diff approved.json current.json --fail-on critical

Public components and CI output

Prefix PyPI names with pypi:, or use --kind pypi. Unprefixed names are npm. GitHub URLs are recognised automatically. JSON from standard input uses a dash.

driftseal scan @scope/package --json
driftseal scan pypi:mcp --sarif --output findings.sarif
cat manifest.json | driftseal scan - --json
driftseal version

Cloud monitoring

Sign in on the console and create a CLI token. driftseal login asks for the token without echoing it and stores it in a mode-0600 file. Tokens expire after 14 days. watch uploads only a public target coordinate and requires a paid entitlement. status reads your private workspace history. logout revokes the token and removes the local credential file.

driftseal login
driftseal watch @scope/package
driftseal status --json
driftseal logout

Exactly what leaves the workstation

Local path and stdin scans do not send source, environment values, credential files or private keys to DriftSeal. A local baseline remains a local JSON file. There is no automatic private-source telemetry or private summary upload in v0.1.

Registry scans contact the corresponding public registry and artifact host. GitHub scans contact api.github.com and codeload.github.com. MCP scans contact only the supplied endpoint after public-IP validation. A cloud watch sends the public target identity; the service retrieves that public component independently.

Local evidence includes relative source paths, descriptions and schemas after best-effort redaction. Treat exported reports as sensitive. Credential files are excluded, but no pattern-based redactor can recognise every possible secret. Do not upload private reports unless you review them.

Exit codes

0 means the configured severity threshold was not reached; 1 means a finding met the threshold; 2 means input, network, authentication or execution failed. --fail-on accepts info, low, medium, high, critical and none. A baseline command refuses to overwrite an existing file.

Establish your baseline.

Inspect a public component or use the local CLI for private source.

Scan a component — free ↗
YOUR TRUST LEDGER

Keep watch.

Sign in with a one-time email link. No password to remember.