registry  /  @hasna/loops  /  0.4.0

@hasna/loops@0.4.0

Persistent local loop and workflow runner for deterministic commands and headless AI coding agents

Static Scan Results

scanned 3d ago · by rust-scanner

Static analysis flagged 10 finding(s) at 72.0% confidence. This version is warn-only unless an AI or security-team review confirms malicious behavior.

Static reason
One or more suspicious static signals were detected.

Decision evidence

public snapshot
Behavioral surface
Source
ChildProcessCryptoEnvironmentVarsFilesystemShell
Supply chain
HighEntropyStringsUrlStrings
Manifest
WildcardDependency
scanned 6 file(s), 1.98 MB of source, external domains: github.com, registry.npmjs.org, www.apple.com

Source & flagged code

2 flagged · loading source
dist/cli/index.jsView file
59function dataDir() { L60: return process.env.LOOPS_DATA_DIR || join(homedir(), ".hasna", "loops"); L61: } ... L84: import { readFileSync } from "fs"; L85: import { spawnSync } from "child_process"; L86: var START_TIME_TOLERANCE_MS = 5000; ... L92: const run = spawnSync("getconf", ["CLK_TCK"], { encoding: "utf8" }); L93: const value = Number(run.stdout.trim()); L94: clockTicksCache = run.status === 0 && Number.isFinite(value) && value > 0 ? value : 100; ... L127: return; L128: if (process.platform === "linux") { L129: const fields = procStatFields(`/proc/${pid}/stat`);
High
Sandbox Evasion Gated Capability

Source gates dangerous network, credential, or execution behavior behind CI, host, platform, time, or geo fingerprint checks.

dist/cli/index.jsView on unpkg · L59
59function dataDir() { L60: return process.env.LOOPS_DATA_DIR || join(homedir(), ".hasna", "loops"); L61: } ... L84: import { readFileSync } from "fs"; L85: import { spawnSync } from "child_process"; L86: var START_TIME_TOLERANCE_MS = 5000; ... L92: const run = spawnSync("getconf", ["CLK_TCK"], { encoding: "utf8" }); L93: const value = Number(run.stdout.trim()); L94: clockTicksCache = run.status === 0 && Number.isFinite(value) && value > 0 ? value : 100; ... L127: return; L128: if (process.platform === "linux") { L129: const fields = procStatFields(`/proc/${pid}/stat`);
Medium
Install Persistence

Source writes installer persistence such as shell profile or service configuration.

dist/cli/index.jsView on unpkg · L59

Findings

1 High4 Medium5 Low
HighSandbox Evasion Gated Capabilitydist/cli/index.js
MediumEnvironment Vars
MediumInstall Persistencedist/cli/index.js
MediumStructural Risk Force Deep Review
MediumWildcard Dependency
LowNon Install Lifecycle Scripts
LowScripts Present
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings