CLI and configuration reference
Every dazio command, the flags you use, and the settings and environment
variables it reads. dazio <command> --help lists every flag in the binary you
have, including a few internal ones left out here.
Global flags
-v and -h work on every command; dazio daemon accepts -v and ignores it.
--version works on dazio alone: dazio scan --version is an unknown flag.
| Flag | Effect |
|---|---|
-v, --verbose |
More log detail on stderr. -v adds info lines and step timings; -vv adds debug. |
--version |
Print the version and the backend it talks to. |
-h, --help |
Help for any command. |
dazio --version
dazio scan -vSee what was found
dazio scan
The guided first scan, terse after; through the daemon when one runs.
- With the daemon running, the daemon runs the scan and the CLI prints the result.
- With no daemon and no earlier scan, it runs the guided first scan. That scan registers the installation, downloads the malware feed and ends with one offer of continuous protection. Declining installs nothing.
- With no daemon after that, it runs a short scan in this process.
| Flag | Default | Effect |
|---|---|---|
--local |
off | Run the scan in this process instead of asking the daemon. Fetches, registers and persists nothing. Use it for unattended runs. |
--scope <scope> |
full |
Daemon scan scope: full or one group (mcp, ide_extensions, cli_agents, packages). |
--background |
off | Run the daemon scan at a polite background pace instead of full speed. |
--json |
off | Print the full scan result as JSON instead of the summary. |
dazio scan
dazio scan --local
dazio scan --scope mcpscan --local only checks against a malware feed already on disk. Without one,
it reports malware: NOT CHECKED.
dazio result
Summarize the latest scan of this machine.
| Flag | Effect |
|---|---|
--json |
Print the full result as JSON instead of the summary. |
result and its subcommands work with the daemon stopped, reading what was last
saved. All but installs fail when no scan has run yet.
dazio resultEach subcommand shows one part of the latest scan in detail.
| Command | Purpose | Flags |
|---|---|---|
dazio result secrets |
The secrets found, grouped by title: credentials readable by anything running as you, including your agents. | --json |
dazio result misconfig |
The misconfigurations found, grouped by title: settings that widen what an agent or a stolen token can do. | --json |
dazio result inventory |
The installed components, grouped by type, then provider. | --type <type> only this component type (e.g. package, ide_extension) · --provider <provider> only this provider (e.g. npm, vscode) · --paths show each component’s paths · --json |
dazio result malware |
The malware matches, confirmed and indeterminate: packages on this machine that match the malware feed. | --json |
dazio result installs |
The packages safe-pkg checked at install time, and what it did. | --since <duration> how far back to read, as a Go duration such as 24h or 1h30m (default 168h, 7 days) · --all every check, not only those that were not clean · --json |
dazio result secrets
dazio result inventory --type package --provider npm --paths
dazio result malware --json
dazio result installs --since 24h --alldazio status
Show daemon status. With no daemon running, it prints what was last known and exits 1.
| Flag | Effect |
|---|---|
--json |
Print the status as JSON. |
dazio statusProtect
dazio protect
Set up continuous protection: the background daemon, feed updates and alerts, and safe-pkg. It lists what it will run, watch, write and send before it asks.
dazio protectdazio protect -- <command> [args ...] runs one command with its installs
checked. It needs no safe-pkg enable and writes no files, but it needs the
daemon running, the feed enabled (dazio feed enable) and safe-pkg serving:
safe_pkg_mode not off, and a free port in its range. Without any of these,
the command still runs, unchecked, after dazio protect: running unprotected
and the reason. Either way it exits with the command’s exit code. If the command
cannot start at all, dazio prints its own error and exits 1.
dazio protect -- npm installdazio safe-pkg
safe-pkg checks package installs against the malware feed before they land. In
warn mode, the default for safe-pkg enable, a known-malware package still
installs and the detection is recorded (see dazio result installs). block
mode refuses it, and is what dazio protect enables unless you pick warn.
| Command | Purpose | Flags |
|---|---|---|
dazio safe-pkg enable |
Protect installs: point this machine’s package managers at the local registry. It lists every file before writing and marks each edit with how to undo it. Needs the daemon running, the feed enabled, and safe_pkg_mode not off when the daemon started. |
--mode <warn|block> what a malware verdict does (default warn) · --yes write the files without asking, for non-interactive and MDM runs |
dazio safe-pkg disable |
Un-write every file safe-pkg owns. Works with the daemon stopped. | none |
dazio safe-pkg allow <package>@<version> |
Let one blocked install through, once, in the next ~10 minutes. Needs the daemon running in block mode, with safe-pkg enabled or a dazio protect -- command running. |
none |
dazio safe-pkg enable --mode block
dazio safe-pkg allow left-pad@1.3.0
dazio safe-pkg disableTo change the mode, run dazio safe-pkg enable again with the new --mode.
dazio feed
With the feed enabled, the malware feed on this machine stays current, and you
are emailed when a package here matches it. It needs an email address, confirmed
by a link. Updates and alerts start once you follow that link. The feed requires
analytics to be on. Every feed command except terms needs the daemon
running.
| Command | Purpose | Flags |
|---|---|---|
dazio feed enable |
Switch on the malware feed: accept the terms and bind an email address for alerts. | --email <address> the address to bind (asked for when omitted) · --accept-terms accept the terms without asking, for non-interactive and MDM runs · --enable-analytics turn analytics on if it is off (asked for when omitted) |
dazio feed disable |
Switch the feed off and delete the local dataset. The email association is kept. | none |
dazio feed refresh |
Fetch the malware feed and rebuild its local copy. Refused until the feed is enabled and the email address confirmed. | none |
dazio feed terms |
Print the malware feed terms of use in full. | none |
dazio feed terms
dazio feed enable --email you@example.com
dazio feed refresh
dazio feed disableManage
dazio service
The background daemon scans on a schedule and on file changes, so you don’t
have to remember to run a scan. dazio service runs it as a login service:
a LaunchAgent on macOS, a systemd user unit on Linux.
| Command | Purpose |
|---|---|
dazio service install |
Register the daemon to start at login, and start it now. |
dazio service uninstall |
Stop the daemon and remove the login service. It also undoes every safe-pkg edit. |
dazio service status |
Report whether the login service is installed and running, and which binary it runs. |
dazio service restart |
Ask the supervisor to restart the daemon on the binary now on disk. Run it after an upgrade on macOS; on Linux a Homebrew or mise upgrade needs dazio service install instead. It exits 0 when there is nothing to restart. |
None of them take flags.
dazio service install
dazio service status
dazio service restartdazio daemon
Run the background daemon in the foreground, logging to the terminal. For
everyday use, run dazio service install instead. It always logs at info;
-v has no effect here. It exits with an error if a daemon is already running.
dazio daemondazio email
Manage the email address the feed’s alerts go to.
| Command | Purpose | Flags |
|---|---|---|
dazio email unbind |
Drop the email association and the terms assent. The feed goes off with them. Needs the daemon running. | none |
dazio email erase |
Ask the backend to erase an address. Erasure is confirmed by an emailed link. The request sends no installation token. Needs the daemon running. | --email <address> the address to erase (asked for when omitted) |
dazio email unbind
dazio email erase --email you@example.comdazio reset
Forget this installation: unregister it, then delete its identity, its email association (feed alerts stop), its pending uploads and the local malware feed store, and undo every safe-pkg edit. It cannot be undone, and it needs the daemon running.
| Flag | Effect |
|---|---|
--yes |
Confirm the reset. Required. |
dazio reset --yesdazio completion
Generate the shell completion script for bash, zsh, fish or powershell.
The Homebrew install already sets up completions. dazio completion <shell> --help
shows how to load the script.
dazio completion zsh > "${fpath[1]}/_dazio"Files and directories
Dazio keeps its state in one directory per user:
| OS | State directory |
|---|---|
| macOS | ~/Library/Application Support/dazio/ |
| Linux | $XDG_CONFIG_HOME/dazio/, by default ~/.config/dazio/ |
It holds settings.json (see below), identity.json, the daemon log
daemon.log, the local malware feed store and scan results. On macOS it also
holds daemon.stderr.log, the daemon’s stderr; on Linux that goes to the
journal (journalctl --user -u dazio).
The daemon’s socket, daemon.sock, lives in:
| OS | Runtime directory |
|---|---|
| macOS | ~/Library/Caches/dazio/ |
| Linux | $XDG_RUNTIME_DIR/dazio/, falling back to $XDG_CACHE_HOME/dazio/, by default ~/.cache/dazio/ |
dazio service install writes the login service:
| OS | Service definition |
|---|---|
| macOS | ~/Library/LaunchAgents/io.boostsecurity.dazio.plist, label io.boostsecurity.dazio |
| Linux | ~/.config/systemd/user/dazio.service, managed with systemctl --user |
settings.json
settings.json in the state directory holds your preferences. You can edit it
by hand, or write it before the first run. Unset keys take their default. The
daemon reads it when it starts, so after an edit run dazio service restart.
| Key | Values | Default | Effect |
|---|---|---|---|
analytics |
off, local, on |
on |
What is uploaded. DO_NOT_TRACK overrides it. |
feed_enabled |
true, false |
false |
The malware feed. It stays off unless analytics is on. Set by dazio feed enable. |
safe_pkg_mode |
warn, block, off |
warn |
What safe-pkg does with a malware verdict; any other value reads as warn. off stops the local registry and removes safe-pkg’s edits, and safe-pkg enable then refuses until you change it and restart the daemon. dazio safe-pkg enable --mode sets warn or block. |
full_interval |
Go duration | 1h |
How often the daemon rescans everything. |
group_interval |
Go duration | 10m |
How often the daemon rescans each group except packages. |
heavy_group_interval |
Go duration | 1h |
How often the daemon rescans the packages group. |
install_check_retention |
Go duration | 720h (30 days) |
How long dazio result installs history is kept. |
A duration that doesn’t parse reads as its default. A file that doesn’t parse,
or an unknown analytics value, is unreadable: analytics and the feed read as
off, every other key as its default, and writes to it are refused, so
dazio feed enable and dazio safe-pkg enable fail until you fix or remove it.
{
"analytics": "local",
"safe_pkg_mode": "block",
"full_interval": "2h"
}Environment variables
| Variable | Effect |
|---|---|
DO_NOT_TRACK |
Any value other than empty, 0 or false turns uploads off for the process it is set in, whatever settings.json says. Set in the daemon’s environment, it also stops the feed from being enabled. |
DAZIO_NO_UPDATE_CHECK |
Same values as DO_NOT_TRACK. Turns off the check for a newer release. |
NO_COLOR |
Turns off colored output. |
DAZIO_INSTALL_DIR |
Install script only: the directory to install into (default ~/.local/bin). |
DAZIO_VERSION |
Install script only: the release to install instead of the latest. |
The login service does not inherit your shell’s environment, so DO_NOT_TRACK
exported in a shell profile affects commands you run, but not the service
daemon. To turn uploads off for the daemon too, set "analytics": "off" in
settings.json and run dazio service restart.