registry / @plannotator/opencode / 0.28.9
@plannotator/opencode@0.28.9
Plannotator plugin for OpenCode - interactive plan review with visual annotation
AI Security Review
scanned 26d ago · by lpm-firewall-aiThe install-time configuration change presents agent extension lifecycle risk and warrants a warning. Source inspection found no concrete attack behavior supporting a block.
Static reason
One or more suspicious static signals were detected.
Trigger
A package manager runs the package's postinstall script when the package is installed under node_modules, or the override environment variable forces the copy.
Impact
The agent gains Plannotator commands and reference material; existing files with matching names may be replaced.
Mechanism
The script copies package command markdown files and the Plannotator skill into the OpenCode config directory.
AI rationale
The install-time configuration change presents agent extension lifecycle risk and warrants a warning. Source inspection found no concrete attack behavior supporting a block.
Evidence
package.jsonscripts/postinstall.cjs
Network endpoints1
127.0.0.1
Decision evidence
public snapshotAI called this Suspicious at 86.0% confidence as Dangerous Capability with medium false-positive risk.
Evidence for warning
- The package runs a postinstall script that copies its command files and skill into the user's OpenCode configuration.
- The install copy is gated on the package being under node_modules or an explicit environment override.
- The package also makes localhost requests as part of its plugin behavior.
Evidence against
- The postinstall writes only package-owned command markdown files and the Plannotator skill; inspected source showed no broader agent configuration write.
- The inspected network request targets the local plugin service, and no credential exfiltration was identified.
Behavioral surface
ChildProcessCryptoDynamicRequireEnvironmentVarsEvalFilesystemNetworkShellWebSocket
HighEntropyStringsUrlStrings
Source & flagged code
4 flaggedpackage.jsonView file
•scripts.postinstall = node scripts/postinstall.cjs
High
Install Time Lifecycle Scripts
Package defines install-time lifecycle scripts.
package.jsonView on unpkg•scripts.postinstall = node scripts/postinstall.cjs
Medium
Ambiguous Install Lifecycle Script
Install-time lifecycle script is not statically allowlisted and needs review.
package.jsonView on unpkgdist/server.jsView file
5645if (existsSync9(builtPath)) {
L5646: return await import(pathToFileURL(builtPath).href);
L5647: }
Medium
Dynamic Require
Package source references dynamic require/import behavior.
dist/server.jsView on unpkg · L5645Findings
1 High6 Medium6 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumDynamic Requiredist/server.js
MediumNetwork
MediumEnvironment Vars
MediumOversized Source Filedist/embedded.js
MediumStructural Risk Force Deep Review
LowNon Install Lifecycle Scripts
LowScripts Present
LowEval
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings
Affected versions and remediation
This report applies to @plannotator/opencode@0.28.9.
See all versions of @plannotator/opencode for other recorded verdicts.
- Review the evidence and your use of @plannotator/opencode@0.28.9 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.