AI Security Review
scanned 2h ago · by lpm-firewall-aiLPM treats this as warn-only first-party agent extension lifecycle risk. Installing the package automatically generates ChainlessChain CLI skill packs in its desktop user-data directory. Those packs can later dispatch allowed ChainlessChain CLI commands; no install-time exfiltration or remote payload path was found.
Decision evidence
public snapshot- `package.json` runs `scripts/postinstall.mjs` on install.
- `scripts/postinstall.mjs` imports `src/lib/skill-packs/generator.js` without user interaction.
- `src/lib/skill-packs/generator.js` writes `SKILL.md` and `handler.js` into the ChainlessChain desktop user-data `skills/` directory.
- Generated direct-mode handlers invoke the package CLI through `spawnSync(..., { shell: true })`.
- `src/lib/async-hook-supervisor.cjs` can shell-spawn configured async settings hooks at runtime.
- Postinstall has no network API, credential collection, shell execution, or external payload download.
- The install-time writes target package-owned `chainlesschain-desktop-vue` user data, not a foreign agent configuration.
- Generated handlers validate command membership and reject shell metacharacters before execution.
- `src/lib/secret-scan.js` is a redaction/scanning utility; embedded secret-shaped strings are test corpus samples.
- `src/commands/update.js` and `src/auth/npm-auth.js` run npm commands only through explicit CLI actions.
Source & flagged code
19 flagged · loading sourcePackage defines install-time lifecycle scripts.
package.jsonView on unpkgInstall-time lifecycle script is not statically allowlisted and needs review.
package.jsonView on unpkgPackage contains a critical-looking secret pattern.
src/lib/secret-scan.jsView on unpkg · L186GitHub personal access token in src/lib/secret-scan.js
src/lib/secret-scan.jsView on unpkg · L186GitHub personal access token in src/lib/secret-scan.js
src/lib/secret-scan.jsView on unpkg · L187Package source references child process execution.
src/auth/npm-auth.jsView on unpkg · L6Package source references a known benign dynamic code generation pattern.
src/lib/plugin-ecosystem.jsView on unpkg · L86Package source references dynamic require/import behavior.
scripts/postinstall.mjsView on unpkg · L6Package source references weak cryptographic algorithms.
src/harness/prompt-compressor.jsView on unpkg · L680A single source file combines environment access, network access, and code or shell execution; review context before blocking.
src/lib/mcp-oauth.jsView on unpkg · L30Source combines command execution, command-output handling, and outbound requests; review data flow before blocking.
src/lib/mcp-oauth.jsView on unpkg · L30Source gates dangerous network, credential, or execution behavior behind CI, host, platform, time, or geo fingerprint checks.
src/commands/init.jsView on unpkg · L58Package source invokes a package manager install command at runtime.
src/commands/update.jsView on unpkg · L2This package version adds a dangerous source file absent from the previous stored version; route for source-aware review.
src/lib/async-hook-supervisor.cjsView on unpkg