registry  /  gurtcli  /  0.5.1

gurtcli@0.5.1

A coding agent in your terminal. Type what you want. It does the rest.

AI Security Review

scanned 6d ago · by lpm-firewall-ai

The package uses an install-time downloader to fetch and install a platform native executable. Source JS does not show exfiltration, persistence, or foreign AI-agent control-surface mutation, but the fetched binary is outside the inspected package contents.

Static reason
One or more suspicious static signals were detected.
Trigger
npm install runs postinstall; user runs gurtcli CLI
Impact
Unverified native binary is installed into the package and can run when the CLI is invoked
Mechanism
install-time remote binary download and CLI wrapper spawn
Attack narrative
On npm install, postinstall runs install.js, which chooses the current OS/architecture, downloads a matching gurtcli release archive from GitHub, extracts it into ./bin, and marks it executable. cli.js is a thin wrapper that checks for that binary and spawns it with inherited stdio when the user invokes gurtcli.
Rationale
Static package JS shows a package-aligned remote binary installer with no confirmed malicious behavior, exfiltration, persistence, or unconsented foreign agent-surface mutation. Because the executable payload is fetched at install time and is not present for source inspection, this remains a warn-level staged payload risk rather than clean or publish-block malware.
Evidence
package.jsoninstall.jscli.jsbin/gurtclibin/gurtcli.exeos.tmpdir()/gurtcli-*
Network endpoints1
github.com/gru/gurtcli/releases/download/v0.5.1/gurtcli_0.5.1_<platform>_<arch>.tar.gz

Decision evidence

public snapshot
AI called this Suspicious at 82.0% confidence as Dangerous Capability with medium false-positive risk.
Evidence for warning
  • package.json defines postinstall: node install.js
  • install.js downloads a platform archive from GitHub releases at install time
  • install.js extracts the archive with tar and chmods bin/gurtcli executable
  • cli.js later spawns bin/gurtcli with user arguments
Evidence against
  • No credential/env harvesting patterns found in package JS
  • No AI-agent control-surface writes such as CLAUDE.md, .mcp.json, or settings files
  • Network endpoint is package-aligned GitHub release URL for gru/gurtcli v0.5.1
  • Only package bin directory and temp install directory are written by inspected JS
  • No install-time execution of the downloaded gurtcli binary observed
Behavioral surface
Source
ChildProcessFilesystemNetwork
Supply chain
UrlStrings
ManifestNo manifest risk signals triggered.
scanned 2 file(s), 3.45 KB of source, external domains: github.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 High2 Medium3 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumNetwork
LowScripts Present
LowFilesystem
LowUrl Strings