paseo-spyware-check ยท diff
git:20261013.0234766 to git:20261020.1d9fdc5
33 added, 41 removed. Audit A to A.
---
name: paseo-spyware-check
description: >-
Inspect a GitHub repository or local checkout for spyware, malware, credential
theft and supply-chain risks before running it. Use for explicit repository
safety reviews; perform static inspection without executing target code.
---
# Paseo Spyware Check
- Inspect the selected repository without running its install, build, test,
- lifecycle scripts or binaries. A static risk verdict is not a guarantee of safety.
- This skill is independent of Paseo's daemon and workspace lifecycle.
+ Static review only: never run the target's install, build, test, lifecycle
+ scripts, modules or binaries. That is the point of this skill. A static verdict
+ is not a guarantee of safety.
- ## Choose the smallest useful scan
+ ## Scan
- Resolve this skill's installed directory, then prefer the cross-platform,
- Python-stdlib helper for a redacted machine-readable receipt:
+ Start with the stdlib helper (on Windows use `python` or `py -3`):
```text
python3 <skill-dir>/scripts/spyware-check.py <github-url-or-local-path> --timeout 180
```
- On Windows use `python` or `py -3`. Schema v2 records immutable GitHub source
- identity or a local snapshot, finding IDs/severity, policy decision, truncation
- and a receipt digest. Review the receipt's coverage and decision: exit 0 means
- receipt generation succeeded, not that the repository is safe. A receipt digest
- checks integrity, not trusted authorship or a signature.
- `--timeout` bounds each Git subprocess, not the entire filesystem snapshot/scan.
+ It writes a redacted JSON receipt (schema v2): source commit or local snapshot,
+ findings with severity, policy decision, truncation. Exit 0 means the receipt
+ was written, not that the repo is safe. `--timeout` bounds each Git call.
- Use [extended scanner/manual review](references/review.md) only when optional
- scanner coverage, a shell/PowerShell report or deeper manual inspection is useful.
- Those helpers have broader heuristics and different classification from schema
- v2; do not combine their counts as equivalent results. No scanner binaries/rules
- are vendored. Keep existing scanner versions unless an update is requested.
+ For deeper coverage, use the shell/PowerShell helpers and optional scanners in
+ [references/review.md](references/review.md). Their heuristics differ from
+ schema v2; report them separately rather than adding counts. If a scanner is
+ missing and the extra coverage is worth it, install it with the bundled
+ installer and say what you installed. For confidential or offline targets, skip
+ tools that download rules or send package inventories.
## Review the evidence
- - Identify the exact URL/path, commit and scan scope. A shallow clone lacks full
- history; a local snapshot can include uncommitted files. Check skipped, large,
- binary, generated and truncated content before interpreting zero findings.
- - Inspect executable/configuration paths that can read credentials, persist,
- fetch/run remote code or send data. Documentation examples and API-key variable
- names alone do not prove malicious behavior. Correlate findings with callers,
- execution triggers and network destinations.
- - Use only installed optional scanners. Show the exact package-manager command
- before requesting scanner installation; do not execute project code as a scan.
- - Optional tools may download rules/databases or query package inventories.
- For confidential/offline work, use the stdlib helper and local rules/cached
- databases only; missing coverage remains missing. Never run OSV `fix` here.
- - Do not verify found secrets against providers. Never print secret values or
- upload raw matches, scanner logs or full report directories. Summarize with
- paths, line numbers and redacted evidence. Inspect target-controlled scanner
- exclusions/configuration; suppressed findings are not proof of safety.
+ - Note the exact URL/path, commit and scope. A shallow clone lacks history; a
+ local snapshot can include uncommitted files. Check skipped, binary,
+ generated and truncated content before trusting zero findings.
+ - Read the code paths that touch credentials, persistence, remote code or
+ network sends. Docs and API-key variable names alone are not malicious;
+ correlate with callers, triggers and destinations.
+ - Target-controlled scanner exclusions or config can hide findings; inspect
+ them.
+ - Never verify found secrets against providers, print secret values, or upload
+ raw matches, logs or report directories. Cite paths, line numbers and
+ redacted evidence. Never run `osv-scanner fix`.
- ## Report and stop
+ ## Report
- Give the verdict and concrete evidence, exact checked revision/snapshot,
- available/failed/missing tools, coverage limits and the next justified action.
- Distinguish actual credential material, reachable high-risk behavior, suspicious
- patterns and items needing manual review. On a clean complete static pass, say
- "no high-risk indicators found in this static pass". Missing/truncated/failed
- coverage cannot support an unqualified clean verdict. No automatic install,
- remediation, target execution or credential rotation follows from this skill.
+ Verdict with evidence, the checked revision, tools that ran/failed/were
+ missing, coverage gaps, and the next sensible step. Separate real credential
+ material, reachable high-risk behavior, suspicious patterns and items needing
+ manual review. A clean complete pass is "no high-risk indicators found in this
+ static pass"; missing or truncated coverage cannot support an unqualified clean
+ verdict. Running the target, rotating credentials or remediation are the
+ user's call after the report.