AI Security Review
scanned 3h ago · by lpm-firewall-aiLPM treats this as warn-only first-party agent extension lifecycle risk. The postinstall hook mutates the package-owned CodeWhale configuration surface. It installs skills globally and adds CodeWhale workspace instructions, but no exfiltration or remote execution is present.
Static reason
One or more suspicious static signals were detected.
Trigger
npm postinstall or explicit `codewhale-tools-install` execution
Impact
Persistent CodeWhale command behavior in the user home directory and install workspace.
Mechanism
first-party CodeWhale skill and instruction installation
Rationale
This is a real install-time persistence/control-surface change, but it is limited to CodeWhale-owned paths and bundled content. It warrants a warning under the lifecycle-risk policy rather than a block.
Evidence
package.jsontools-install.js.codewhale/instructions.mdskills/history/SKILL.md_list_sessions.js_extract_office.js~/.codewhale/skills~/.codewhale/tools-readme.md~/.codewhale/CHANGELOG.md
Decision evidence
public snapshotAI called this Suspicious at 90.0% confidence as Dangerous Capability with low false-positive risk.
Evidence for warning
- `package.json` runs `codewhale-tools-install` at postinstall.
- `tools-install.js` copies bundled skills into `~/.codewhale/skills`.
- `tools-install.js` creates or appends project `.codewhale/instructions.md` using `INIT_CWD`.
- Bundled skills provide persistent CodeWhale command instructions.
Evidence against
- No network, HTTP, DNS, or socket APIs appear in executable JS.
- No shell, child_process, eval, dynamic import, or remote payload loading appears.
- `_list_sessions.js` only reads local CodeWhale session JSON and prints summaries.
- `_extract_office.js` only reads a user-supplied Office file and prints extracted text.
Behavioral surface
EnvironmentVarsFilesystem
NoLicense
Source & flagged code
2 flagged · loading sourcepackage.jsonView file
•scripts.postinstall = codewhale-tools-install
High
Install Time Lifecycle Scripts
Package defines install-time lifecycle scripts.
package.jsonView on unpkg•scripts.postinstall = codewhale-tools-install
Medium
Ambiguous Install Lifecycle Script
Install-time lifecycle script is not statically allowlisted and needs review.
package.jsonView on unpkgFindings
1 High2 Medium3 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumEnvironment Vars
LowScripts Present
LowFilesystem
LowNo License