AI Security Review
scanned 2h ago · by lpm-firewall-aiPostinstall can fetch the package-aligned platform binary only when the optional platform dependency is missing. The CLI then executes that resolved binary with user-supplied arguments; no confirmed malicious behavior exists in this wrapper source.
Static reason
One or more suspicious static signals were detected.
Trigger
npm postinstall without a platform optional dependency; later explicit `dagu` CLI or API use.
Impact
Writes an executable fallback binary inside the package directory and executes it only when invoked.
Mechanism
package-aligned fallback binary download and launcher delegation
Rationale
The lifecycle downloader is a package-aligned fallback for declared optional platform packages and extracts only the expected binary. Static source inspection found no credential theft, exfiltration, stealth persistence, agent-control mutation, or remote code execution beyond the intended Dagu binary launcher.
Evidence
package.jsoninstall.jsbin/cliindex.jslib/platform.js
Network endpoints1
registry.npmjs.org/@dagucloud/{platform-package}/-/{platform-package}-2.10.5.tgz
Decision evidence
public snapshotAI called this Clean at 91.0% confidence as Benign with low false-positive risk.
Evidence for block
- `package.json` runs `node ./install.js` at postinstall.
- `install.js` downloads and writes a platform executable when its optional dependency is unavailable.
- `bin/cli` and `index.js` execute the resolved Dagu binary.
Evidence against
- `install.js` targets only `registry.npmjs.org` and the matching `@dagucloud/dagu-*` package/version.
- Downloaded content is limited to the expected `package/bin/dagu` or `dagu.exe` path.
- No source reads credentials, environment secrets, SSH files, agent settings, or unrelated user files.
- No eval, shell invocation, persistence, destructive operation, or AI-agent control-surface mutation was found.
Behavioral surface
ChildProcessFilesystemNetwork
UrlStrings
CopyleftLicense
Source & flagged code
2 flagged · loading sourcepackage.jsonView file
•scripts.postinstall = node ./install.js
High
Install Time Lifecycle Scripts
Package defines install-time lifecycle scripts.
package.jsonView on unpkg•scripts.postinstall = node ./install.js
Medium
Ambiguous Install Lifecycle Script
Install-time lifecycle script is not statically allowlisted and needs review.
package.jsonView on unpkgFindings
1 High2 Medium4 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumNetwork
LowScripts Present
LowFilesystem
LowUrl Strings
LowCopyleft License