AI Security Review
scanned 5h ago · by lpm-firewall-aiNo confirmed malicious attack surface. The package has agent-facing setup capabilities, but they are user-invoked and consent-gated rather than lifecycle-triggered.
Decision evidence
public snapshot- User-invoked install.js can modify ~/.claude/settings.json spinner settings after typed yes.
- User-invoked statusline-install.js can set Claude statusLine to ~/.terminalhire/statusline-launch.js after typed yes.
- terminalhire init can optionally merge MCP config for Cursor/Gemini after prompts.
- Package stores encrypted local profile/GitHub token under ~/.terminalhire and ships native keytar binary.
- package.json postinstall only runs postinstall.js, which prints a notice and exits 0 without writes/network.
- install.js and statusline-install.js require explicit typed consent before touching ~/.claude/settings.json and create backups.
- MCP config merge in dist/bin/mcp-config.js is user-invoked, TTY-gated, per-host prompted, and only writes detected writable hosts.
- Network calls are package-aligned: terminalhire.com job/link/sync APIs and github.com OAuth/API, mostly CLI-command initiated.
- No lifecycle-triggered foreign AI-agent config mutation, persistence, credential exfiltration, or remote code execution found.
Source & flagged code
12 flagged · loading sourcePackage defines install-time lifecycle scripts.
package.jsonView on unpkgInstall-time lifecycle script is not statically allowlisted and needs review.
package.jsonView on unpkgPackage source references child process execution.
dist/bin/jpi-chat.jsView on unpkg · L5085Source spawns a local helper that also contains network and dynamic execution context; review data flow before blocking.
dist/bin/jpi-chat.jsView on unpkg · L128This package version adds a dangerous source file absent from the previous stored version; route for source-aware review.
dist/bin/jpi-dispatch.jsView on unpkgPackage source references a known benign dynamic code generation pattern.
dist/bin/jpi-dispatch.jsView on unpkg · L25760Package source references dynamic require/import behavior.
dist/bin/jpi-init.jsView on unpkg · L347A single source file combines environment access, network access, and code or shell execution; review context before blocking.
dist/bin/jpi.jsView on unpkg · L5Source collects local host identity data and sends it to an external endpoint.
dist/bin/jpi-refresh.jsView on unpkg · L60Source gates dangerous network, credential, or execution behavior behind CI, host, platform, time, or geo fingerprint checks.
dist/bin/jpi-sync.jsView on unpkg · L128