registry  /  @kasabeh/baton-mcp  /  0.3.0

@kasabeh/baton-mcp@0.3.0

Pass the baton between coding agents. Convert any coding-agent session to any other, and wire itself into every agent's MCP config.

AI Security Review

scanned 2h ago · by lpm-firewall-ai

Postinstall retrieves a platform-specific opaque native archive and installs it locally. The CLI later executes that downloaded binary.

Static reason
One or more suspicious static signals were detected.
Trigger
npm postinstall; later invocation of `baton`
Impact
A changed or redirected release artifact can execute with installer or CLI user privileges.
Mechanism
unverified remote binary download, extraction, and execution
Rationale
No concrete malicious source behavior is present in the JavaScript wrapper, but its postinstall delivery and execution of an unverified opaque binary leave a material unresolved supply-chain risk.
Evidence
package.jsoninstall.jsbinary.jsbinary-install.jsrun-baton.jsnode_modules/.bin_real
Network endpoints1
github.com/Kaseban/baton/releases/download/v0.3.0

Decision evidence

public snapshot
AI called this Suspicious at 86.0% confidence as Dangerous Capability with low false-positive risk.
Evidence for warning
  • `package.json` runs `node ./install.js` on postinstall.
  • `binary.js` builds a GitHub Releases artifact URL from the manifest.
  • `binary-install.js` downloads with redirects and has no checksum/signature verification.
  • `binary-install.js` extracts the downloaded archive into `node_modules/.bin_real`.
  • `run-baton.js` executes the downloaded `baton` binary.
Evidence against
  • JavaScript source only reads proxy environment variables, not credentials or files.
  • Network destination is package-aligned GitHub Releases.
  • No JS evidence of exfiltration, destructive actions, eval, or config writes.
Behavioral surface
Source
ChildProcessEnvironmentVarsFilesystemNetwork
Supply chain
UrlStrings
ManifestNo manifest risk signals triggered.
scanned 4 file(s), 13.4 KB of source, external domains: example.com

Source & flagged code

2 flagged · loading source
package.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 unpkg

Findings

1 High3 Medium3 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumNetwork
MediumEnvironment Vars
LowScripts Present
LowFilesystem
LowUrl Strings