Common questions about licensing, CVE database refresh, and scan modes
Yes. Start with the Video Tutorials page for the recommended sequence.
Start with license analysis, then CVE analysis, and save the CLI tutorial for automation and power-user workflows.
Yes. OSSScan licenses are typically machine-bound using a Machine fingerprint.
This helps deter casual copying of license.json between computers.
The machine fingerprint is a pseudonymous device identifier generated by OSSScan locally. On supported platforms (macOS and Windows), it is derived from an OS-provided machine identifier and then hashed so OSSScan does not need to send or store the underlying raw identifier. It does not include the contents of your files, scan results, code, contacts, or browsing history.
Note: under many privacy laws (including GDPR), device identifiers can still be considered "personal data". OSSScan uses the fingerprint only for licensing and support (for example re-issuing a license after hardware replacement).
If OSSScan says your license is for a different machine, contact Jim@OSSScan.com and include the fingerprint from Compatibility Check.
OSSScan looks for a file named license.json in its per-user application data folder.
Typical default locations:
~/Library/Application Support/OSSScan/license.json%APPDATA%\OSSScan\license.jsonTip: The license dialog is the source of truth for your machine's exact path.
OSSScan requires a machine fingerprint for machine-bound licensing. If fingerprint generation fails, OSSScan cannot issue or validate a machine-bound license for that computer.
When fingerprint generation fails, OSSScan will disable license request actions because the beta license flow and license file require a fingerprint.
No. OSSScan licenses are signed, and the app verifies the signature at startup. If you edit the file contents, OSSScan will treat it as invalid.
If you need a renewal or replacement, please contact Jim@OSSScan.com to receive a new license file.
Please do not share your license.json file or redistribute OSSScan installers/binaries.
Licenses are issued per customer and are intended to be kept private.
For the latest OSSScan download and to procure a license, use www.OSSScan.com.
OSSScan enforces a one-time Terms of Use acceptance gate (per license) before showing the main window. If you decline, the app will exit.
If the Terms of Use text changes in a later version, you may be prompted again.
OSSScan invokes Syft (required) and Grype (optional) as external command-line tools. They are not bundled with OSSScan; you install them once on your machine.
This keeps OSSScan smaller, lets you update tools independently, and avoids redistributing the tools' full dependency trees.
During OSSScan development, we ran a deep scan of OSSScan itself. When Syft or Grype were bundled inside the application, OSSScan (and other compliance tools) surfaced copyleft‑licensed components embedded inside those third‑party binaries. These findings came from the compiled dependency trees of Syft and Grype, not from OSSScan's own code.
This experience is a good example of why OSSScan exists at all: to give developers clear insight into the open‑source components they rely on and the licensing risks that may be hidden inside them.
Bundling Syft or Grype would expand OSSScan's redistribution scope and could trigger automated "copyleft risk" alerts in customer environments. To keep OSSScan's distribution clean and to give customers full control over which versions they install and approve, OSSScan now treats Syft and Grype as external, user‑installed tools.
This approach is common in developer tools. For example, VS Code typically does not bundle Git (which is GPL‑licensed). Instead, it detects Git on the system and prompts the user to install it. OSSScan follows the same pattern.
Important: This is an implementation and distribution choice, not legal advice. Copyleft obligations depend on the specific licenses involved, how software is combined and distributed, and your jurisdiction. For release or compliance decisions, consult qualified counsel.
Installing Syft and Grype:
brew install syft and brew install grypewinget install Anchore.Syft and winget install Anchore.GrypeTip: If Grype isn't installed, OSSScan can still generate SBOMs and run license analysis; only CVE scanning will be unavailable.
OSSScan requires Syft to generate an SBOM. If Syft isn't installed or cannot be executed, OSSScan will keep scanning disabled.
curl install command work for Syft or Grype on Windows?
The first install snippet on the Anchore pages uses curl piped into sh and writes to /usr/local/bin.
That example is meant for Unix-style shells (for example, macOS Terminal), not standard Windows PowerShell.
On Windows, open the Anchore install page and scroll down to the Windows section labeled WinGet. That is the correct set of commands for a normal Windows install.
winget install Anchore.Syftwinget install Anchore.GrypeOSSScan's Install/Update links now point to Anchore's full install docs, but Windows users still need to scroll past the Unix-style example near the top of the page.
brew upgrade syft and brew upgrade grypeOSSScan does not pin your Syft/Grype versions; you control when tool updates happen.
Deep and Audit modes can use ScanCode Toolkit to improve license detection from local source content. ScanCode is not bundled, so you install it once on your machine.
If ScanCode isn't available, OSSScan will still complete the scan, but the ScanCode stage may be skipped.
Yes, we recommend keeping network isolation enabled. It controls whether OSSScan monitors and restricts outbound calls made by Syft, Grype, and ScanCode during a scan.
There are three options:
The blocked-call log is shown after every scan and can be exported. It tells you exactly what was attempted, whether it was blocked or allowed, and whether the destination was expected for that tool.
If OSSScan is blocking a destination you believe is safe and should be allowed through in Balanced mode, contact Jim@OSSScan.com with the details. We will investigate adding it to the safe list.
No. OSSScan does not upload your source code, file contents, or repository structure anywhere.
Light scans are fully offline with zero outbound calls.
Deep and Audit scans (and Deep Enrich) make outbound HTTPS requests to public metadata services to look up license information. These requests send only package coordinates (name and version), not your repository contents.
ScanCode, when used, runs locally by reading files inside the folder you selected.
NOASSERTION for license?That usually means the SBOM source (or upstream metadata) didn't provide a license expression for that component.
OSSScan tracks provenance for each resolved license (for example: Syft, ClearlyDefined, ScanCode). The Resolved by area lets you filter the Licenses table by source.
In the table, small colored badges show which source resolved a given license.
Note: those source checkboxes filter the Licenses table view.
"Manual Review" means the license value is not a clean, recognized SPDX identifier or expression (for example, a custom LicenseRef-… entry).
OSSScan can't safely classify it as permissive or copyleft without human review.
risk:manual-review.
Deep Enrich tries to fill unknown licenses in the currently loaded SBOM by looking up packages via their
purl (package URL) + version.
It sends only package coordinates; it does not upload your source.
Tip: When you use Save SBOM…, OSSScan also writes an HTML license report next to the saved SBOM JSON.
CVE scanning requires:
The Vulnerabilities tab shows a status line explaining what's missing.
CVE scanning uses Grype. If the Vulnerabilities tab reports "not installed", OSSScan can't run CVE analysis on this machine.
The Vulnerabilities tab status text will typically include the reason (missing binary vs. not executable).
brew install grypeGrype requires a local vulnerability database separate from the Grype binary.
CVE scanning in OSSScan uses Grype, which relies on a local vulnerability database.
OSSScan warns when the Grype DB is older than about a week and will require a refresh before CVE scanning can run.
Audit is the slowest scan mode and is intended for double-checking license attribution.
Large projects can take a long time in Audit mode; ScanCode work is intentionally rate-limited for responsiveness.
No. OSSScan identifies components from SBOM metadata and package coordinates. It has no visibility into whether a vendored or bundled binary differs from the upstream release.
This matters because some licenses -- particularly copyleft licenses such as GPL -- treat modification as a trigger for additional obligations, for example requiring you to make your modifications available to recipients. OSSScan cannot detect or flag those situations.
If your project vendors or modifies upstream binaries, you need to track and evaluate those modifications separately. OSSScan can tell you what license applies to the upstream component, but the question of whether your modifications change your obligations requires human review.
No. OSSScan surfaces which licenses apply to which components, but it does not verify that your built artifact or distribution actually includes the required attribution notices.
Many permissive licenses -- including MIT, BSD-2-Clause, BSD-3-Clause, and Apache-2.0 -- require that copyright and attribution notices travel with distributions. Confirming attribution compliance (for example, checking that a NOTICE file, credits screen, or LICENSE folder is present and complete in your release) is a separate step that requires human review or a dedicated attribution tool.
OSSScan's Audit scan mode can surface disagreements between tools about which license applies to a component, which helps you make sure your attribution is correct. But whether the notices are actually present in your distribution is outside OSSScan's scope.
If the selected directory includes build outputs such as dist/, build/, out/, or target/, OSSScan will scan those files too.
That can introduce bundled libraries, generated assets, minified code, or other produced artifacts into the SBOM.
That is often desirable for distribution or IP review, because those files may be part of what you actually ship. But it can add noise if your goal is a source-only or dependency-only review.
Clean first if you want a source-level view of the project without prior build outputs mixed in. If your goal is to review the shipped application or package, do not clean away the distribution target you actually want to inspect.
In practice, many teams do both: a clean source scan for development review and a separate artifact scan for release review.
No. OSSScan scans the directory you choose as provided. This avoids hiding files that may matter for IP, license, or distribution review.
Yes. A source scan helps you understand the development dependency picture; an artifact scan shows what is bundled or distributed in the final product. Together they provide a more complete compliance and review picture.
Then an artifact scan is especially important. Bundled or minified outputs can contain third-party code and license terms or notices that are only visible in the final build, not in the top-level source tree alone.
The robot button is the single-item investigation path. Click it on any row to copy an AI Agent prompt for that specific license finding or CVE directly to your clipboard.
Paste the prompt into your AI coding agent to investigate that single item in the context of your application.
For investigating many items at once, use Bulk License Review or Bulk Investigate instead. Each bulk export creates individual JSON prompt files plus an AgentPrompt.md that drives the entire batch with one instruction to your agent.
They're batch versions of the 🤖 prompts. Instead of copying prompts one-by-one, OSSScan can export one JSON prompt file per item into a folder you choose.
In the app UI, Bulk License Review shows a disclaimer and requires you to check I agree before the export button enables. In CLI/headless mode, use --ack-license-ai-not-legal-advice with --bulk-license instead.
Tip: because bulk exports are based on what's visible, filtering is the fastest way to reduce the number of investigations (and token usage).
Bulk exports also include a short instruction file in each folder:
ossscan.agent_job.json (machine-readable job manifest)AgentPrompt.md (deterministic starter prompt for agent runners)Licenses/LicenseInstructions.mdCVE/CVEInstructions.md
Each bulk folder also includes an Evaluations/ subfolder to store agent-written outputs.
OSSScan is intentionally "prompt factory, not AI platform": it sets up consistent investigations (and exports a tiny job manifest), but it doesn't ship an AI model or store agent results.
By default, bulk exports enable overwriting so re-exports stay in sync with your current filters/selection. Turn off overwrite if you want to keep existing files unchanged.
severity:critical or severity:critical,high)..json files you want to skip.
The runner will only process the requests that remain.
AgentPrompt.md contains all instructions the agent needs to work through every item in the folder.Evaluations/ as directed by the instructions.In most agent environments, the easiest instruction is: "Open AgentPrompt.md and follow it exactly."
OSSScan also displays quickstart steps in-app via Agent Instructions → VS Code (GitHub Copilot)… or Agent Instructions → Claude Desktop (Code/Local)….
Tested paths: Claude Code (terminal CLI) and GitHub Copilot (VS Code Agent mode). Cursor and Windsurf use the same approach and should work with any version that supports agentic file operations.
Think of it as: AI does the heavy lifting; humans keep the steering wheel. For larger projects, this can shift work from time-consuming investigation to review/decision-making and can significantly reduce turnaround.
OSSScan bulk exports include an AgentPrompt.md entrypoint. The simplest instruction is:
"Open AgentPrompt.md and follow it exactly."
Licenses/ or CVE/ folder) using /add-dir.AgentPrompt.md inside that folder and follow it exactly.
This workflow requires a Claude account with Code/Local enabled so Claude can read the job files and write results to Evaluations/.
Yes. OSSScan supports two CLI-driven modes that are designed to work well with automation and agentic frameworks.
--headless): runs the requested job and exits automatically when complete.--ui): launches the UI, auto-runs the job, and keeps the app open so a user can take over and do manual investigations.In both modes, the scan directory and output folder come from CLI arguments, so OSSScan does not need "Browse…" / export dialogs. These modes also fail fast (no dialogs) if the license is invalid/missing or if the Terms of Use have not been accepted.
Bulk license prompt export requires --ack-license-ai-not-legal-advice. The Create Command Line dialog adds it for you when you enable the acknowledgement checkbox; if you type an explicit --bulk-license command without it, the CLI fails instead of exporting.
Copyleft analysis can scan your selected folder for import/reference hints to help explain whether a dependency appears to be used. If you loaded an SBOM (instead of scanning a local folder), OSSScan may not have the filesystem context it needs to find imports.
Also, "no imports found" can be valid evidence that a package is transitive, build-time only, vendored, or dynamically loaded.
"KEV" indicates the finding is marked as known exploited in the upstream vulnerability data. It's a prioritization hint, not a guarantee your application is exploitable; use the 🤖 investigation prompt to evaluate reachability in your codebase.
Load SBOM… currently expects an SPDX JSON SBOM file. When you scan a folder, OSSScan generates an SPDX JSON SBOM automatically.
When an SBOM is loaded, OSSScan may normalize license fields for consistency.