T08 · Insecure Dependencies
- Location
README.md:217- Finding
Unpinned Third-Party Skill Installations Create a Supply-Chain Risk
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a coherent X/Twitter routing skill, but users should understand that it relies on third-party services and optional posting-related tools before installing them.
Install this as a routing/documentation skill only if you are comfortable with its X/Twitter focus. Treat fxtwitter as a third-party proxy: avoid using it for sensitive investigations unless that disclosure is acceptable, and prefer official or trusted internal APIs where needed. Keep posting in draft-only or manual approval mode, and review/pin any optional sub-skills before installing them or exposing X OAuth credentials.
README.md:217Unpinned Third-Party Skill Installations Create a Supply-Chain Risk
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<!-- What you get from direct x.com fetch -->
<html><body><!-- JS app loads here --></body></html>
The README directs users to retrieve tweet content through the third-party fxtwitter proxy and emphasizes it as the default pattern, but it does not disclose that tweet URLs, query targets, and related access metadata are sent to an external service outside the user's control. In an agent setting, this can leak user interests, monitored accounts, private investigation targets, or sensitive operational context whenever the skill is used to read tweets.
The example curl command instructs users to send tweet requests directly to api.fxtwitter.com, which is an external service, without any warning about data disclosure or trust implications. Even though the sample uses a public example URL, normal use would transmit real tweet targets and usage patterns to a third party, which is significant in a security-sensitive agent workflow.
curl "https://api.fxtwitter.com/example/status/1234567890" | jq .
You should get JSON response with tweet content.
The skill instructs the agent to transmit user-supplied tweet identifiers and usernames to a third-party endpoint, api.fxtwitter.com, rather than an official first-party service. Even though the data is public tweet metadata, this creates an external dependency and privacy/integrity risk because user activity, accessed URLs, and retrieved content are exposed to an unaffiliated service that could log, modify, or become unavailable.
Always use fxtwitter for reading tweet content:
https://api.fxtwitter.com/{username}/status/{tweet_id}
Extract username and tweet_id from the x.com URL:
This operational instruction concretely directs web_fetch to send request data to api.fxtwitter.com for all tweet reads, making the external transmission behavior actionable. In context, the risk is amplified because the skill labels this as a hard rule, which may prevent safer alternatives and normalize sending browsing targets to a third-party service without trust verification or consent.
When: You have an x.com/twitter.com link and need to read the content How:
web_fetch("https://api.fxtwitter.com/{username}/status/{id}")
Response includes: full text, author, engagement stats, media URLs, thread context via reply_to
The listed activation examples include phrases like "What are people saying about X" and "search X for Y," which are broad natural-language requests that could arise in many contexts. The file does not provide negative examples or clearer constraints for when this router should activate versus other research or social-analysis skills.
The trigger text "Trend research requests, topic popularity analysis" is very broad and does not define concrete invocation phrases or boundaries. Without explicit scope or negative examples, the skill may be invoked for generic research requests that were not intended for this sub-tool.
The document gives explicit optimization advice for AI assistant/bot accounts to increase reach and engagement, but omits any warning about X platform rules, anti-spam enforcement, automation disclosure, or reputational risks. In a master routing skill for X/Twitter operations, this can directly shape agent behavior toward engagement-maximizing tactics that may violate policy or encourage manipulative automated participation.
This instruction hard-codes use of an external third-party endpoint, causing tweet identifiers and request metadata to be sent outside the trusted environment. In an agent setting, repeated automated use can expose user activity patterns and create dependency on an unvetted external service.
https://api.fxtwitter.com/{username}/status/{tweet_id}
Example:
The example reinforces a pattern of sending content lookups to a public proxy service without any warning or trust boundary discussion. That can normalize unsafe data egress in downstream implementations and obscure the privacy implications of third-party processing.
Example:
https://api.fxtwitter.com/example/status/1234567890
The pattern tells agents to transmit user-supplied X URLs and derived identifiers to a third-party proxy without any notice, consent guidance, or data-handling constraints. Even if tweet IDs are often public, user requests, access patterns, and private/internal links can leak to an external service, creating privacy, compliance, and telemetry exposure.
The pseudo-code operationalizes direct outbound fetching to a public service, making external transmission part of the recommended implementation. Because agent developers may copy this verbatim, it increases the chance of silent data egress and insufficient review of logging, retention, and consent implications.
// Pseudo-code
const response = await web_fetch("https://api.fxtwitter.com/example/status/1234567890");
const data = JSON.parse(response);
The workflow example instructs construction and use of a third-party URL as the normal processing path. In context, the danger is not code execution but normalized external exfiltration of request targets and usage metadata to infrastructure outside the operator's control.
### Process
1. Extract: `username=example`, `tweet_id=1234567890`
2. Construct: `https://api.fxtwitter.com/example/status/1234567890`
3. Fetch and parse JSON
4. Extract fields
This sample code combines caching with direct calls to a third-party endpoint, which can inadvertently retain fetched content locally while also sending queries externally. Without retention guidance, this creates both privacy exposure to the proxy and local data-handling risk.
if (cache[tweetId]) {
return cache[tweetId]; // Return cached
}
const data = await web_fetch(https://api.fxtwitter.com/${username}/status/${tweetId});
cache[tweetId] = data;
return data;
The rule 'Always use' the public proxy makes third-party transmission mandatory and discourages safer alternatives. In a master routing skill, such normative wording is more dangerous because it can propagate across many agent workflows and institutionalize external data sharing.
The rule: Never fetch x.com directly. Always use:
https://api.fxtwitter.com/{username}/status/{tweet_id}
Extract from: https://x.com/{username}/status/{tweet_id}
The manifest describes x-master as a master routing skill for many X/Twitter operations, but this file is maintained as part of x-master and documents only a narrow tweet-fetching pattern via fxtwitter. That creates a semantic mismatch between the skill-level description and what this component actually represents, even though the file itself is documentation rather than executable code.
No suspicious patterns detected.