Skip to content
CLI & config reference

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 -v

See 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 mcp

scan --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 result

Each 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 --all

dazio 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 status

Protect

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 protect

dazio 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 install

dazio 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 disable

To 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 disable

Manage

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 restart

dazio 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 daemon

dazio 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.com

dazio 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 --yes

dazio 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.