other
- Location
SKILL.md:50- Finding
Sensitive Provider API Keys Transmitted to an Unverified Third-Party Relay
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is not clearly malicious, but it asks apps to send and store users' paid AI API keys with an external relay by default, so it needs careful review before use.
Use the managed relay only if you are comfortable with its operator holding encrypted provider keys and processing prompts. For production, sensitive users, or organization-wide keys, prefer a self-hosted or app-controlled backend pinned to an audited release, use scoped and budget-limited provider keys, disclose relay operator/privacy/retention terms to users, and keep shared relay tokens out of browsers.
SKILL.md:50Sensitive Provider API Keys Transmitted to an Unverified Third-Party Relay
SKILL.md:67Unpinned Remote Repository and Dependency Installation
SKILL.md:91Long-Lived Relay Bearer Token Persisted in Browser localStorage
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
git clone https://github.com/avikalpg/byok-relay.git
cd byok-relay && npm install
echo "ENCRYPTION_SECRET=$(openssl rand -hex 32)" > .env
echo "ALLOWED_ORIGINS=https://your-app.com" >> .env
npm start
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
git clone https://github.com/avikalpg/byok-relay.git
cd byok-relay && npm install
echo "ENCRYPTION_SECRET=$(openssl rand -hex 32)" > .env
echo "ALLOWED_ORIGINS=https://your-app.com" >> .env
npm start
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
git clone https://github.com/avikalpg/byok-relay.git
cd byok-relay && npm install
echo "ENCRYPTION_SECRET=$(openssl rand -hex 32)" > .env
echo "ALLOWED_ORIGINS=https://your-app.com" >> .env
npm start
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
- Show "Rotating…" state; confirm success or failure clearly
- Recommended cadence: every 90 days or on any suspected compromise
**Deletion (`DELETE /keys/:provider`):**
- Immediate effect — all in-flight requests using that key will fail
- Prompt the user to confirm before deleting
- After deletion, set UI state to `disconnected` and hide key actions
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
- Prompt the user to confirm before deleting
- After deletion, set UI state to `disconnected` and hide key actions
**Account erasure (`DELETE /users`):**
- Deletes all stored keys and the relay token (GDPR Art. 17)
- Include in account-deletion or data-export flows
- Irreversible — warn the user explicitly
Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.
When integrating byok-relay, always generate a styled API key input component that matches the app's existing design system. This is a required part of the integration — the relay is useless without a UI for users to enter their keys.
**Never prefill the input with a stored key value.** The relay never returns stored key material. If a key is already stored, show a masked placeholder (e.g. `sk-...••••••••`) or a "Key already saved" badge — never the actual key.
**What to generate:**
- A settings panel or modal with a password-type `<input>` for the API key
The manifest and early documentation emphasize a client-side, zero-backend relay for frontend applications. However, the organization flow explicitly requires an app backend to create relay users server-side, proxy relay requests, and withhold relay tokens from browsers, which materially exceeds the advertised 'no dedicated backend' usage model for that documented integration path.
The stated purpose is helping client-side apps use a BYOK relay for multi-provider LLM access. This section introduces relay-side traffic attribution via logged User-Agent values and GET /stats observability, which is ancillary operator analytics behavior not surfaced in the manifest description.
No suspicious patterns detected.