T09 · Insecure Skill Coding Practices
- Location
scripts/mcp-call.sh:38- Finding
Unrestricted Endpoint Override Can Exfiltrate Bearer Credentials and Research Data
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent AI user-research integration, but it handles sensitive research data and API credentials with some under-scoped sharing and endpoint controls that users should review before installing.
Install only if you are comfortable sending research prompts, interview outputs, persona queries, and generated reports to atypica.ai. Avoid confidential or regulated data unless you understand the service's retention and sharing model, do not use public share links for sensitive reports, do not enable verbose mode with private inputs, and do not run the bash wrapper in an environment where ATYPICA_ENDPOINT may be set by untrusted configuration.
scripts/mcp-call.sh:38Unrestricted Endpoint Override Can Exfiltrate Bearer Credentials and Research Data
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
**Authentication**: `Authorization: Bearer <api_key>`
Get API key from atypica.ai account settings (format: `atypica_xxx`)
## Tool Schemas
The skill documents shell-based execution via curl/jq and scripts/mcp-call.sh, but it does not declare any explicit tool scope such as permissions or allowed-tools. That creates an unnecessary capability gap where an assistant may invoke shell access more broadly than intended, increasing the risk of command execution or data exfiltration if the skill is triggered in the wrong context.
The manifest includes broad triggers like 'talk to users', 'get user feedback', and 'ask real people', which are common phrases that can match many benign requests. Over-broad activation increases the chance this skill is invoked unexpectedly, causing user data or prompts to be sent to a third-party service without deliberate user intent.
The skill explicitly highlights shareUrl as a public shareable link and encourages direct sharing, but it provides no privacy warning or guidance about sensitive content in generated reports. If users include proprietary, personal, or confidential research inputs, the public report link could expose that data to anyone with the URL.
The manifest frames this skill as a user-research tool for simulated interviews and focus groups, but the documented toolset is a generic 'Universal Agent' API with general chat session creation, message persistence, historical chat listing, and retrieval of arbitrary universal/study chat content. Those broader operations are not clearly limited to interview simulation and materially expand the described scope.
The manifest focuses on simulating personas to gather qualitative human insights, but the API reference also exposes standalone retrieval of generated reports and podcasts, including shareable URLs and media metadata. Artifact distribution and podcast generation are not an obvious implementation detail of conducting simulated user interviews.
The reference provides shareable report and podcast URLs but does not warn that these links may grant access to research artifacts outside the immediate authenticated session. In a skill handling potentially sensitive interview outputs, users may unintentionally disclose confidential research data by sharing or logging these URLs.
The API exposes full persona prompts, which may contain proprietary prompt engineering, sensitive synthetic profile details, or hidden behavioral instructions not necessary for ordinary interview use. In the context of a user-research skill, direct retrieval of underlying prompts broadens data exposure and can leak internal model scaffolding or reusable prompt assets.
In verbose mode the script logs the full JSON-RPC request payload, which includes user-supplied arguments and may contain sensitive research prompts, identifiers, or conversation data. Because this is a user-research skill handling potentially sensitive qualitative data, printing payload contents to stderr increases the chance of exposure through terminal history, CI logs, or centralized log collection.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Make API call
local response
response=$(curl -s -X POST "$ENDPOINT" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $TOKEN" \
The script supports writing API responses directly to any caller-supplied file path, and those responses can contain sensitive interview transcripts, reports, persona outputs, or tokens/identifiers. In the context of simulated user interviews and focus groups, storing such output without warning or safeguards can lead to unintended retention, disclosure via shared directories, or later exfiltration by other processes.
Listing all historical universal chat sessions is an account-level management capability rather than a direct requirement for running a user interview or focus group. It exposes broader session enumeration functionality that is not clearly necessary for the manifest's narrow research-assistant purpose.
Returning full persona prompts without warning can expose sensitive or proprietary prompt content to downstream consumers who may assume it is safe to display, store, or redistribute. In this skill context, persona internals are more sensitive than ordinary output because they may encode hidden instructions or licensed content.
No suspicious patterns detected.