Skip to content

Report sinks

A report is a message, not a file. Only --json carries the full evidence. The terminal shows a short preview of each finding it lists, and any artifact written to disk stores a {sha256, preview, len} fingerprint in place of the raw match, so a report on disk can never re-distribute a live payload.

Output Flag Evidence Where it goes
Terminal (default) a short preview stdout, ephemeral
JSON --json full stdout — pipe it; no file
SARIF --sarif FILE redacted FILE, for GitHub code scanning
Alert --alert evidence-free GitHub issue + Slack
Reports dir -d DIR redacted DIR/latest.{json,md}

The report a long scan writes for you

A large scan — many targets, or many findings and advisories between them — stops printing per-finding detail and shows the summary table only. The full report is written to a file instead, so nothing is lost to scrollback, and the path is printed on stderr in a ruled block (clickable when your terminal supports it). A smaller scan prints every finding on the terminal.

Where it lands:

You passed Written to
-d DIR DIR/latest.md and DIR/latest.json
nothing a folder saw keeps for you in the system's temporary directory, named by when it was written

Two things worth knowing about the copy saw keeps. Its evidence is redacted, like any artifact on disk; saw scan --json carries it in full. And saw never deletes it; your operating system clears its temporary directory on its own schedule, which may be at reboot or not at all. If you want the report kept somewhere you chose, pass -d DIR and it goes there instead.

With --json no full report is written: the JSON already carries every finding in full. A -d DIR you asked for is still written.

The dependencies to remove

When a scan flags a dependency, the commands that remove each known-malicious package, and the versions an advisory affects, are given once per run: last on the terminal, below the report's path when a large scan writes one; at the top of the written report; and in the body of a fix pull request. saw names the compromised versions and never a version to install. Each ends with a link to what these commands change; read it before you run them.