T09 · Insecure Skill Coding Practices
- Location
SKILL.md:45- Finding
API Credentials Can Be Transmitted to an Unrestricted Environment-Controlled Endpoint
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is not clearly malicious, but it gives broad account-management commands that can expose credentials, publish or delete data, and change integrations without enough guardrails.
Install only if you intend to let the agent administer your Neonous account broadly. Verify NEONOUS_URL is the official trusted HTTPS Neonous endpoint before any command, use a scoped and revocable API key if available, prefer the web UI for secrets and billing, and require explicit confirmation before public sharing, deleting, emptying trash, resetting memory, or adding MCP/Telegram integrations.
SKILL.md:45API Credentials Can Be Transmitted to an Unrestricted Environment-Controlled Endpoint
SKILL.md:645Telegram Bot Token and Neonous API Key Can Be Posted to an Unvalidated Destination
SKILL.md:270Unpinned MCP Package Can Be Downloaded and Executed Through npx Without Confirmation
MCP server operations are sensitive because server configurations may expose integration details, endpoints, enabled state, and possibly references to environment-variable-backed secrets. In this skill's context, MCP management extends beyond harmless listing into infrastructure and tool-chain control, making config access more dangerous than ordinary inventory queries.
For adding MCP servers, recommend the web UI — it has a searchable catalog with one-click install and secure environment variable management.
curl -s "$NEONOUS_URL/custom/builder/mcp" \
The manifest description materially understates the skill's capabilities. The file exposes operations spanning public sharing, billing visibility, artifact/storage management, reminders, Telegram integration, and memory reset; that scope mismatch can mislead reviewers and users into granting trust or approval under a narrower mental model than the skill actually warrants.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
For complex agents, recommend the web UI — it has AI-assisted generation and a template gallery. For simple agents via API:
curl -s -X POST "$NEONOUS_URL/custom/builder/agents" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Let Neonous AI generate a full agent config from a name and description:
curl -s -X POST "$NEONOUS_URL/custom/builder/agents/generate" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Improve existing agent instructions with AI:
curl -s -X POST "$NEONOUS_URL/custom/builder/enhance-instructions" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"instructions": "You help with code"}' | jq '.enhanced'
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -s -X PUT "$NEONOUS_URL/custom/builder/agents/<AGENT_ID>" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Non-streaming generate endpoint — returns a complete JSON response:
curl -s -X POST "$NEONOUS_URL/custom/builder/chat/generate" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "x-agent-id: <AGENT_ID>" \
-H "Content-Type: application/json" \
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Non-streaming generate endpoint — returns a complete JSON response:
curl -s -X POST "$NEONOUS_URL/custom/builder/chat/generate" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "x-agent-id: <AGENT_ID>" \
-H "Content-Type: application/json" \
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -s -X POST "$NEONOUS_URL/custom/builder/chat/sessions" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"agentId": "<AGENT_ID>", "title": "My Session"}' | jq .
Adding a stdio MCP server can register and later enable execution of arbitrary external tooling, here exemplified by npx fetching a package. In this context, the skill is not merely sending data to Neonous; it is provisioning executable integrations that may expand the platform's trust boundary and introduce supply-chain or command-execution risk if users accept unvetted server definitions.
curl -s -X POST "$NEONOUS_URL/custom/builder/mcp" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
Adding an HTTP MCP server can connect the platform to arbitrary remote endpoints, extending tool access to external infrastructure. This creates a meaningful trust-boundary expansion and possible data egress path beyond routine first-party API use, especially if users are not warned that the configured endpoint may receive agent/tool traffic.
curl -s -X POST "$NEONOUS_URL/custom/builder/mcp" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -s -X POST "$NEONOUS_URL/custom/builder/workflows/<WORKFLOW_ID>/execute" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"input": {"key": "value"}}' | jq .
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Create folder
curl -s -X POST "$NEONOUS_URL/custom/builder/artifacts/folders" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "My Folder"}' | jq .
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
-H "x-api-key: $NEONOUS_API_KEY" | jq .
# Move artifacts to folder
curl -s -X POST "$NEONOUS_URL/custom/builder/artifacts/move" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"artifactIds": ["<ID1>", "<ID2>"], "folderId": "<FOLDER_ID>"}' | jq .
The skill can create public share links for artifacts, which is a data-exposure capability beyond the narrow manifest summary. Because artifacts may contain code, documents, or other sensitive outputs, a public link operation can silently turn private workspace content into externally accessible data if invoked without explicit user understanding.
The skill documents public sharing, deletion, trash emptying, restore, and duplication actions without requiring user-facing warnings or confirmations. These operations can expose data externally or cause irreversible loss, so omission of impact warnings materially raises the risk of accidental disclosure or destruction during agent-assisted use.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
-H "x-api-key: $NEONOUS_API_KEY" | jq .
# Create space
curl -s -X POST "$NEONOUS_URL/custom/builder/spaces" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "My Project", "description": "Artifacts for my project", "icon": "📁", "color": "#3B82F6"}' | jq .
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
-d '{"name": "My Project", "description": "Artifacts for my project", "icon": "📁", "color": "#3B82F6"}' | jq .
# Update space
curl -s -X PUT "$NEONOUS_URL/custom/builder/spaces/<SPACE_ID>" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Renamed Space"}' | jq .
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
-H "x-api-key: $NEONOUS_API_KEY" | jq .
# Add artifact to space
curl -s -X POST "$NEONOUS_URL/custom/builder/spaces/<SPACE_ID>/artifacts" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"artifactId": "<ARTIFACT_ID>"}' | jq .
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
-H "x-api-key: $NEONOUS_API_KEY" | jq .
# Create bookmark
curl -s -X POST "$NEONOUS_URL/custom/builder/bookmarks" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"sessionId": "<SESSION_ID>", "messageId": "<MSG_ID>", "tags": ["important"]}' | jq .
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
-H "x-api-key: $NEONOUS_API_KEY" | jq .
# Create reminder (schedule is a cron expression)
curl -s -X POST "$NEONOUS_URL/custom/builder/reminders" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
Telegram bot connection setup introduces an external integration and secret-handling capability that is not reflected in the manifest's stated scope. This broadens the skill from platform management into cross-system account linkage, increasing the chance that users disclose bot tokens or authorize integrations they did not expect this skill to manage.
The Telegram connection flow asks for a bot token and sends it to an external service without prominent handling warnings. Bot tokens are credentials; exposing them in prompts, logs, transcripts, or shell history can enable unauthorized control of the bot and downstream conversations.
This API call transmits a Telegram bot token, which is a credential, to the platform. In context this is more dangerous than ordinary external transmission because it handles sensitive secrets that may be exposed in chat history, logs, examples, or copied commands, enabling takeover of the connected bot if mishandled.
-H "x-api-key: $NEONOUS_API_KEY" | jq .
# Connect agent to Telegram
curl -s -X POST "$NEONOUS_URL/custom/builder/telegram/connect" \
-H "x-api-key: $NEONOUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"agentId": "<AGENT_ID>", "botToken": "<TELEGRAM_BOT_TOKEN>"}' | jq .
Working memory reset is a destructive operation affecting retained agent context, but the skill provides no warning about its consequences. A user or agent could erase persistent context unintentionally, disrupting workflows or deleting valuable long-term instructions and memory state.
No suspicious patterns detected.