AI Security Review
scanned 4d ago · by lpm-firewall-aiNo confirmed malicious attack surface was established. Risky primitives are present, but they are user-invoked CLI behavior for job matching, GitHub auth, profile storage, and Claude spinner/status display integration rather than install-time control hijack.
Decision evidence
public snapshot- package.json has a postinstall lifecycle script
- install.js and dist/bin/jpi-dispatch.js can write ~/.claude/settings.json spinnerVerbs/spinnerTipsOverride
- dist/bin/jpi-dispatch.js reads ~/.claude/projects for trajectory/profile features
- CLI includes network calls to terminalhire.com, www.terminalhire.com, api.github.com, GitHub OAuth, and public job-board APIs
- CLI uses child_process spawn/spawnSync/execFile for user-invoked onboarding and GitHub PR workflows
- postinstall.js is print-only: no imports of install.js, no file writes, no network calls, exits 0
- Claude settings writes require explicit user commands such as terminalhire init, terminalhire spinner --on, or node install.js with typed yes
- No PreToolUse/Stop hook injection found; only spinnerVerbs/spinnerTipsOverride/statusLine-related user-facing settings are referenced
- GitHub token/profile files are stored locally under ~/.terminalhire and encrypted where applicable
- Network endpoints are aligned with job matching, GitHub login/profile, chat/sync, and public job ingestion functionality
- No obfuscation, native binary loading, destructive persistence, or install-time exfiltration found
Source & flagged code
8 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-init.jsView on unpkg · L7Package source references dynamic require/import behavior.
install.jsView on unpkg · L52A single source file combines environment access, network access, and code or shell execution; review context before blocking.
dist/bin/jpi-sync.jsView on unpkg · L1027Source gates dangerous network, credential, or execution behavior behind CI, host, platform, time, or geo fingerprint checks.
dist/bin/jpi-sync.jsView on unpkg · L99This package version adds a dangerous source file absent from the previous stored version.
dist/bin/jpi-dispatch.jsView on unpkgSource spawns a local helper that also contains network and dynamic execution context; review data flow before blocking.
dist/bin/jpi-dispatch.jsView on unpkg · L31