Check weights
L80 pwdet runs the Poisoned Weights Detector on a local checkpoint, a Hugging Face repo or a served endpoint: static, provenance, black-box and white-box checks.
Free, no tokento scan;Needs a tokento publish
Scan
$ L80 pwdet scan Qwen/Qwen3-0.6B --json # {"verdict": ..., "report": ...}$ L80 pwdet scan ./model --profile full-static$ L80 pwdet checks listL80_PWDET_EXTRAS chooses the format extras installed with the pinned pwdet (default gguf,pickle); L80_PWDET runs your own copy.
Verdicts and exit codes
pwdet's verdict passes through as the exit status, so a script can branch on it.
| exit | verdict |
|---|---|
| 0 | Clean or inconclusive |
| 1 | Suspicious, or pwdet itself failed |
| 2 | Likely tampered or malicious |
An exit 2 here is pwdet reporting a tampered model, not an L80 usage error: wrapped tools keep their own exit codes once they start.
Publish a scan
$ L80 pwdet scan org/model --publish --dry-run --payload-out page.json # inspect the page first$ L80 pwdet scan org/model --publish # a scan.pwdet.v1 page (L80 1.2+)- The page carries the verdict with its assurance level (“CLEAN · Standard”), the findings to review and the coverage. L80 1.2 publishes it as
scan.pwdet.v1, with the scrubbed report.json, so it can be verified by re-running the scan; older versions, and reports over 256 KB, publish ageneric.report.v1page, which cannot. - It never carries the hostname, local paths or private endpoints: L80 removes them and refuses to publish if any remain.
- Agents:
L80 skills link --target claude-code --name l80-pwdet.