Loading npm security reports…
termdock@1.4.340: Manual Review npm security report (Allow) | LPM Firewall
Allowed — no malicious behavior detected
No malicious behavior detected. 41 low-signal pattern(s) reviewed.
AI Security Reviewscanned 2d ago · by lpm-firewall-ai The inspected source shows a product-related tmux installation attempt and benign behavior at the flagged runtime locations, without a confirmed attack. A clean verdict cannot be supported because the required review paths remain unresolved and one required file is binary, so manual review is appropriate.
Static reason
High-risk behavior combination matched malicious policy.; source matched previously finalized malicious package; routed for review
Trigger
Package installation when tmux is unavailable; the other inspected operations run during Android streaming or history rotation.
Impact
The host may receive tmux during installation; no harmful effect was established for the inspected runtime operations.
Mechanism
The installer invokes host package managers to install tmux. The inspected socket callbacks handle stream connections, and the monitor writes retained history to its configured file.
AI rationale
The inspected source shows a product-related tmux installation attempt and benign behavior at the flagged runtime locations, without a confirmed attack. A clean verdict cannot be supported because the required review paths remain unresolved and one required file is binary, so manual review is appropriate.
Evidence
package.json scripts/postinstall.mjs dist/server/android/scrcpy.js dist/server/utils/runtimeMonitor.js
Decision evidencepublic snapshot AI called this Manual Review at 68.0% confidence as Unknown with medium false-positive risk.
AI review observations
The package manifest runs scripts/postinstall.mjs during installation. The postinstall source attempts to install tmux through host package managers when needed. The inspected Android socket code handles terminal streaming, and the runtime monitor rotates its local history file. The required clean review includes a binary file that cannot be verified with source citations, and the full required path set remains unresolved. Evidence against
The inspected excerpts do not establish data theft, destructive behavior, or another concrete attack. Behavioral surface
Source ChildProcess Crypto DynamicRequire EnvironmentVars Eval Filesystem Network Shell WebSocket
Supply chain HighEntropyStrings Minified PossibleObfuscation Telemetry UrlStrings
Source & flagged code32 flagged · loading source • scripts.postinstall = node scripts/postinstall.mjs
High Install Time Lifecycle Scripts
Package defines install-time lifecycle scripts.
package.json View on unpkg • scripts.postinstall = node scripts/postinstall.mjs
Medium Ambiguous Install Lifecycle Script
Install-time lifecycle script is not statically allowlisted and needs review.
package.json View on unpkg 2 patternName = generic_password
severity = medium
line = 2
Medium Secret Pattern
Package contains a possible secret pattern.
dist/client/assets/app--Wjt7upM.js View on unpkg · L2
Findings1 Critical 23 High 9 Medium 8 Low
Critical Trojan Source Unicode dist/client/assets/terminal-C7X98Amf.js
High Install Time Lifecycle Scripts package.json
High Child Process dist/server/supervisor.js
High Shell dist/server/utils/bootCheck.js
High Same File Env Network Execution dist/server/ptyhost/manager.js
High Sandbox Evasion Gated Capability scripts/postinstall.mjs
High Trigger Reachable External Ai Agent Control Surface Mutation dist/server/agent/installers.js
High Spawned Bundled Service Listener dist/server/cli.js
High Trigger Reachable Persistence dist/server/routes/terminal.js
High Runtime Package Install scripts/ensure-node-pty.cjs
High
Affected versions and remediation This report applies to termdock@1.4.340 .
See all versions of termdock for other recorded verdicts.
Review the evidence and your use of termdock@1.4.340 before allowing it. Restrict the permissions described in this report. Choose an independently verified alternative or release. This report does not establish that other versions are safe. Evidence last updated: 2026-10-21 07:42:50.178Z (UTC) .
Think this verdict is wrong? Dispute it on GitHub or read how reports are produced .
Manifest
No manifest risk signals triggered.
scanned 317 file(s), 12.0 MB of source, external domains: 127.0.0.1, 192.168.1.23, api.anthropic.com, api.github.com, api.kimi.com, api.openai.com, api.x.ai, bit.ly, brew.sh, bugzilla.mozilla.org, chatgpt.com, chevrotain.io, computer.example, en.wikipedia.org, generativelanguage.googleapis.com, github.com, jcgt.org, langium.org, reactjs.org, redux.js.org, registry.npmjs.org, term.example.com, termdock-preview.invalid, termdock.invalid, unpkg.com, www.w3.org
23 */
L24: import { spawn } from 'node:child_process';
L25: import fs from 'node:fs';
High Child Process
Package source references child process execution.
dist/server/supervisor.js View on unpkg · L23 • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = dist/server/supervisor.js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/supervisor.js View on unpkg 51 const r = spawnSync(cmd, [], {
L52: shell: true,
L53: timeout: timeoutMs,
High Shell
Package source references shell execution.
dist/server/utils/bootCheck.js View on unpkg · L51 • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = dist/server/utils/bootCheck.js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/utils/bootCheck.js View on unpkg dist/client/assets/diffWorker-BP4IBsm9.js View file 20 ?|
L21: |(?![\\s\\S])))+`,"m"),alias:i}}),Object.defineProperty(r.languages.diff,"PREFIXES",{value:n})})(t)}return Sn}var vn,ql;function me(){if(ql)return vn;ql=1,vn=e,e.displayName="marku...
L22: \r]*'|"(?:\\.|[^\\\\"\r
Low Eval
Package source references a known benign dynamic code generation pattern.
dist/client/assets/diffWorker-BP4IBsm9.js View on unpkg · L20 19 try {
L20: const require_ = createRequire(import.meta.url);
L21: const packagePath = path.resolve(currentDir, '..', '..', '..', 'package.json');
Medium Dynamic Require
Package source references dynamic require/import behavior.
dist/server/utils/version.js View on unpkg · L19 32 Trigger-reachable persistence chain: manifest.exports -> dist/server/entry.js -> dist/server/routes/terminal.js
L32: import QRCode from 'qrcode';
L33: import { execFile, spawn } from 'child_process';
L34: import { createHash, randomBytes, randomUUID } from 'crypto';
...
L101: const execFileAsync = promisify(execFile);
L102: const TERMDOCK_DIR = `${os.homedir()}/.termdock`;
L103: const automationStore = new AutomationStore(`${TERMDOCK_DIR}/automations.json`);
...
L119: const raw = await fs.promises.readFile(filePath, 'utf-8');
L120: return JSON.parse(raw);
L121: }
...
L151: const require_ = createRequire(import.meta.url);
L152: // dist/server/routes/terminal.js → ../../../package.json
L153: const pkg = require_(path.join(__dirname || '', '..', '..', '..', 'package.json'));
High Trigger Reachable Persistence
A manifest entrypoint or package-local install chain reaches persistence behavior.
dist/server/routes/terminal.js View on unpkg · L32 32 import QRCode from 'qrcode';
L33: import { execFile, spawn } from 'child_process';
L34: import { createHash, randomBytes, randomUUID } from 'crypto';
...
L101: const execFileAsync = promisify(execFile);
L102: const TERMDOCK_DIR = `${os.homedir()}/.termdock`;
L103: const automationStore = new AutomationStore(`${TERMDOCK_DIR}/automations.json`);
...
L119: const raw = await fs.promises.readFile(filePath, 'utf-8');
L120: return JSON.parse(raw);
L121: }
...
L151: const require_ = createRequire(import.meta.url);
L152: // dist/server/routes/terminal.js → ../../../package.json
L153: const pkg = require_(path.join(__dirname || '', '..', '..', '..', 'package.json'));
Medium Install Persistence
Source writes installer persistence such as shell profile or service configuration.
dist/server/routes/terminal.js View on unpkg · L32 264 // must not die with (or be reaped by) this server.
L265: const child = spawn(command, args, {
L266: detached: true,
L267: stdio: 'ignore',
L268: env: process.env,
L269: });
...
L274: return new Promise((resolvePromise, rejectPromise) => {
L275: const conn = net.createConnection(ptyHostSocketPath());
L276: const timer = setTimeout(() => {
High Same File Env Network Execution
A single source file combines environment access, network access, and code or shell execution; review context before blocking.
dist/server/ptyhost/manager.js View on unpkg · L264 • matchType = normalized_sha256
matchedPackage = termdock@1.4.66
matchedPath = dist/server/ptyhost/manager.js
matchedIdentity = npm:dGVybWRvY2s:1.4.66
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/ptyhost/manager.js View on unpkg 10 L11: import { execSync, spawnSync } from 'child_process';
L12: import { createRequire } from 'module';
...
L31: const r = spawnSync(cmd, [], { shell: true, timeout: timeoutMs, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
L32: return { ok: r.status === 0, stdout: r.stdout, stderr: r.stderr };
L33: } catch {
...
L51: const { ensureNodePty } = require_('./ensure-node-pty.cjs');
L52: const PTY_PATH = require_.resolve('node-pty/package.json', { paths: [pkgRoot] }).replace('/package.json', '');
L53:
...
L83: const pty = require_(PTY_PATH);
L84: const proc = pty.spawn(process.env.SHELL || '/bin/bash', [], { name: 'xterm', cols: 80, rows: 24 });
L85: proc.kill();
High Sandbox Evasion Gated Capability
Source gates dangerous network, credential, or execution behavior behind CI, host, platform, time, or geo fingerprint checks.
scripts/postinstall.mjs View on unpkg · L10 • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = scripts/postinstall.mjs
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
scripts/postinstall.mjs View on unpkg • Manifest-trigger-reachable source links an external AI-agent control path to a behavior-bearing write operation.
import fs from 'node:fs';
import os from 'node:os';
import path from 'node:path';
import { execfile, spawn } from 'node:child_process';
import { agentbyslug, ispluginagent } from './registry.js';
import { loadplugins, resolvehooktarget } from './plugins.js';
export const hook_agents = ['claude', 'codex', 'copilot', 'opencode', 'pi', 'grok', 'kimi'];
const display_names = {
claude: 'claude code',
codex: 'codex',
copilot: 'copilot cli',
opencode: 'opencode',
pi: 'pi',
grok: 'grok build',
kimi: 'kimi code',
};
High Trigger Reachable External Ai Agent Control Surface Mutation
Manifest-trigger-reachable source writes behavior-bearing configuration into a user or project AI-agent control surface.
dist/server/agent/installers.js View on unpkg • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = dist/server/agent/installers.js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/agent/installers.js View on unpkg dist/client/assets/terminal-C7X98Amf.js View file 4 contains invisible/control Unicode U+200E (left-to-right mark)
`)})),this._register(this._bufferService.onResize(()=>this.queueSync())),this._register(this._bufferService.buffers.onBufferActivate(()=>{this._latestYDisp=void 0,this.queueSync()})),this._register(this._bufferService.onScroll(()=>this._syn
Critical Trojan Source Unicode
Source contains bidi control or invisible Unicode characters associated with Trojan Source attacks.
dist/client/assets/terminal-C7X98Amf.js View on unpkg · L4 4 Detached bundled service listener: dist/server/cli.js spawns dist/server/entry.js; helper exposes a broad-bound HTTP listener.
L4: // 设置(同步 fs 不占线程池,所以放在文件体顶部仍然足够早)。
L5: process.env.UV_THREADPOOL_SIZE ||= '16';
L6: import { config as loadDotenv } from 'dotenv';
...
L10: // dotenv 不会覆盖已存在的环境变量,因此系统环境变量和命令行参数优先级最高
L11: loadDotenv({ path: resolve(os.homedir(), '.termdock', '.env'), quiet: true });
L12: loadDotenv({ path: resolve(process.cwd(), '.env'), quiet: true });
...
L28: import { getMissingCertificateNames } from './utils/certificateNames.js';
L29: import http from 'http';
L30: import https from 'https';
...
L33: import { createHash, randomUUID } from 'crypto';
L34: import { spawn, spawnSync, execFile } from 'child_process';
L35: import { promisify } from 'util';
High Spawned Bundled Service Listener
Source launches a detached bundled service that exposes a broad-bound HTTP listener.
dist/server/cli.js View on unpkg · L4 51 console.log('Rebuilding node-pty with the Termdock macOS FD cleanup fix...');
L52: const result = spawnSync('npx', ['--yes', 'node-gyp', 'rebuild'], {
L53: cwd: ptyRoot, stdio: 'inherit', timeout: 180_000,
High Runtime Package Install
Package source invokes a package manager install command at runtime.
scripts/ensure-node-pty.cjs View on unpkg · L51 dist/client/shell-integration/termdock.bash View file • path = dist/client/shell-integration/termdock.bash
kind = build_helper
sizeBytes = 3514
magicHex = [redacted]
Medium Ships Build Helper
Package ships non-JavaScript build or shell helper files.
dist/client/shell-integration/termdock.bash View on unpkg dist/client/sw-encrypted-background.js.br View file • path = dist/client/sw-encrypted-background.js.br
kind = high_entropy_blob
sizeBytes = 65773
magicHex = [redacted]
High Ships High Entropy Blob
Package ships high-entropy non-source blobs.
dist/client/sw-encrypted-background.js.br View on unpkg • path = dist/client/sw-encrypted-background.js.br
kind = compressed_blob
sizeBytes = 65773
magicHex = [redacted]
Medium Ships Compressed Blob
Package ships compressed or archive-like blobs.
dist/client/sw-encrypted-background.js.br View on unpkg • path = scripts/android-bitrate/bitrate.jar
kind = nested_archive_needs_inspection
sizeBytes = 2903
magicHex = [redacted]
Low Nested Archive Needs Inspection
Package ships a nested archive or MCP bundle that was inventoried but not recursively analyzed.
scripts/android-bitrate/bitrate.jar View on unpkg • stage = ast_semantic_analysis; reason = ast_path_work_budget_exceeded; limitedFiles = 7
High Semantic Analysis Limited
A bounded semantic-analysis stage reached its safety limit; remaining detectors completed, but this package requires AI review.
dist/client/assets/App-C3eqZGuT.js View on unpkg • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = [redacted].js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/agent/pluginPackages.js View on unpkg dist/client/assets/DiffViewer-BYvyJXBJ.js View file • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = dist/client/assets/DiffViewer-CYEoT3NM.js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/client/assets/DiffViewer-BYvyJXBJ.js View on unpkg dist/server/agent/titleNamerCatalog.js View file • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = [redacted].js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/agent/titleNamerCatalog.js View on unpkg • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = dist/server/android/recording.js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/android/recording.js View on unpkg dist/server/utils/enableSupervision.js View file • matchType = token_shingles
matchedPackage = termdock@1.4.268
matchedPath = [redacted].js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
shingleOverlap = 48
summary = source token shingles overlapped finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/utils/enableSupervision.js View on unpkg dist/client/assets/index-UqXCGE5m.js View file • matchType = normalized_sha256
matchedPackage = termdock@1.4.66
matchedPath = dist/client/assets/index-Ca-rq7yX.js
matchedIdentity = npm:dGVybWRvY2s:1.4.66
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/client/assets/index-UqXCGE5m.js View on unpkg dist/server/agent/localSessionContext.js View file • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = [redacted].js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/agent/localSessionContext.js View on unpkg Ships High Entropy Blob
dist/client/sw-encrypted-background.js.br
High Semantic Analysis Limited dist/client/assets/App-C3eqZGuT.js
High Known Malware Source Similarity dist/server/utils/bootCheck.js
High Known Malware Source Similarity scripts/postinstall.mjs
High Known Malware Source Similarity dist/server/agent/pluginPackages.js
High Known Malware Source Similarity dist/client/assets/DiffViewer-BYvyJXBJ.js
High Known Malware Source Similarity dist/server/agent/installers.js
High Known Malware Source Similarity dist/server/agent/titleNamerCatalog.js
High Known Malware Source Similarity dist/server/android/recording.js
High Known Malware Source Similarity dist/server/ptyhost/manager.js
High Known Malware Source Similarity dist/server/supervisor.js
High Known Malware Source Similarity dist/server/utils/enableSupervision.js
High Known Malware Source Similarity dist/client/assets/index-UqXCGE5m.js
High Known Malware Source Similarity dist/server/agent/localSessionContext.js
Medium Ambiguous Install Lifecycle Script package.json
Medium Secret Pattern dist/client/assets/app--Wjt7upM.js
Medium Dynamic Require dist/server/utils/version.js
Medium Install Persistence dist/server/routes/terminal.js
Medium Ships Build Helper dist/client/shell-integration/termdock.bash
Medium Ships Compressed Blob dist/client/sw-encrypted-background.js.br
Medium Structural Risk Force Deep Review
Low Non Install Lifecycle Scripts
Low Eval dist/client/assets/diffWorker-BP4IBsm9.js
Low Nested Archive Needs Inspection scripts/android-bitrate/bitrate.jar
main → .desktop-dist/main.js
exports map
bin → td, termdock
Artifact 34.1 MB · 909 files 2 signature(s) · provenance
Install lifecycle postinstall prepublishOnly
Behavioral surface ChildProcess Crypto DynamicRequire EnvironmentVars Eval Filesystem Network Shell WebSocket HighEntropyStrings Minified PossibleObfuscation Telemetry UrlStrings Manifest: clean
Source & flagged code32 flagged • scripts.postinstall = node scripts/postinstall.mjs
High Install Time Lifecycle Scripts
Package defines install-time lifecycle scripts.
package.json View on unpkg • scripts.postinstall = node scripts/postinstall.mjs
Medium Ambiguous Install Lifecycle Script
Install-time lifecycle script is not statically allowlisted and needs review.
package.json View on unpkg 2 patternName = generic_password
severity = medium
line = 2
Medium Secret Pattern
Package contains a possible secret pattern.
dist/client/assets/app--Wjt7upM.js View on unpkg · L2 23 */
L24: import { spawn } from 'node:child_process';
L25: import fs from 'node:fs';
High Child Process
Package source references child process execution.
dist/server/supervisor.js View on unpkg · L23 • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = dist/server/supervisor.js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/supervisor.js View on unpkg 51 const r = spawnSync(cmd, [], {
L52: shell: true,
L53: timeout: timeoutMs,
High Shell
Package source references shell execution.
dist/server/utils/bootCheck.js View on unpkg · L51 • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = dist/server/utils/bootCheck.js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/utils/bootCheck.js View on unpkg dist/client/assets/diffWorker-BP4IBsm9.js View file 20 ?|
L21: |(?![\\s\\S])))+`,"m"),alias:i}}),Object.defineProperty(r.languages.diff,"PREFIXES",{value:n})})(t)}return Sn}var vn,ql;function me(){if(ql)return vn;ql=1,vn=e,e.displayName="marku...
L22: \r]*'|"(?:\\.|[^\\\\"\r
Low Eval
Package source references a known benign dynamic code generation pattern.
dist/client/assets/diffWorker-BP4IBsm9.js View on unpkg · L20 19 try {
L20: const require_ = createRequire(import.meta.url);
L21: const packagePath = path.resolve(currentDir, '..', '..', '..', 'package.json');
Medium Dynamic Require
Package source references dynamic require/import behavior.
dist/server/utils/version.js View on unpkg · L19 32 Trigger-reachable persistence chain: manifest.exports -> dist/server/entry.js -> dist/server/routes/terminal.js
L32: import QRCode from 'qrcode';
L33: import { execFile, spawn } from 'child_process';
L34: import { createHash, randomBytes, randomUUID } from 'crypto';
...
L101: const execFileAsync = promisify(execFile);
L102: const TERMDOCK_DIR = `${os.homedir()}/.termdock`;
L103: const automationStore = new AutomationStore(`${TERMDOCK_DIR}/automations.json`);
...
L119: const raw = await fs.promises.readFile(filePath, 'utf-8');
L120: return JSON.parse(raw);
L121: }
...
L151: const require_ = createRequire(import.meta.url);
L152: // dist/server/routes/terminal.js → ../../../package.json
L153: const pkg = require_(path.join(__dirname || '', '..', '..', '..', 'package.json'));
High Trigger Reachable Persistence
A manifest entrypoint or package-local install chain reaches persistence behavior.
dist/server/routes/terminal.js View on unpkg · L32 32 import QRCode from 'qrcode';
L33: import { execFile, spawn } from 'child_process';
L34: import { createHash, randomBytes, randomUUID } from 'crypto';
...
L101: const execFileAsync = promisify(execFile);
L102: const TERMDOCK_DIR = `${os.homedir()}/.termdock`;
L103: const automationStore = new AutomationStore(`${TERMDOCK_DIR}/automations.json`);
...
L119: const raw = await fs.promises.readFile(filePath, 'utf-8');
L120: return JSON.parse(raw);
L121: }
...
L151: const require_ = createRequire(import.meta.url);
L152: // dist/server/routes/terminal.js → ../../../package.json
L153: const pkg = require_(path.join(__dirname || '', '..', '..', '..', 'package.json'));
Medium Install Persistence
Source writes installer persistence such as shell profile or service configuration.
dist/server/routes/terminal.js View on unpkg · L32 264 // must not die with (or be reaped by) this server.
L265: const child = spawn(command, args, {
L266: detached: true,
L267: stdio: 'ignore',
L268: env: process.env,
L269: });
...
L274: return new Promise((resolvePromise, rejectPromise) => {
L275: const conn = net.createConnection(ptyHostSocketPath());
L276: const timer = setTimeout(() => {
High Same File Env Network Execution
A single source file combines environment access, network access, and code or shell execution; review context before blocking.
dist/server/ptyhost/manager.js View on unpkg · L264 • matchType = normalized_sha256
matchedPackage = termdock@1.4.66
matchedPath = dist/server/ptyhost/manager.js
matchedIdentity = npm:dGVybWRvY2s:1.4.66
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/ptyhost/manager.js View on unpkg 10 L11: import { execSync, spawnSync } from 'child_process';
L12: import { createRequire } from 'module';
...
L31: const r = spawnSync(cmd, [], { shell: true, timeout: timeoutMs, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
L32: return { ok: r.status === 0, stdout: r.stdout, stderr: r.stderr };
L33: } catch {
...
L51: const { ensureNodePty } = require_('./ensure-node-pty.cjs');
L52: const PTY_PATH = require_.resolve('node-pty/package.json', { paths: [pkgRoot] }).replace('/package.json', '');
L53:
...
L83: const pty = require_(PTY_PATH);
L84: const proc = pty.spawn(process.env.SHELL || '/bin/bash', [], { name: 'xterm', cols: 80, rows: 24 });
L85: proc.kill();
High Sandbox Evasion Gated Capability
Source gates dangerous network, credential, or execution behavior behind CI, host, platform, time, or geo fingerprint checks.
scripts/postinstall.mjs View on unpkg · L10 • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = scripts/postinstall.mjs
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
scripts/postinstall.mjs View on unpkg • Manifest-trigger-reachable source links an external AI-agent control path to a behavior-bearing write operation.
import fs from 'node:fs';
import os from 'node:os';
import path from 'node:path';
import { execfile, spawn } from 'node:child_process';
import { agentbyslug, ispluginagent } from './registry.js';
import { loadplugins, resolvehooktarget } from './plugins.js';
export const hook_agents = ['claude', 'codex', 'copilot', 'opencode', 'pi', 'grok', 'kimi'];
const display_names = {
claude: 'claude code',
codex: 'codex',
copilot: 'copilot cli',
opencode: 'opencode',
pi: 'pi',
grok: 'grok build',
kimi: 'kimi code',
};
High Trigger Reachable External Ai Agent Control Surface Mutation
Manifest-trigger-reachable source writes behavior-bearing configuration into a user or project AI-agent control surface.
dist/server/agent/installers.js View on unpkg • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = dist/server/agent/installers.js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/agent/installers.js View on unpkg dist/client/assets/terminal-C7X98Amf.js View file 4 contains invisible/control Unicode U+200E (left-to-right mark)
`)})),this._register(this._bufferService.onResize(()=>this.queueSync())),this._register(this._bufferService.buffers.onBufferActivate(()=>{this._latestYDisp=void 0,this.queueSync()})),this._register(this._bufferService.onScroll(()=>this._syn
Critical Trojan Source Unicode
Source contains bidi control or invisible Unicode characters associated with Trojan Source attacks.
dist/client/assets/terminal-C7X98Amf.js View on unpkg · L4 4 Detached bundled service listener: dist/server/cli.js spawns dist/server/entry.js; helper exposes a broad-bound HTTP listener.
L4: // 设置(同步 fs 不占线程池,所以放在文件体顶部仍然足够早)。
L5: process.env.UV_THREADPOOL_SIZE ||= '16';
L6: import { config as loadDotenv } from 'dotenv';
...
L10: // dotenv 不会覆盖已存在的环境变量,因此系统环境变量和命令行参数优先级最高
L11: loadDotenv({ path: resolve(os.homedir(), '.termdock', '.env'), quiet: true });
L12: loadDotenv({ path: resolve(process.cwd(), '.env'), quiet: true });
...
L28: import { getMissingCertificateNames } from './utils/certificateNames.js';
L29: import http from 'http';
L30: import https from 'https';
...
L33: import { createHash, randomUUID } from 'crypto';
L34: import { spawn, spawnSync, execFile } from 'child_process';
L35: import { promisify } from 'util';
High Spawned Bundled Service Listener
Source launches a detached bundled service that exposes a broad-bound HTTP listener.
dist/server/cli.js View on unpkg · L4 51 console.log('Rebuilding node-pty with the Termdock macOS FD cleanup fix...');
L52: const result = spawnSync('npx', ['--yes', 'node-gyp', 'rebuild'], {
L53: cwd: ptyRoot, stdio: 'inherit', timeout: 180_000,
High Runtime Package Install
Package source invokes a package manager install command at runtime.
scripts/ensure-node-pty.cjs View on unpkg · L51 dist/client/shell-integration/termdock.bash View file • path = dist/client/shell-integration/termdock.bash
kind = build_helper
sizeBytes = 3514
magicHex = [redacted]
Medium Ships Build Helper
Package ships non-JavaScript build or shell helper files.
dist/client/shell-integration/termdock.bash View on unpkg dist/client/sw-encrypted-background.js.br View file • path = dist/client/sw-encrypted-background.js.br
kind = high_entropy_blob
sizeBytes = 65773
magicHex = [redacted]
High Ships High Entropy Blob
Package ships high-entropy non-source blobs.
dist/client/sw-encrypted-background.js.br View on unpkg • path = dist/client/sw-encrypted-background.js.br
kind = compressed_blob
sizeBytes = 65773
magicHex = [redacted]
Medium Ships Compressed Blob
Package ships compressed or archive-like blobs.
dist/client/sw-encrypted-background.js.br View on unpkg • path = scripts/android-bitrate/bitrate.jar
kind = nested_archive_needs_inspection
sizeBytes = 2903
magicHex = [redacted]
Low Nested Archive Needs Inspection
Package ships a nested archive or MCP bundle that was inventoried but not recursively analyzed.
scripts/android-bitrate/bitrate.jar View on unpkg • stage = ast_semantic_analysis; reason = ast_path_work_budget_exceeded; limitedFiles = 7
High Semantic Analysis Limited
A bounded semantic-analysis stage reached its safety limit; remaining detectors completed, but this package requires AI review.
dist/client/assets/App-C3eqZGuT.js View on unpkg • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = [redacted].js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/agent/pluginPackages.js View on unpkg dist/client/assets/DiffViewer-BYvyJXBJ.js View file • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = dist/client/assets/DiffViewer-CYEoT3NM.js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/client/assets/DiffViewer-BYvyJXBJ.js View on unpkg dist/server/agent/titleNamerCatalog.js View file • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = [redacted].js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/agent/titleNamerCatalog.js View on unpkg • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = dist/server/android/recording.js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/android/recording.js View on unpkg dist/server/utils/enableSupervision.js View file • matchType = token_shingles
matchedPackage = termdock@1.4.268
matchedPath = [redacted].js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
shingleOverlap = 48
summary = source token shingles overlapped finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/utils/enableSupervision.js View on unpkg dist/client/assets/index-UqXCGE5m.js View file • matchType = normalized_sha256
matchedPackage = termdock@1.4.66
matchedPath = dist/client/assets/index-Ca-rq7yX.js
matchedIdentity = npm:dGVybWRvY2s:1.4.66
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/client/assets/index-UqXCGE5m.js View on unpkg dist/server/agent/localSessionContext.js View file • matchType = normalized_sha256
matchedPackage = termdock@1.4.268
matchedPath = [redacted].js
matchedIdentity = npm:dGVybWRvY2s:1.4.268
similarity = 1.000
summary = normalized source hash matched finalized malicious source
High Known Malware Source Similarity
Source file is highly similar to a previously finalized malicious package; route for source-aware review.
dist/server/agent/localSessionContext.js View on unpkg