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

Tencent/BrowserSkill

TypeScript·1152 files·commit e58b95b·scanned 7h ago·cached ✓
25/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.

score capped at 25 — 9,818 stars — findings likely legitimate code patterns

verdict accurate?
Partial architecture graph
threat-state: lowlive

FINDINGS ░▒▓

what this code does░▒▓

What happens when you open, install or run it, from the findings below.

  1. when runcrates/bsk-cli/src/cli/update.rs and 2 other files start system processes. crates/bsk-cli/src/cli/update.rs, crates/bsk-cli/src/cli/update/windows.rs, crates/bsk-cli/src/daemon/lockfile.rs
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.crates/bsk-cli/src/cli/update.rs
fn verify_executable(exe: &Path, version: &Version) -> Result<()> {
    let mut command = std::process::Command::new(exe);
    command
        .arg("--version")
+8
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.crates/bsk-cli/src/cli/update/windows.rs
        fs::copy(std::env::current_exe().unwrap(), &target).unwrap();
        let mut running = std::process::Command::new(&target)
            .args([
                "--exact",
+8
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.crates/bsk-cli/src/daemon/lockfile.rs
        for exit_code in [0, 259] {
            let mut child = Command::new("cmd.exe")
                .args(["/D", "/C", &format!("exit {exit_code}")])
                .creation_flags(0x0800_0000) /...
+8
criticalFunction() constructor detectednew Function() is equivalent to eval() and can execute arbitrary code strings.packages/dsh-plugin-browserskill/tests/client/client-bundle.test.tsx
  let client!: { apply(ctx: unknown): void };
  new Function("window", source)({
    __ModuleLoader__: {
      load: ({ factory }: { factory: (require: (id: string) => unknown) => typeof client }) => ...
+5
criticalFunction() constructor detectednew Function() is equivalent to eval() and can execute arbitrary code strings.packages/dsh-plugin-browserskill/tests/client/step-web-card.test.tsx
  let client!: { apply(ctx: unknown): void };
  new Function("window", source)({
    __ModuleLoader__: {
      load: ({ factory }: { factory: (require: (id: string) => unknown) => typeof client }) => ...
+5
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
infoBase64 encoding usedatob() or Buffer.from with base64. Common in legitimate code but also used to hide malicious URLs.apps/extension/src/video/encoder.browser.test.ts
                );
                return Buffer.from(data, "base64");
              });
            }
+2
warningHigh-entropy string literalsFound 7 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.evals/browser/cases/regression/cooperation/run.mjs+3
infoSuspicious file in repoExecutable file (install.ps1) in repositoryinstall.ps1+2
infoSuspicious file in repoExecutable file (install-windows.test.ps1) in repositoryscripts/install-windows.test.ps1+2
infoSuspicious file in repoExecutable file (test-windows-daemon.ps1) in repositoryscripts/test-windows-daemon.ps1+2
warningDependency runs install scripts"<root>/postinstall" executes code during installation. Malicious packages use this to drop payloads before the app even runs.package.json+3
infoAuthor has no other public repositoriesGitHub user "TencentXiaowei" 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.

820 files scanned @ e58b95b | 10/30/2026 | heuristic scan — always review manually

risk by category
code execution25
network & exfiltration2
file system access0
obfuscation3
supply chain13
owasp / injection0
telemetry
files 820/1152rules hit 13engine v10commit e58b95b

github

Tencent/BrowserSkill

Let AI agents use your real, logged-in browser without interrupting your work. CLI + extension for browser automation across any shell-capable AI agent.

TypeScript
9818
701
131d
1152 files
820 scanned(71%)
e58b95b

network indicators░▒▓

Hosts this code names or would connect to. 31 found, decoded and call-site destinations first. Informational, not scored.

architecture░▒▓

entry (0) flagged (11) pkg (242)
642 nodes · 1610 edgesscroll to zoom · click node to jump to finding
LOW (25/100) — Tencent/BrowserSkill — ScanRepo