@factory/cli@0.234.0
Factory Droid CLI - AI-powered software engineering agent
AI Security Review
scanned 29d ago · by lpm-firewall-aiThe inspected lifecycle and entrypoints implement package-aligned native CLI installation and execution. Download integrity and hostname-validation weaknesses do not establish a concrete attack in the inspected call chain.
Decision evidence
public snapshot- package.json runs install.js after installation and declares matching-version Factory platform dependencies, without a runtime self-dependency.
- install.js obtains the selected platform release from registry.npmjs.org and downloads its tarball.
- install.js writes the extracted executable into its own bin directory and replaces its own CLI shim.
- NPM_TOKEN authentication is gated by the request hostname; the inspected callers use npm registry metadata rather than an operator-configured endpoint.
- platform.js resolves platform executables; bin/droid launches the selected executable with caller arguments.
- The fallback download lacks archive integrity verification and executes the binary for version validation.
- The npm authentication hostname check uses substring matching, which is weaker than an exact hostname allowlist.
Source & flagged code
7 flaggedPackage defines install-time lifecycle scripts.
package.jsonView on unpkgInstall-time source downloads a native archive from a fixed external host without transport verification, extracts it, and installs an executable payload.
package.jsonView on unpkg · L9Install-time lifecycle script is not statically allowlisted and needs review.
Findings
Affected versions and remediation
This report applies to @factory/cli@0.234.0.
See all versions of @factory/cli for other recorded verdicts.
- Review the evidence and your use of @factory/cli@0.234.0 before allowing it. Restrict the permissions described in this report.
- Choose an independently verified alternative or release. This report does not establish that other versions are safe.
Evidence last updated: .
Think this verdict is wrong? Dispute it on GitHub or read how reports are produced.