backdraw@2.4.0
CAUTION· static onlyPublisher claims: "Lets Claude and other MCP clients generate and edit images with your own signed-in ChatGPT account in a background Chrome tab. No API key, no open ports; right-click reference collections and a gallery side panel. Windows + Chrome." Observed in sandbox: static analysis only — behavior not yet observed.
Coverage
Static only; nothing was run yet.The label rests on the code, the instruction files and the publisher. The honeypot run replaces this verdict when it completes.
Before you give it your token
- It will ask for
- no credential variables read in the code
- Where it talks to
- no vendor host named in the codeAlso chatgpt.com — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- nothing has run yet
- What we could not test
- everything: the server has not run yet
Run it before you trust it. Nothing has run yet: the code was read, the server was not. `vet-skills try` runs this exact version in the honeypot in about a minute.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills analysed it statically (a sandbox run is pending) on 2026-11-14 and scored it 60/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Hidden zero-width characters detected. Summary: static analysis only — behavior not yet observed.
Behavior trace
Queued for honeypot run · static analysis onlyThis version has not been detonated yet. The score above counts behavior as unknown (50/100), so it cannot read Verified until the honeypot run completes and replaces this verdict.
Static findings
// Only an entry that can't work is rewritten; an npx entry or another working copy never is.Fix: Pin versions and sources; vendor anything fetched at install time."description": "The Backdraw MCP server (runs npx backdraw) and /backdraw:setup for the one-time browser setup.",Fix: Pin versions and sources; vendor anything fetched at install time.// npx backdraw@latest setupFix: Pin versions and sources; vendor anything fetched at install time.const SETUP = 'npx backdraw@latest setup';Fix: Pin versions and sources; vendor anything fetched at install time.const text = fs.readFileSync(file, 'utf8').replace(/^/, '');Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.// The package an npx entry runs: `npx backdraw@latest mcp`, also through `cmd /c` (how WindowsFix: Pin versions and sources; vendor anything fetched at install time.fs.writeFileSync(path.join(DIR, 'data', 'config.json'), JSON.stringify({ outputDir: IMAGES, collectionsDir: REFS, project: PROJECT }));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.node cli.js generate "<prompt>" [--ref IMAGE]... [--url CHAT_LINK] [--aspect W:H] [--transparent]Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.Backdraw, bilgisayarında çalışan bir MCP sunucusu ve bir Chrome eklentisinden oluşur. Claude'danFix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.…ki görseller sağ tıkla referans olarak kaydediliyor, sonra Claude Code Backdraw'dan o tarzda bir görsel istiyor; ChatGPT görseli arka plan sekmesinde çiziyor ve do…Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.assert.deepEqual([by('Cursor')[0].status, by('Cursor')[0].fix], ['warn', 'Run: npx backdraw@latest setup --clients=cursor']);Fix: Pin versions and sources; vendor anything fetched at install time.3. **Load the extension** once: open `chrome://extensions`, turn on **Developer mode**, clickFix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.### Claude Code'danFix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.1. turn on **Developer mode** (top right),Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.assert.deepEqual(readJson(path.join(newDir, 'data', 'config.json')), { outputDir: 'C:\\Pictures\\Old' });Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.writeJson(path.join(legacy, 'data', 'config.json'), { outputDir: path.join(t.home, 'OldPics') });Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// `backdraw setup` (npx backdraw@latest setup): installs Backdraw into %USERPROFILE%\.backdraw (npx'sFix: Pin versions and sources; vendor anything fetched at install time.3. **Load the extension** once: open `chrome://extensions`, turn on **Developer mode**, clickFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.const FIX = 'npx backdraw@latest doctor --fix';Fix: Pin versions and sources; vendor anything fetched at install time.assert.equal(readJson(path.join(t.dest, 'data', 'config.json')).outputDir, path.join(t.home, 'OldPics'));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.assert.match(text, /\n7 problems, 2 warnings\. "npx backdraw@latest doctor --fix" can repair 3 of them\.$/);Fix: Pin versions and sources; vendor anything fetched at install time.assert.equal(fs.readFileSync(path.join(collision, 'keep.txt'), 'utf8'), 'leave existing outputs alone');Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.1. turn on **Developer mode** (top right),Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.// fixable; an npx entry, another working copy or an entry it doesn't know is reported and left alone.Fix: Pin versions and sources; vendor anything fetched at install time.assert.equal(by('Claude Code')[0].fix, 'npx backdraw@latest doctor --fix');Fix: Pin versions and sources; vendor anything fetched at install time.3. Claude'dan koleksiyonu adıyla kullanmasını iste.Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.// An entry that starts Backdraw through npx stays as it is (npx fetches the new version itself).Fix: Pin versions and sources; vendor anything fetched at install time.fs.writeFileSync(path.join(collision, 'keep.txt'), 'leave existing outputs alone');Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.else add('ok', label, e.kind === 'npx' ? `set up via npx (${e.spec})` : 'set up for this install');Fix: Pin versions and sources; vendor anything fetched at install time.writeJson(path.join(oldDir, 'data', 'config.json'), { outputDir: 'C:\\Pictures\\Old' });Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// A file whose entry starts npx is kept as it is.Fix: Pin versions and sources; vendor anything fetched at install time.assert.deepEqual([by('Version')[0].status, by('Version')[0].fix], ['warn', 'Update: npx backdraw@latest setup']);Fix: Pin versions and sources; vendor anything fetched at install time.assert.match(text, /✗ Google Chrome +the native host is not registered\n +→ npx backdraw@latest doctor --fix\n/);Fix: Pin versions and sources; vendor anything fetched at install time."requirements": "Windows 10/11, Google Chrome 116+, Node.js 20+, a ChatGPT account signed in in Chrome. Run \"npx backdraw@latest setup\" once to install the browser extension and native host.",Fix: Pin versions and sources; vendor anything fetched at install time.// The npx package a client's entry runs ("backdraw@latest"), or null when it starts a local file.Fix: Pin versions and sources; vendor anything fetched at install time.Eklenen önizleme tüm kareleri numaralı bir ızgarada gösterir (16'dan fazlaysa eşit aralıklı 16 kare);Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.work, `npx backdraw@latest doctor` checks every piece and says how to fix it.Fix: Pin versions and sources; vendor anything fetched at install time.npx backdraw@latest setup --clients=noneFix: Pin versions and sources; vendor anything fetched at install time.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.
What would make this Verified
20 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim devtalh: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Hidden zero-width characters detected≈ +4 on the totalKeep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.
- File type combined with upload action≈ +2 on the totalRemove the call, or declare the host in frontmatter and explain in the README what is sent and why.