preflight

https://github.com/AgewellEPM/tinky-vision-mcp

tinky-vision-mcp

Risky

Score 64 / 100 · 25 files read · 0 critical, 0 high, 7 medium, 5 low findings

Report 09207882c1516ae3 · first scanned 2026-10-28 · scanned 3× · keyed to the exact package contents, so this link always shows this version

Listed in the Agent Census directory data

Subscores

credentials92
exfiltration92
execution60
injection100
obfuscation98
files92

100 is clean. Deductions come only from the cited findings below.

Findings

mediumCode contacts www.apple.com, which the documentation never mentions
(package) · line 1 · rule M3
www.apple.com
mediumCan run shell commands from code
scripts/stage-scoped-helper.mjs · line 4 · rule M1
wnSync } from 'node:child_process'; import { randomUUID, createHash } from 'node:crypto'; import { existsSync, lstatSync, readlink
mediumCan run shell commands from code
src/scoped-ax.mjs · line 4 · rule M1
spawn } from 'node:child_process'; import { randomUUID } from 'node:crypto'; import { userInfo } from 'node:os'; import { isAbsol
mediumCan run shell commands from code
src/server.mjs · line 64 · rule M1
leSync } from 'node:child_process'; import { mkdirSync, appendFileSync, existsSync, statSync, renameSync, readdirSync, unlinkS
mediumWrites files under the user home directory
src/server.mjs · line 68 · rule M5
Sync, readFileSync, writeFileSync, chmodSync, } from 'node:fs'; import { homedir } from 'node:os'; import { join, dirname, resolve
mediumCan run shell commands from code
tests/scoped-ax.test.mjs · line 3 · rule M1
spawn } from 'node:child_process'; import { randomUUID, createHash } from 'node:crypto'; import { mkdtempSync, writeFileSync, rea
mediumCan run shell commands from code
tests/server.test.mjs · line 18 · rule M1
spawn } from 'node:child_process'; import { resolve, dirname } from 'node:path'; import { fileURLToPath } from 'node:url'; import
low13 binary file(s) were not parsed (static text analysis only)
(package) · line 1 · rule L3
13 binary files
lowReads named environment variables (normal for API keys; listed in the permission summary)
src/server.mjs · line 92 · rule L1
const HELPER_BIN = process.env.TINKY_HELPER_BIN || (existsSync(resolve(__dirname, '..', 'bin', 'tinky-os-ax')) ? resolve(__
lowReads named environment variables (normal for API keys; listed in the permission summary)
tests/fake-helper.mjs · line 14 · rule L1
'help'; const env = process.env; function out(o) { process.stdout.write(JSON.stringify(o) + '\n'); } switch (sub) { case 'focu
lowReads named environment variables (normal for API keys; listed in the permission summary)
tests/scoped-ax.test.mjs · line 25 · rule L1
ss.pid,argv, auto:process.env.TINKY_AUTO_APPROVE ?? null,dyld:process.env.DYLD_INSERT_LIBRARIES ?? null})+'\\n'); const input =
lowReads named environment variables (normal for API keys; listed in the permission summary)
tests/server.test.mjs · line 39 · rule L1
env: { ...process.env, TINKY_HELPER_BIN: FAKE, ...env, }, }); const out = { buf: '', byId: new Map()

Permission surface

Network endpoints
claude.comgithub.comkeepachangelog.comopenai.comopencollective.comraw.githubusercontent.comregistry.modelcontextprotocol.ioregistry.npmjs.orgsemver.orgstatic.modelcontextprotocol.iowww.anthropic.comwww.apple.com
Environment read
DYLD_INSERT_LIBRARIESTINKY_AUDIT_DISABLETINKY_AUDIT_KEEP_FILESTINKY_AUDIT_PATHTINKY_AUDIT_ROTATE_MAXTINKY_AUTO_APPROVETINKY_DENY_BUNDLESTINKY_HELPER_BINTINKY_READ_ONLYTINKY_STREAM_DIR
Shell execution
yes — code or scripts can run shell commands
Install hooks
none
Credential material
Reads named environment variables (normal for API keys; listed in the permission summary)

Provenance

Source
GitHub
Repository
AgewellEPM/tinky-vision-mcp

Watch this package

Interest list only. We store the address and this report link, nothing else. No mail is sent in v1.

Share this report: https://preflight.orbitaldeskllc.com/r/09207882c1516ae3