live · scanning repos
Scanrepo
github.com
github.com / rlaope

rlaope/oh-my-hermes

Python·2707 files·commit 3a0e98b·scanned 15m ago·cached ✓
25/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.

score capped at 25 — 2,926 stars — findings likely legitimate code patterns

verdict accurate?
Crypto/Web3 project
Partial architecture graph
threat-state: lowlive

FINDINGS ░▒▓

criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.src/maintenance/documentation_claims_worker.py
    # Compile current bytes, not a possibly same-size/same-second .pyc fixture.
    exec(compile(source, str(path), "exec"), module.__dict__)
    return module
+7
criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.tests/test_cross_harness_adapter_security.py
        self.assertIn(
            '(allow process-exec (literal "/bin/sh") (literal "/usr/bin/true") '
            '(literal "/bin/bash"))',
            policy,
+7
warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign.tests/test_fanout_confinement.py
    repo.mkdir()
    _ = subprocess.run(("/usr/bin/git", "init", "-q"), cwd=repo, check=True)
    (repo / "seed").write_text("seed", encoding="utf-8")
    _ = subprocess.run(("/usr/bin/git", "add", "s...
+4
warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign.tests/test_host_adapters.py
                    for _ in range(2):
                        result = subprocess.run(command, cwd=repo, env=env, capture_output=True, text=True, timeout=60)
                        self.assertEqual(...
+4
warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign.tests/test_installer_python_selection.py
        }
        return subprocess.run(
            ["sh", str(INSTALLER)],
            env=env,
+4
criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.tests/test_plugin_bundle_standalone.py
            with self.assertRaises(ImportError) as raised:
                exec(f"from {LANE_PACKAGE}.agent_board_bridge import pre_agent_board")
        error = raised.exception
        self.assertNo...
+7
criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.tests/test_plugin_risk_audit.py
                "    subprocess.run(['tool'], check=False)\n"
                "    eval('1 + 1')\n"
                "    requests.get('https://example.invalid')\n"
                "    pre_tool_call =...
+8
criticalFunction() constructor detectednew Function() is equivalent to eval() and can execute arbitrary code strings.tests/test_plugin_risk_audit.py
                "child_process.exec('tool');\n"
                "new Function('return 1');\n"
                "fetch('https://example.invalid');\n"
                "const pre_tool_call = true;\n",
+5
criticalPython remote code executionFetching code from a remote URL and immediately executing it (exec(requests.get(...).text)) is a classic malware dropper pattern.tests/test_plugin_risk_audit.py
            (root / "plugin.json").write_text('{"name": "example"}\n', encoding="utf-8")
            (root / "pyproject.toml").write_text('dependencies = ["requests>=2"]\n', encoding="utf-8")
        ...
+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
warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.tests/fixtures/cross_harness_adapter/fake_adapter.py
        probe = os.environ.get("OMH_READ_PROBE")
        target = Path(probe) if probe else Path(pwd.getpwuid(os.getuid()).pw_dir) / ".ssh" / "id_rsa"
        if not _denied(target.read_bytes):
      ...
+5
warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.tests/test_update_check.py
    def test_non_full_sha_is_a_clean_failure(self) -> None:
        for sha in ("deadbeef", "g" * 40, "\x1b]8;;file:///Users/alice/.ssh/id_rsa\x07"):
            with self.subTest(sha=sha):
          ...
+5
warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.tests/test_update_check_command.py
            paths = _paths(root)
            unsafe = "\x1b]8;;file:///Users/alice/.ssh/id_rsa\x07"
            update_check_cache_path(paths).parent.mkdir(parents=True)
            atomic_write_json(
+5
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.src/maintenance/update_check.py+4
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.src/skills/lifecycle_growth_skill.py+4
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.src/surfaces/menubar_app.py+4
warningHigh-entropy string literalsFound 3 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.src/capabilities/toggles.py+3
warningHigh-entropy string literalsFound 6 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.src/catalogs/briefing_vocabulary.py+3
warningHigh-entropy string literalsFound 3 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.src/catalogs/design_data.py+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.src/coding/coding_delegation.py+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.src/coding/context_safety.py+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.src/coding/work_reporting.py+3
warningLarge base64-encoded blobA 4672-character base64 blob was found. May hide a remote payload or encoded executable code.src/surfaces/menubar_app.py
iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAAAAA...
+3
infoSuspicious file in repoExecutable file (install.ps1) in repository.claude/install.ps1+2
infoSuspicious file in repoExecutable file (install.ps1) in repository.codex/install.ps1+2
infoSuspicious file in repoExecutable file (install.ps1) in repository.cursor/install.ps1+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.

2015 files scanned @ 3a0e98b | 9/25/2026 | heuristic scan — always review manually

risk by category
code execution25
network & exfiltration0
file system access15
obfuscation15
supply chain15
owasp / injection0
telemetry
files 2015/2707rules hit 26engine v6commit 3a0e98b

github

rlaope/oh-my-hermes

All in one plugin for Hermes Agent ⚚ the coding intelligence, a long-term memory system and model optimized workflow packages

Python
2926
223
114d
2707 files
2015 scanned(74%)
3a0e98b

architecture░▒▓

entry (0) flagged (200) pkg (133)
533 nodes · 2136 edgesscroll to zoom · click node to jump to finding