js-eyes@2.10.0
CAUTION· install onlyPublisher claims: "Install, connect, operate, and troubleshoot the host-neutral JS Eyes browser and Skill Runtime from CLI, MCP, or the optional OpenClaw adapter." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Nothing executable in the bundle ran; the trace covers the install step only.- Tested
- every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-10 and scored it 71/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Access to sensitive file paths; Auto-update or dynamic fetch configuration; Pipe-to-shell pattern. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
env: { ...env, JS_EYES_SKILL_DIR: skillDir },Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const hotReloadConfig = options.hotReloadConfig !== false;Fix: Pin versions and sources; vendor anything fetched at install time.lines.push(` 或命令行: curl -fsSL https://js-eyes.com/install.sh | bash -s -- ${s.id}`);Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.const { loadConfig, resolveHotReloadableSecurity } = tryLoadConfigModule();Fix: Pin versions and sources; vendor anything fetched at install time.it('refreshes dispatcher description/parameters on hot-reload when contract changes', async () => {Fix: Pin versions and sources; vendor anything fetched at install time.lines.push(` 或命令行: curl -fsSL https://js-eyes.com/install.sh | bash -s -- ${s.id}`);Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.hotReloadConfig: false,Fix: Pin versions and sources; vendor anything fetched at install time.hotReloadConfig: false,Fix: Pin versions and sources; vendor anything fetched at install time.logger.info?.(`[js-eyes-server] Generated new server token at ${tokenFilePath} (chmod 600)`);Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.hotReloadConfig: false,Fix: Pin versions and sources; vendor anything fetched at install time.assert.ok(!HOT_RELOADABLE_SECURITY_KEYS.includes('allowAnonymous'));Fix: Pin versions and sources; vendor anything fetched at install time.hotReloadConfig: false,Fix: Pin versions and sources; vendor anything fetched at install time.`[js-eyes-server] security reload: 0 hot-reloadable fields changed, but ${ignoredKeys.length} non-hot field(s) require restart: [${ignoredKeys.join(',')}] (source=${source})`,Fix: Pin versions and sources; vendor anything fetched at install time.// so we exercise the hot-reload refresh path (not a new-name registration).Fix: Pin versions and sources; vendor anything fetched at install time.if (!hotReloadConfig) return;Fix: Pin versions and sources; vendor anything fetched at install time.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.
What would make this Verified
9 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Pipe-to-shell pattern≈ +9 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- Unclaimed publisher≈ +8 on the totalClaim imjszhang: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Auto-update or dynamic fetch configuration≈ +4 on the totalPin versions and sources; vendor anything fetched at install time.
- Remote installer piped to shell≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.