live · scanning repos
Scanrepo
github.com
github.com / outsourc-e

outsourc-e/hermes-workspace

JavaScript·1173 files·commit c631425·scanned 2d ago·cached ✓
25/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.

score capped at 256,482 stars — findings likely legitimate code patterns

verdict accurate?
Research / educational context
Partial architecture graph
Electron app detected
threat-state: lowlive

FINDINGS ░▒▓

criticalchild_process / exec usageExecuting shell commands can be used to download and run malware, exfiltrate data, or modify system files.vite.config.ts

    const child = spawn(launchCmd, commandArgs, {
      cwd: launchCwd,
      detached: false, // keep tied to vite process — stops when dev server stops
+8
criticalRemote script piped into a shellA shell script downloads remote content and executes it directly (e.g. `curl … | bash`). The payload is never stored or reviewable and can change server-side — a classic malware/backdoor install pattern.install.sh
# Usage:
#   curl -fsSL https://raw.githubusercontent.com/outsourc-e/hermes-workspace/main/install.sh | bash
#
# What it does:
+10
infoSuspicious files are not reachable from entry pointsFlagged files exist but are not imported by any entry point. They may be dead code, tests, or attack payloads triggered by another mechanism.+2
warningHardcoded IP address in network callFetching data from hardcoded IP addresses instead of domain names is suspicious and may indicate C2 communication.src/screens/swarm2/swarm2-kanban-board.test.ts
      details: 'Synced through Workspace proxy',
      path: 'http://127.0.0.1:9119',
    })).toMatchObject({
      badgeLabel: 'Synced • Hermes',
+5
warningClipboard read accessnavigator.clipboard.readText() reads the user's clipboard. In a wallet/crypto context this is often used to steal copied seed phrases or private keys.src/components/onboarding/provider-select-step.tsx
    try {
      const text = await navigator.clipboard.readText()
      if (text) {
        setApiKey(text)
+4
warningClipboard read accessnavigator.clipboard.readText() reads the user's clipboard. In a wallet/crypto context this is often used to steal copied seed phrases or private keys.src/components/terminal/mobile-terminal-input.tsx
    try {
      const text = await navigator.clipboard.readText()
      if (text && inputRef.current) {
        inputRef.current.value += text
+4
warningClipboard read accessnavigator.clipboard.readText() reads the user's clipboard. In a wallet/crypto context this is often used to steal copied seed phrases or private keys.src/components/terminal/terminal-panel.tsx
        if (event.key === 'v' && (event.metaKey || event.ctrlKey)) {
          navigator.clipboard.readText().then((text) => {
            if (text) onInput(text)
          })
+4
warningHigh-entropy string literalsFound 6 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.vite.config.ts+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.vite.config.ts+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.playground-ws-worker/src/worker.ts+3
warningHigh-entropy string literalsFound 4 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.src/components/agent-chat/AgentChatMessages.tsx+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.src/components/agent-swarm/activity-panel.tsx+3
warningHigh-entropy string literalsFound 7 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.src/components/agent-swarm/isometric-office.tsx+3
infoSuspicious file in repoVery large source file (21396KB) — could contain obfuscated payloadelectron/server-bundle.cjs+2
infoSuspicious file in repoExecutable file (start-hermes-workspace.ps1) in repositoryscripts/start-hermes-workspace.ps1+2
infoNative addon dependency"xterm-addon-fit" includes native compiled code. Native addons can hide behavior that static JS analysis cannot see.package.json+2
infoNative addon dependency"xterm-addon-search" includes native compiled code. Native addons can hide behavior that static JS analysis cannot see.package.json+2
infoNative addon dependency"xterm-addon-web-links" includes native compiled code. Native addons can hide behavior that static JS analysis cannot see.package.json+2
infoAuthor has no other public repositoriesGitHub user "dependabot[bot]" has no other public repositories, common for burner accounts used in scams.+2

Scores are heuristics. A “safe” verdict means no known-malicious patterns were found — clever malware can look boring. Wrong verdict? Flag it above; confirmed false positives become regression tests.

865 files scanned @ c631425 | 8/22/2026 | heuristic scan — always review manually

risk by category
code execution20
network & exfiltration5
file system access12
obfuscation15
supply chain12
owasp / injection0
telemetry
files 865/1173rules hit 19engine v5commit c631425

github

outsourc-e/hermes-workspace

Native web workspace for Hermes Agent — chat, terminal, memory, skills, inspector.

JavaScript
6482
1026
162d
1173 files
865 scanned(74%)
c631425

architecture░▒▓

entry (1) flagged (284) pkg (239)
639 nodes · 1660 edgesscroll to zoom · click node to jump to finding