registry  /  @emend-ai/utim  /  1.44.0

@emend-ai/utim@1.44.0

UTIM – Universal Terminal Intelligence Manager. An agentic AI coding assistant for your terminal.

AI Security Review

scanned 3d ago · by lpm-firewall-ai

The package has install-time and runtime execution that installs a Python companion package, which is a supply-chain expansion but matches the advertised CLI launcher behavior. No confirmed malicious payload or exfiltration is present in the inspected npm package source.

Static reason
One or more suspicious static signals were detected.
Trigger
npm install runs postinstall; invoking `utim` runs bin/utim.js
Impact
Installs or upgrades a Python dependency and executes it when the user runs the CLI; no malicious npm-side behavior confirmed.
Mechanism
postinstall/CLI wrapper installs and launches Python package `utim-cli`
Rationale
Static inspection found risky lifecycle and child_process behavior, but it is consistent with a thin npm launcher for a Python CLI and lacks credential harvesting, destructive actions, persistence, or exfiltration. Mark clean for the npm package source, with the Python `utim-cli` dependency outside this package as the remaining trust boundary.
Evidence
package.jsonscripts/postinstall.jsbin/utim.js
Network endpoints5
utim.devgithub.com/emendai/utim/issuesgithub.com/emendai/utim.gitregistry.npmjs.org/python.org

Decision evidence

public snapshot
AI called this Clean at 86.0% confidence as Benign with medium false-positive risk.
Evidence for block
  • package.json defines postinstall script `node scripts/postinstall.js`.
  • scripts/postinstall.js runs `python -m pip install --upgrade --quiet utim-cli` during npm install when Python exists.
  • bin/utim.js installs/upgrades `utim-cli` with pip on first CLI run and launches `python -m utim_cli.utim`.
Evidence against
  • No code reads credentials, enumerates user files, or exfiltrates data in package source.
  • No hardcoded non-registry network endpoints beyond homepage/repository/python.org help URLs.
  • Child process usage is package-aligned: Python detection, pip install of named engine, chmod on own bin file, and CLI launch.
  • postinstall swallows failures and only pre-warms the declared Python engine; no persistence or AI-agent control-surface writes observed.
Behavioral surface
Source
ChildProcessEnvironmentVarsFilesystem
Supply chain
UrlStrings
ManifestNo manifest risk signals triggered.
scanned 2 file(s), 10.1 KB of source, external domains: python.org

Source & flagged code

2 flagged · loading source
package.jsonView file
scripts.postinstall = node scripts/postinstall.js
High
Install Time Lifecycle Scripts

Package defines install-time lifecycle scripts.

package.jsonView on unpkg
scripts.postinstall = node scripts/postinstall.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
MediumEnvironment Vars
LowScripts Present
LowFilesystem
LowUrl Strings