doorway@0.1.0
CAUTION· install onlyPublisher claims: "Exposes an owner-reviewed, server-validated merchant catalog as MCP shopping tools that let an agent fetch store details, search products, check availability, build a cart, and start a checkout that hands a capability-protected link to a human for PayPal sandbox approval. Pricing, inventory, discounts and payee remain server-owned, and no capture, refund or publication tools are exposed." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Nothing executable in the bundle ran; the trace covers the install step only.- Tested
- every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
What this means for the label: Caution here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
ANTHROPIC_API_KEYCHECKOUT_ACCESS_SECRETDATABASE_URLDEMO_OWNER_PASSWORDNEXT_PUBLIC_AG_STUDIO_LICENSE_KEYPAYPAL_CLIENT_SECRETPAYPAL_WEBHOOK_IDRECEIPT_PRIVATE_KEYTEST_DATABASE_URLConfiguration, not credentials: ANTHROPIC_MODEL, APP_URL, DATA_DIR, DEMO_OWNER_EMAIL, DOORWAY_MCP_URL, ISOLATED_SANDBOX, PAYPAL_CLIENT_ID, PAYPAL_MERCHANT_ID, POSTGRES_BIN, TEST_DB_MEMORY- Where it talks to
- doorway.local (its own)Also paypal.com, your-store.com — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- use of the skill by an agent
Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names paypal.com, your-store.com as well as its own vendor. The guard injects ANTHROPIC_API_KEY, CHECKOUT_ACCESS_SECRET, DATABASE_URL, DEMO_OWNER_PASSWORD, NEXT_PUBLIC_AG_STUDIO_LICENSE_KEY, PAYPAL_CLIENT_SECRET, PAYPAL_WEBHOOK_ID, RECEIPT_PRIVATE_KEY, TEST_DATABASE_URL only into requests to doorway.local (and its subdomains) and refuses the rest.
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 ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-15 and scored it 69/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: Access to sensitive file paths; Prompting user to enter sensitive credentials; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
const envFile = path.resolve(".env.local");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.register ? "Create a secure password" : "Enter your password"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if (existsSync(".env.local")) process.loadEnvFile(".env.local");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.vi.stubEnv("APP_URL", "http://10.0.0.1:3000");Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.mcpUrl: "http://169.254.169.254",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if (existsSync(".env.local")) process.loadEnvFile(".env.local");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.expect((await good.json()).data.output[0]).toMatchObject({Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.shopperMcpEndpoint({ slug: "https://169.254.169.254" }),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.@import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Instrument+Serif:ital@0;1&display=swap");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if (existsSync(".env.local")) process.loadEnvFile(".env.local");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if (existsSync(".env.local")) process.loadEnvFile(".env.local");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.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
11 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Prompting user to enter sensitive credentials≈ +9 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Unclaimed publisher≈ +8 on the totalClaim cloudy070: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- URL with embedded credentials≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- URL to the cloud instance metadata address≈ +2 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- 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.