repyyDocs

repyyDocumentationDetection coverage

Detection coverage

Know what the scan can see.Know where review still matters.

This guide maps repyy’s built-in static checks to their rule IDs, explains the controls that reduce false positives, and names the boundaries that a scan deliberately leaves outside its scope.

Static Source is read as dataContextual Findings retain file rolesHonest Limits become incomplete results
An acceptance map, not a guarantee

Exact indicators age. Heuristics can produce false positives and false negatives.NO FINDINGS means no enabled rule matched within completed coverage; it does not prove safety.

Coverage map

Generated from the built-in behavioral catalog for ruleset 2026.10.27. Each ID links to its exact scope, base severity and confidence, legitimate use, and review action. Package and hash advisories belong to the separate intelligence snapshot.

Detection areaRule IDs and description
agent executionAGENT-001 AI-agent configuration requests automatic command execution (high/medium; raw)
archive traversalARCHIVE-001 Archive entry escapes its extraction root (critical/high; structured)
auth bypassBACKDOOR-002 Hardcoded authentication bypass or universal credential (high/medium; raw)
backdoorBACKDOOR-001 Request-controlled input reaches command execution (critical/high; code)
binary fontFONT-002 Binary font file requires provenance review (medium/high; structured)
broken symlinkSYMLINK-002 Symbolic link target is unavailable (medium/medium; structured)
build commandBUILD-001 CMake configuration executes an external command (medium/high; raw)
BUILD-002 Meson configuration executes an external command (medium/high; raw)
BUILD-003 Bazel rule declares a shell command (medium/medium; raw)
BUILD-004 Make evaluates a shell command while reading the build file (high/high; raw)
ci artifact trustCICD-006 Privileged workflow_run job executes after downloading an artifact (high/medium; structured)
ci cache integrityCICD-007 Low-trust workflow explicitly allows cache writes (high/medium; structured)
ci runner trustCICD-008 Pull-request workflow runs on a self-hosted runner (high/medium; structured)
ci secret exposureCICD-002 CI workflow interpolates untrusted event data into a shell command (high/medium; raw)
CICD-004 CI command sends a secret to an external endpoint (critical/high; raw)
ci workflow injectionCICD-001 Privileged pull_request_target workflow checks out untrusted pull-request code (critical/high; raw)
CICD-005 Non-GitHub CI configuration builds a shell command from change-controlled input (high/medium; raw)
ci workflow integrityCICD-003 GitHub Action is referenced by a mutable tag or branch (high/high; structured)
collection and exfiltrationCOMBO-001 Collection appears alongside network transfer (high/high; structured)
compiled binaryBINARY-001 Compiled executable content is present (high/high; structured)
composer package sourcePHP-002 Composer defines alternate package repositories (medium/medium; structured)
composer plugin executionPHP-003 Composer permits every dependency plugin to execute (high/high; structured)
composer scriptPHP-001 Composer package defines an installation or update script (high/medium; raw)
contagious interviewAPT-001 BeaverTail or InvisibleFerret filesystem indicator (high/high; raw)
container download executeDOCKER-002 Container build downloads and immediately executes a script (critical/high; raw)
container riskDOCKER-001 Container configuration exposes host control (high/medium; raw)
DOCKER-003 Container imports remote content or mounts a sensitive host path (high/medium; raw)
credential harvestingCRED-001 Access to sensitive credential storage (high/high; raw)
CRED-002 File API reads a sensitive path (high/medium; raw)
credential theftEXFIL-002 Clipboard, cookie, browser-password, or keylogging access (high/medium; raw)
cryptominingMINER-001 Cryptocurrency mining indicator (high/high; raw)
decode executeCHAIN-002 Encoded content decoded and executed (critical/high; raw)
decoded indicatorDECODE-001 A bounded literal decode reveals a rule indicator (high/medium; structured)
dependency confusionPKG-005 Dependency uses an unusually high major version (medium/medium; structured)
dependency overridePKG-008 Dependency override changes package source or identity (high/medium; structured)
devcontainer feature installationIDE-006 Devcontainer configuration installs reusable features (medium/high; raw)
development shell executionAUTORUN-002 Nix development shell defines a shell hook (medium/high; raw)
directory auto executionAUTORUN-001 Directory-entry environment hook can execute repository-controlled commands (high/medium; raw)
document active contentDOC-001 PDF declares active or embedded content (high/medium; structured)
dotnet build executionDOTNET-001 MSBuild project or imported file runs a command (high/medium; structured)
download executeCHAIN-001 Remote download piped into a command interpreter (critical/high; raw)
CHAIN-003 Downloaded file is made executable and launched (critical/medium; raw)
dynamic executionEXEC-001 Dynamic code execution primitive (high/medium; code)
EXEC-003 Browser or timer string execution primitive (high/medium; raw)
dynamic importIMPORT-001 Dynamic import or require assembled at runtime (high/medium; code)
IMPORT-003 Node.js internal or global require bypass (high/high; code)
editor auto executionIDE-001 Editor configuration can execute a command automatically (high/high; raw)
IDE-002 Project-local editor configuration can execute commands, override tools, or weaken workspace safeguards (high/medium; raw)
editor commandIDE-005 Workspace task or debug configuration references an executable command (medium/high; raw)
editor extension capabilityIDE-008 VSIX extension declares activation or execution capabilities (medium/high; structured)
editor extension install scriptIDE-009 VSIX extension package declares an installation lifecycle script (high/high; structured)
editor extension installationIDE-004 Repository configuration installs VS Code extensions (medium/high; raw)
editor extension packageIDE-007 Packaged VSIX editor extension is present (medium/high; structured)
editor extension recommendationIDE-003 Workspace recommends VS Code extensions (low/high; raw)
encoded executionEXEC-005 PowerShell executes an encoded command (critical/high; raw)
encoded payloadOBFS-001 Long base64-like payload (medium/medium; raw)
environment accessENV-001 Broad environment-variable access (medium/low; code)
escaping symlinkSYMLINK-001 Symbolic link escapes the repository (high/high; structured)
evasion and executionCOMBO-003 Environment evasion appears alongside execution (high/high; structured)
executable fileEXECBIT-001 File has executable permissions (low/medium; structured)
exfiltrationEXFIL-001 WebSocket or DNS-based data transfer primitive (high/medium; raw)
fetch and executeCOMBO-002 Network retrieval appears alongside execution (critical/high; structured)
font active contentFONT-004 OpenType SVG glyph contains active content (medium/medium; structured)
font container integrityFONT-003 Font container is malformed or contains an executable payload (high/high; structured)
font installationFONT-001 Script installs or registers fonts on the host (medium/high; raw)
font programFONT-005 Font contains TrueType instructions (low/high; structured)
git hookGITHOOK-001 Executable Git hook or hooks-path override (high/medium; raw)
GITHOOK-002 Active Git hook contains execution or remote-fetch behavior (critical/high; structured)
GITHOOK-003 Repository config installs and runs pre-commit hooks (medium/high; raw)
git metadataGITMETA-001 Git configuration defines an executable filter or helper (critical/high; raw)
global accessOBFS-009 Exported router accesses Node global state (medium/low; raw)
go generateGO-001 Go source declares a generator command (medium/high; raw)
go module replacementGO-002 Go module replaces a dependency source (medium/medium; raw)
hardcoded networkIPURL-001 URL uses a hardcoded public-looking IP address (medium/medium; raw)
high entropy codeOBFS-005 High-entropy content appears beside execution (medium/medium; structured)
host fingerprintingFINGERPRINT-001 Host or user fingerprint collection (medium/low; code)
image active contentIMAGE-001 SVG contains active content (medium/medium; structured)
jvm build executionJVM-001 JVM build configuration invokes an external process (high/medium; raw)
jvm repositoryJVM-002 JVM build uses a custom dependency repository (medium/medium; raw)
jvm wrapper integrityJVMWRAP-002 JVM wrapper distribution has no expected SHA-256 (medium/high; structured)
JVMWRAP-003 JVM wrapper distribution SHA-256 is malformed (high/high; structured)
jvm wrapper sourceJVMWRAP-001 JVM wrapper distribution URL is missing or redirects from the official source (high/high; structured)
known malicious fileIOC-HASH-SHA256 File hash matches confirmed intelligence (critical/high; structured)
known malicious packageIOC-PKG-* Package declaration matches confirmed intelligence (critical/high; structured)
lockfile tamperingLOCK-001 Lockfile resolves a package from a nonstandard URL (high/medium; raw)
minified or obfuscatedOBFS-004 Very long single line (low/low; structured)
nuget package sourceNUGET-001 NuGet configuration uses an alternate package source (medium/medium; structured)
office dynamic data exchangeDOC-004 Office document contains a Dynamic Data Exchange field (high/medium; structured)
office external relationshipDOC-003 Office package references external content (medium/high; structured)
office macroDOC-002 Office package contains a VBA macro project (high/high; structured)
package aliasPKG-009 Dependency name resolves to a different registry package (medium/medium; structured)
package binaryPKG-004 Package exposes an executable command (low/medium; structured)
PKG-006 Package binary target escapes the package or embeds execution (high/high; structured)
package lifecyclePKG-001 Package lifecycle script is present (medium/medium; structured)
package manager executionYARN-001 Project selects a local Yarn executable (medium/high; structured)
package manager pluginYARN-002 Project loads a Yarn plugin (medium/high; structured)
package registryNPMRC-001 Package manager configuration contains a registry credential (high/high; raw)
NPMRC-002 Custom package registry (medium/medium; raw)
package scriptPKG-007 Package script downloads and executes content (high/medium; structured)
path traversalPATH-001 Request-controlled path reaches a file operation (medium/medium; code)
process capabilityEXEC-004 Process-execution API is imported (low/medium; raw)
process executionEXEC-002 Operating-system command execution (high/medium; code)
prompt injectionAGENT-002 Instruction attempts to override agent safety or expose secrets (high/medium; raw)
prototype evasionOBFS-008 Constructor or prototype access can bypass direct-call signatures (medium/low; raw)
prototype pollutionPROTO-001 Write to JavaScript prototype internals (high/medium; code)
proxy executionEXEC-006 Windows system utility can proxy execution or download content (high/high; raw)
python dependency sourcePY-002 Python dependency is loaded from a URL or VCS source (high/medium; raw)
python install hookPY-001 Python package defines installation-time command hooks (high/medium; raw)
python package sourcePY-003 pip configuration changes package lookup sources (medium/medium; structured)
python startup hookPY-004 Python .pth file contains a startup import line (medium/high; raw)
PY-005 Python startup customization module contains content (medium/high; raw)
remote fetchNET-001 Remote content fetch (medium/low; raw)
remote importIMPORT-002 Code imported directly from a remote URL (critical/high; raw)
remote response executionFLOW-001 Axios response data reaches dynamic or process execution in the same function (critical/high; structured)
FLOW-002 Python remote response may reach dynamic code execution or compilation (high/medium; structured)
repository hygieneREPO-001 Repository has no top-level README (low/high; structured)
REPO-002 Repository has no top-level license (low/high; structured)
reverse shellREVSHELL-001 Reverse or bind shell behavior (critical/high; raw)
REVSHELL-002 Language one-liner creates a command shell over a socket (critical/high; raw)
ruby dependency sourceRUBY-001 Ruby dependency is loaded from a Git or path source (high/medium; raw)
ruby package sourceRUBY-002 Bundler package source is redirected (medium/medium; structured)
rust build scriptRUST-001 Rust package declares a build script (medium/high; raw)
RUST-002 Cargo automatically executes a package build.rs (medium/high; structured)
rust dependency overrideRUST-004 Cargo dependency source override (high/medium; structured)
rust dependency sourceRUST-005 Cargo dependency uses a non-default source (high/medium; structured)
rust registry redirectionRUST-003 Cargo configuration redirects dependency resolution (high/high; structured)
sandbox evasionEVADE-001 Sandbox, VM, or CI evasion logic (high/medium; raw)
secretSECRET-001 Private key material (high/high; raw)
SECRET-002 Provider credential pattern (high/high; raw)
SECRET-003 Generic API key, access token, or client secret assignment (high/medium; raw)
shell persistenceSHELL-001 Shell profile or operating-system startup persistence (high/medium; raw)
social engineeringSOCIAL-001 Instructions pressure the reader to bypass security controls (medium/medium; raw)
SOCIAL-002 Interview instructions combine urgency with execution pressure (low/medium; raw)
staged download executeCHAIN-004 Downloaded file is executed later in the same script (critical/high; structured)
startup configurationPERSIST-002 Repository contains an automatically started service, timer, or launchd job (medium/high; raw)
string obfuscationOBFS-002 String decoding or character-code construction (medium/medium; raw)
OBFS-003 Dense hexadecimal or Unicode escape sequence (medium/low; raw)
OBFS-006 Runtime string reversal or computed global access (medium/medium; raw)
OBFS-007 Character shuffler associated with generated obfuscators (medium/medium; raw)
suspicious dependency sourcePKG-002 Dependency uses a non-registry source (high/medium; structured)
suspicious dependency versionPKG-003 Dependency uses a placeholder-like version (medium/medium; structured)
suspicious networkNET-002 Known exfiltration or tunneling service endpoint (high/high; raw)
system installationINSTALL-001 Setup script installs host packages or global developer tools (medium/high; raw)
system persistencePERSIST-001 Command creates a service, daemon, login item, or WMI event subscription (critical/high; raw)
typosquattingTYPOSQUAT-001 Dependency resembles a commonly targeted package name (high/medium; raw)
unicode obfuscationUNICODE-001 Invisible or bidirectional Unicode control character (high/medium; raw)
unsafe deserializationUNSERIALIZE-001 Unsafe deserialization primitive (high/medium; code)

Supply-chain files by ecosystem

These are static review signals in repository files. An alternate source or build hook can be intentional; repyy does not install, resolve, or execute it.

Node/npm, Yarn, pnpmpackage.json lifecycle scripts, non-registry dependencies across all four scopes, aliases checked by actual package name, nested overrides and resolutions; registry settings, Yarn executable/plugins, and suspicious lockfile URLs.npm package spec· Yarn settings
Pythonrequirements*.txt, pip config, Pipfile, pyproject.toml, and uv.toml alternate indexes or unsafe uv strategy; setup hooks and direct URL/VCS dependencies. Executable .pth import lines use Python BOM and line-ending handling, andsitecustomize.py/usercustomize.py startup modules are review signals, including in locally present wheels.pip format· uv indexes· Python startup
RubyGemfile and .bundle/config alternate sources or mirrors and inline Git/path gems. Gemfile.lock has generic text checks, not a resolved-source audit. Bundler Gemfile
Gogo.mod/go.work replacements, including block form, and //go:generate. go.sum hashes are not independently audited. Go module reference
RustCargo.toml declared or sibling build.rs execution, Git/path/registry dependencies, and overrides;.cargo/config.toml source replacement. Cargo.lock is not resolved.Cargo build scripts·source replacement
Java/JVMMaven and Gradle build/repository rules; Gradle/Maven wrapper distribution URLs and SHA-256 settings.Gradle Wrapper·Maven Wrapper
PHPcomposer.json scripts, alternate repositories, and unrestricted plugin permission. composer.lock has generic text checks, not a resolved-source audit.Composer repositories·plugin permissions
.NETNuGet.Config feeds and wildcard mappings; project and centrally managed Directory.Packages.props dependencies; MSBuild Exec in project, .props, and .targets files.NuGet configuration·MSBuild Exec

How repyy improves precision

Rules are interpreted with context so a suspicious token in a test fixture is not treated exactly like the same token in an install hook. Precision changes the review signal; it never turns a scan into proof of safety.

Match scoperaw checks content, code separates executable tokens from common comments and literals, and structured checks parse supported formats.
File rolesExecutable code, CI/install hooks, manifests, docs, examples, tests, evidence, generated output, dependencies, rule definitions, metadata, and archive entries are distinguished.
CorrelationsBehavior chains require distinct actionable signals from executable code. Imports, generated examples, and low-confidence matches cannot create a high-confidence chain alone.
Context downgradeDocumentation, tests, fixtures, and signature corpora may be downgraded. Confirmed IOCs are never silenced by contextual downgrades.
Noise exclusionsLong-line and entropy checks skip lockfiles, source maps, and known generated output; entropy must be near an execution primitive.
Indicator parsingPackage names are matched only in parsed manifests. A sourced affected version can become a confirmed IOC; an uncertain range remains a review signal.
Path matchingRule globs compare case-insensitively. Common agent instruction files receive instruction context; ordinary documentation and test fixtures retain contextual downgrades.

Artifact findings require a download of an upstream run’s artifact followed by a command in the same workflow_run job. Cache-write findings require pull_request_target, issue_comment, or workflow_run with effective write orwrite-only cache mode. They prompt review of upstream trust and job behavior; see GitHub’ssecure-use guidanceandcache access guidance. CI interpolation and secret-egress checks also inspect decoded multiline run blocks one step at a time. A pull_request job on a self-hosted runner is a review signal because the scanner cannot infer repository visibility or fork-approval settings; see GitHub’srunner warning.

Every finding keeps matched locations, occurrence totals, confidence, disposition, and a stable fingerprint. Display controls such as--min-severity, --min-confidence, and --detail change what you see, not the verdict or exit code.

Focus a review
repyy scan ./repo --min-severity high --min-confidence high --detail review

Coverage has a boundary

Default resource limits prevent hostile repositories and archives from exhausting the scanner. When a timeout, limit, permission, clone, archive, or read error reduces coverage, the result is SCAN INCOMPLETE.

Per repository10 minute timeout · 100,000 files · 50 MiB per file
Per archive10,000 entries · 1 GiB uncompressed bytes · 3 nested levels
Dependency treesSkipped by default; opt in with --include-dependencies
Adjust deliberately
repyy scan ./repo --timeout 20m --max-files 150000 --max-file-size 104857600

Review the coverage warnings before relying on a result. Exit code2 indicates an incomplete target, even if another target completed successfully. Seethe exit-code reference for automation behavior.

Package-manager options such as pip -r/-c are not followed, build configuration is not evaluated, and declared declarations are not fully reconciled with resolved lockfile content; npm lockfile versions are checked as separate package records. Wrapper archive hashes are checked for presence and format, not verified against downloaded bytes. Sibling build.rs detection applies to unpacked repository files.

Raster-image metadata and pixels are not parsed for embedded instructions or scripts. Valid text SVG files are inspected for active content. Binary fonts are never rendered: container/table bounds, selected structural invariants, expansion claims, embedded executable signatures, TrueType program presence, and active OpenType SVG content are checked, with embedded SVG expansion capped at 8 MiB. The scanner does not execute or prove arbitrary glyph or shaping bytecode safe.

PDF and Office checks are static: explicit PDF actions, embedded macro projects, Office external relationships, and DDE fields are reported without opening the document. Encrypted content and arbitrary compressed PDF object streams are not evaluated. VSIX archives are inspected for activation and execution contributions, lifecycle scripts, and bundled executable signatures, but extension behavior is not executed.

Repyy does not inventory deployed runtimes or confirm runtime vulnerability exposure. Patch deployed runtimes independently of a source scan. A checkout cannot establish the contents of a future dependency download: inspect the exact locally available wheel or tarball and review archive-limit warnings. Disabling npm lifecycle scripts does not prevent later import-time execution.

Python response-flow review (FLOW-002) follows simple requests/httpx/urllib calls, assignments and response reads intoexec, eval or compile, retaining source and sink locations. Compilation alone is not execution. API identities and control flow are approximate; arbitrary transforms, cross-function or cross-file flows, downloaded files launched as subprocesses, and equivalent flows in every language require manual review.

Deliberate exclusions

Some signals are outside the scanner’s private, offline boundary or would create misleading accusations.

Language

Non-English comments are not evidence of malware and are not scored.

Online identity

GitHub account age, followers, and activity are not collected. They would require sending identifiers to an online API.

Network ranges

Loopback, private, unspecified, link-local, and multicast addresses are excluded from raw-IP alerts.

Known generated content

Lockfiles, source maps, generated output, and full-SHA-pinned GitHub Actions receive targeted exclusions where appropriate.

Offline intelligence is explicit

Scans never contact the update service or upload repository data. Userepyy intel status to inspect snapshot age; use repyy intel update only when you choose to download a signed public snapshot.

Explain a rule before acting

Rule explanations are available offline and show the rule’s severity, confidence, disposition, category, matching scope, applicable paths, rationale, legitimate-use context, and recommended action.

Browse the versioned behavioral rule reference or export it with repyy rules catalog --format json.

Terminal explanation
repyy rules explain EXEC-001
Machine-readable explanation
repyy rules explain EXEC-001 --format json

For package indicators, explanation includes the active snapshot’s advisory source and affected-version context. A package name alone is a review signal; verify the resolved version and artifact before deciding.

Inspect the active intelligence

Built-in behavioral rules and the dated offline intelligence snapshot are separate inputs. The snapshot adds sourced package/version advisories and exact published file hashes.

Snapshot status
repyy intel status
Intelligence indicators and sources
repyy rules list
JSON for tooling
repyy rules list --format json

Every report records the ruleset and intelligence snapshot used, so a finding can be audited later. Readthe intelligence guide for update and rollback behavior.

A practical review workflow

1
Check coverage first

Look for SCAN INCOMPLETE, skipped dependency trees, archive warnings, and the snapshot date.

2
Start with blocking signals

Open high-confidence critical findings in executable, install-time, or CI code. Then review hardening and informational findings.

3
Read the surrounding evidence

Use the location, file role, match scope, rationale, and legitimate-use context. A rule hit is a prompt for inspection.

4
Choose a controlled next step

Ask the owner for context, continue in an isolated environment, or stop. Keep dependencies and target code unexecuted until review is complete.

Need the command-level details?

Return to the main documentation, or open the dedicated CLI reference andconfiguration guide.