github JavaScript re-analysis due

NeoDrew/chromeflow

github

Let your AI coding agent (Claude Code or Codex CLI) drive your real Chrome — clicks, fills forms, grabs API keys, writes them to .env. Real session, real cookies, no fresh browser sandbox.

maintainer
NeoDrew
licence
MIT
first seen
2026-06-03
last seen
2026-09-17
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 30 tools
transport stdio · http verified reported listed in the official MCP registry counts 30 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • capture_terminal
  • clear_overlays
  • click_at_coordinates
  • click_element
  • close_tab
  • download_file
  • execute_script
  • fetch_url
  • fill_form
  • fill_input
  • find_text
  • get_console_logs
  • get_form_fields
  • get_page_html
  • get_page_text
  • highlight_region
  • inspect_request_headers
  • interactive_snapshot
  • list_frames
  • list_tabs
  • open_page
  • save_flow
  • scroll_to_element
  • set_file_input
  • switch_to_tab
  • take_screenshot
  • type_text
  • wait_for
  • wait_for_click
  • write_to_env
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 9503b5c · analyzer v33 · 14h ago

skills & prompt files 3

danger signals6

code evidence vv0.9.5 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 112

filesystem 13

  • fs NeoDrew-chromeflow-9503b5c/packages/extension/build.mjs :2 import { cpSync, mkdirSync } from "fs";
  • fs NeoDrew-chromeflow-9503b5c/packages/extension/pack.mjs :14 import { existsSync, readFileSync, statSync, unlinkSync } from "node:fs";
  • fs (weak) NeoDrew-chromeflow-9503b5c/packages/mcp-server/scripts/usage-stats.mjs :11 import { existsSync, readFileSync } from "node:fs";
  • fs (weak) NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/flow-store.test.ts :17 import { mkdtempSync, readFileSync, existsSync } from "node:fs";
  • fs NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/flow-store.ts :44 import { existsSync, mkdirSync, readFileSync, writeFileSync, renameSync } from "node:fs";
  • fs NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/files.ts :3 import { promises as fs } from "node:fs";
  • fs NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/screenshot.ts :3 import { writeFileSync, copyFileSync, readFileSync } from "fs";
  • fs NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/capture/fetch.ts :3 import { mkdirSync, writeFileSync } from "fs";
  • fs NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/capture/files.ts :3 import { appendFileSync, readFileSync, writeFileSync } from "fs";
  • fs NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/usage-log.ts :11 import { existsSync, statSync, renameSync, appendFileSync, mkdirSync } from "node:fs";
  • fs NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/ws-bridge.ts :4 import { mkdirSync, writeFileSync } from "node:fs";
  • fs NeoDrew-chromeflow-9503b5c/packages/plugin/hooks/inject.js :18 const fs = require('fs');
show 1 more
  • fs NeoDrew-chromeflow-9503b5c/packages/plugin/server/chromeflow.mjs :24623 import { mkdirSync as mkdirSync2, writeFileSync } from "node:fs";

shell / exec 3

  • shell NeoDrew-chromeflow-9503b5c/packages/extension/pack.mjs :13 import { execSync } from "node:child_process";
  • shell NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/screenshot.ts :6 import { execSync } from "child_process";
  • shell NeoDrew-chromeflow-9503b5c/packages/plugin/server/chromeflow.mjs :25490 import { execSync } from "child_process";

network 6

  • net NeoDrew-chromeflow-9503b5c/apps/website/src/components/ValidatedPlatforms.jsx :155 fetch('/validated/last-run.json')
  • net NeoDrew-chromeflow-9503b5c/packages/extension/src/background/handlers/capture.ts :131 imgBlob = await (await fetch(capture.dataUrl)).blob();
  • net NeoDrew-chromeflow-9503b5c/packages/extension/src/background/handlers/fetch.ts :175 // Privileged fetch (extension authority + cookie jar, no tab): confine
  • net NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/scripting.ts :20 MAIN-world means the page's Content-Security-Policy applies: \`fetch()\` against authenticated APIs is often blocked by the page's connect-src directive. When that happens, switch to fetch_url — it ru
  • net NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/capture/fetch.ts :14 - **execute_script (page context):** DOM access, page CSP applies, fetch() blocked by connect-src.
  • net NeoDrew-chromeflow-9503b5c/packages/plugin/server/chromeflow.mjs :25844 MAIN-world means the page's Content-Security-Policy applies: \`fetch()\` against authenticated APIs is often blocked by the page's connect-src directive. When that happens, switch to fetch_url \u2014

tool registrations 60

  • set_file_input NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/files.ts :7
  • get_form_fields NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/forms.ts :6
  • open_page NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/navigation.ts :8
  • inspect_request_headers NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/navigation.ts :69
  • take_screenshot NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/screenshot.ts :10
  • capture_terminal NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/screenshot.ts :105
  • clear_overlays NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/screenshot.ts :182
  • execute_script NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/scripting.ts :6
  • interactive_snapshot NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/snapshot.ts :6
  • switch_to_tab NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/tabs.ts :7
  • list_tabs NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/tabs.ts :47
  • close_tab NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/tabs.ts :69
show 28 more
  • type_text NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/browser/typing.ts :7
  • get_page_text NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/capture/extract.ts :6
  • get_page_html NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/capture/extract.ts :66
  • get_console_logs NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/capture/extract.ts :110
  • fetch_url NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/capture/fetch.ts :9
  • write_to_env NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/capture/files.ts :9
  • download_file NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/capture/files.ts :81
  • fill_input NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/capture/input.ts :6
  • click_element NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/flow/click.ts :7
  • click_at_coordinates NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/flow/click.ts :267
  • find_text NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/flow/find.ts :6
  • list_frames NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/flow/find.ts :95
  • fill_form NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/flow/forms.ts :6
  • save_flow NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/flow/save.ts :6
  • wait_for_click NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/flow/wait.ts :6
  • wait_for NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/flow/wait.ts :65
  • scroll_to_element NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/flow/wait.ts :152
  • highlight_region NeoDrew-chromeflow-9503b5c/packages/mcp-server/src/tools/highlight.ts :6
  • open_page NeoDrew-chromeflow-9503b5c/packages/plugin/server/chromeflow.mjs :25293
  • inspect_request_headers NeoDrew-chromeflow-9503b5c/packages/plugin/server/chromeflow.mjs :25346
  • switch_to_tab NeoDrew-chromeflow-9503b5c/packages/plugin/server/chromeflow.mjs :25378
  • list_tabs NeoDrew-chromeflow-9503b5c/packages/plugin/server/chromeflow.mjs :25406
  • close_tab NeoDrew-chromeflow-9503b5c/packages/plugin/server/chromeflow.mjs :25424
  • interactive_snapshot NeoDrew-chromeflow-9503b5c/packages/plugin/server/chromeflow.mjs :25461
  • take_screenshot NeoDrew-chromeflow-9503b5c/packages/plugin/server/chromeflow.mjs :25492
  • capture_terminal NeoDrew-chromeflow-9503b5c/packages/plugin/server/chromeflow.mjs :25551
  • clear_overlays NeoDrew-chromeflow-9503b5c/packages/plugin/server/chromeflow.mjs :25614
  • get_form_fields NeoDrew-chromeflow-9503b5c/packages/plugin/server/chromeflow.mjs :25629

20 more not shown — this panel samples each group; the count above is the real total.

declared dependencies 1

  • vitest@^4.1.8