Atlas / MCP servers / koala-studios / koala-studios-newton-browser

koala-studios-newton-browserBLOCK

mcp/koala-studios/newton-browser
Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
13 11r · 2w · 0d
Transport
—
License
MIT
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Newton Browser is a local MCP browser-control product for agents. Each session launches an isolated Chrome or Edge process and controls it through inherited private CDP pipes. By default browser traffic uses Chromium's normal networking with no Newton proxy, origin allowlist, request interception, or resource filtering.

The default runtime requires no browser extension, relay, daemon, debug TCP port, database, telemetry, hosted service, or model-provider integration.

Status

The default source runtime now uses the replacement shared engine, with isolated workers from a shared Newton login source and an optional thin existing-browser adapter. Native actions, precise editing, contextual controls, records/documents, screenshots, tab ownership and update foundations are implemented. This is an unreleased development checkpoint, not completed real-world acceptance.

The legacy direct runtime is retired (2026-09-25): the session engine is the only action, receipt and ref authority. Build, typecheck, boundary lint and the full suite pass. Feedback/reading refinements, platform and authenticated task QA, and three unchanged packed release gates remain open. See the current progress ledger, remaining roadmap and consolidation record.

Version 0.7.2 is published as a GitHub prerelease tarball verified on macOS Chrome; Windows and Linux receipts for it remain open. No npm or browser-store release exists.

Newton implements only stateless MCP 2026-07-28 over newline-delimited stdio JSON. Clients send protocol version and capabilities in every request. Newton exposes no legacy handshake or framing mode.

Requirements

  • Node.js 24 or newer.
  • A current local Chrome or Edge installation.
  • An MCP client that supports MCP 2026-07-28, local stdio servers, and image content.

Build and connect

pnpm install --frozen-lockfile
pnpm build
node a
Read from source at commit 4eff255177a5OBSERVED · 2026-10-11
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add driver -- npx -y @newton-browser/[email protected]
claude-desktop
{
  "mcpServers": {
    "driver": {
      "command": "npx",
      "args": [
        "-y",
        "@newton-browser/[email protected]"
      ]
    }
  }
}
03

Exposed tools (13)

11 read · 2 write · 0 destructive.

ToolRiskDescription
browser.commandreadGet or cancel a command without waiting behind input.
browser.consolereadConsole messages and uncaught errors, oldest first. Recording starts on the first call (with the page
browser.document.continuereadContinue one immutable document snapshot with its opaque cursor. Snapshots expire after five minutes or when their document changes.
browser.document.readreadRead bounded redacted document text, optionally from one container, and receive an opaque continuation cursor.
browser.existing.discoverreadProbe the configured existing-browser connection and return bounded live tab inventory with instance identity and ownership. Does not claim tabs. Existing mode requires the operator to request their browser.
browser.existing.setupreadCheck live existing-browser readiness and tab inventory. Reports not_ready when the adapter cannot respond; does not install the extension or claim tabs.
browser.networkreadRequest metadata (method, URL, type, status, failure; never headers), oldest first, or with requestId one text response body from the page
browser.page.selectreadSelect a known session page and return its current bounded state.
browser.pages.listreadList attached session pages with document stamps, observed URL/title, opener and selection. Popups do not change the selected page.
browser.screenshotreadCapture a bounded PNG with automatic password and sensitive-autocomplete masking across frames and shadow roots. Optional sensitiveZones add explicit masks. Refuses unverifiable geometry or incomplete discovery.
browser.session.startwriteDefault: isolated headless browser at a complete URL. Only when the operator requests their browser, claim a specific existing tab or create an owned background tab using target kind new_tab and a complete URL.
browser.session.stopwriteStop this owned session independently of its action queue.
browser.sessions.listreadList this MCP process
04

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (6 observation(s))
Network
declared (13 observation(s))
Shell
declared (5 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (19)

HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
docs/CONNECTION_PROTOTYPES_2026-09-07.md:33
| Changed extension code followed by self-reload | Passed with developer mode enabled | The same installed extension reports a new boot epoch and rejects its old claim; no reinstall required |
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
apps/mcp-server/src/browser-runtime/egress-proxy.ts:74
proxyServer: `http://127.0.0.1:${port}`,
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
apps/mcp-server/src/browser-runtime/setup-cli.ts:44
const started = json(await engine.start({ url: `http://127.0.0.1:${address.port}/` }));
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/prototype-login-source.mjs:30
const origin=`http://127.0.0.1:${server.address().port}`;
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/prototype-tab-connection.mjs:27
const origin=`http://127.0.0.1:${server.address().port}`;
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/qa/packed-concurrency-probes.mjs:548
const fixtureUrl = `http://127.0.0.1:${address.port}/fixture.html`;
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
apps/mcp-server/test/browser-runtime/profile-store.test.ts:109
const secret = "opaque-cookie-secret";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/native-client-adversarial.test.mjs:21
await client.call('command',{method:'Input.insertText',params:{text:'private-fixture-value'},token:'private-fixture-token'});
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/mcp-server/test/browser-runtime/browser-discovery.test.ts:7
import { browserExecutableCandidates, discoverBrowserExecutable, trustedLinuxSystemBrowserTarget } from "../../src/browser-runtime/browser-discovery.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/mcp-server/test/browser-runtime/browser-guardian.test.ts:13
const guardian = path.resolve(testDirectory, "../../src/browser-runtime/browser-guardian.ts");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/mcp-server/test/browser-runtime/cdp-pipe.test.ts:6
import { CdpPipeTransport, CdpTransportError } from "../../src/browser-runtime/cdp-pipe.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/mcp-server/test/browser-runtime/chromium-process.test.ts:10
import { chromiumLaunchArgs, ChromiumLaunchError, launchChromium } from "../../src/browser-runtime/chromium-process.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/mcp-server/test/browser-runtime/chromium-process.test.ts:11
import { browserMajorVersion, headedUserAgent } from "../../src/browser-runtime/browser-user-agent.ts";
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
test/egress-proxy.test.mjs:11
for (const address of ['10.0.0.1', '172.16.0.1', '172.31.255.255', '192.168.1.1', '127.0.0.1', '0.0.0.0', '169.254.169.254',
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
test/egress-proxy.test.mjs:13
'::ffff:10.0.0.1', '::ffff:169.254.169.254', '::ffff:7f00:1', '64:ff9b::a00:1', '2002:a00:1::', '2001:db8::1', 'ff02::1', 'not-an-ip'])
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
test/egress-proxy.test.mjs:42
const names = { 'internal.test': ['10.0.0.5'], 'metadata.test': ['169.254.169.254'], 'mixed.test': ['93.184.216.34', '192.168.0.2'], 'postgres': ['172.18.0.4'] };
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
test/egress-proxy.test.mjs:45
for (const target of ['internal.test:443', 'metadata.test:80', 'mixed.test:443', 'postgres:5432', '127.0.0.1:22', '[::1]:443', '169.254.169.254:80', 'unknown.test:443'])
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@types/node, esbuild, typescript
Why it matters. 3 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
docs/MCP_CLIENTS.md:41
checkout. `claude mcp list` should report the server connected. Start a new session to load its tools.
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine

Gates applied: instruction_override, no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha 4eff255177a5full audit observations/trust-audit/mcp-server/koala-studios__newton-browser.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-114eff255177a5BLOCKD69first audit
06

Questions

What tools does koala-studios-newton-browser expose?

13 in total: 11 read-only, 2 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is koala-studios-newton-browser safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on.

What credentials does koala-studios-newton-browser need?

No credential environment variables were found in its source, so it appears to need none.

How current is this page?

The grade is for one exact copy of the source (4eff255177a5), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement