T01 · Skill Instruction Hijacking
- Location
src/utils/token.js:23- Finding
Promotional Output Injected into Authentication Error Handling
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill does perform the advertised Douyin research tasks, but it handles API credentials and activation scope in ways users should review before installing.
Install only if you are comfortable using a third-party guaikei.com API for Douyin research. Treat GUAIKEI_API_TOKEN as a credential, avoid sending sensitive research targets unless intended, review or delete the generated logs directory after use, and prefer explicit Douyin-scoped prompts so the skill is not invoked for generic trend research.
src/utils/token.js:23Promotional Output Injected into Authentication Error Handling
src/api/search.js:59API Credential Transmitted in URL Query Strings
src/config/constants.js:19Query Operations Retry Up to Twenty Times Contrary to the Declared Limit
A strong description-behavior mismatch exists: the skill advertises external Douyin data collection workflows, while the available evidence suggests only local package or CLI-related behavior. Such deception or inaccuracy can cause unsafe routing, overbroad trust, and unnecessary exposure of credentials or user data to a component that is not doing what it claims.
A strong description-behavior mismatch exists: the skill advertises external Douyin data collection workflows, while the available evidence suggests only local package or CLI-related behavior. Such deception or inaccuracy can cause unsafe routing, overbroad trust, and unnecessary exposure of credentials or user data to a component that is not doing what it claims.
A strong description-behavior mismatch exists: the skill advertises external Douyin data collection workflows, while the available evidence suggests only local package or CLI-related behavior. Such deception or inaccuracy can cause unsafe routing, overbroad trust, and unnecessary exposure of credentials or user data to a component that is not doing what it claims.
The description includes broad generalized triggers that can activate on common research or content-planning requests even when the user did not ask for Douyin-specific data collection. This can cause the skill to be invoked unexpectedly, expanding data access and secret use beyond user intent and increasing the chance of unauthorized scraping-related actions.
The skill explicitly instructs activation for ambiguous multi-step workflows, even when Douyin is not mentioned. In a delegated-agent setting, this is dangerous because it encourages opportunistic invocation, potentially causing unrequested external queries, use of API tokens, and collection of third-party data without informed user confirmation.
The skill declares use of an environment variable token but does not declare an explicit tool scope such as permissions or allowed-tools. This creates an authorization ambiguity where the runtime may grant broader access than reviewers or users expect, especially since the skill is designed to consume secrets from the environment.
The statement '纯中文界面' imposes a specific language on users, but the file does not offer opt-in, alternatives, or a clear policy justification for restricting the skill to Chinese. This can violate organizational language-choice expectations for skills unless the locale limitation is explicitly justified.
This JSON schema uses Chinese-only natural-language titles and descriptions throughout, such as the schema title and every property description. Because the file provides no indication that Chinese is optional, user-selected, or required for a documented region-specific purpose, it appears to impose a specific language/locale unilaterally.
The README explains obtaining and configuring an API token but does not clearly warn that user queries, keywords, and target Douyin URLs are sent to a third-party external service. This is a privacy/transparency issue: users may reasonably assume local processing from the 'Node.js 一键运行' framing while sensitive research targets, investigation subjects, or query intent are actually transmitted off-system.
The skill defines invocation examples using very broad everyday phrases such as '搜索 / 搜一下 / 找 …', which can be matched in ordinary conversation and trigger the skill without an explicit user request to use Douyin tooling. Because this skill sends queries to an external service and may fetch third-party URLs/content, overbroad triggers increase the risk of unintended data disclosure and accidental external actions.
The hotlist triggers include ambiguous phrases like '今天什么火' and '热点/榜单', which can appear in general brainstorming or news discussions unrelated to Douyin. In context, this makes the agent more likely to invoke the skill unintentionally and disclose user intent or context to the external API without clear consent.
The intent recognition priority rules rely on generic keywords like '热搜', '搜索', '评论', '作品', and '账号' without sufficient platform or task-bound constraints. Since the skill metadata explicitly says it should be used even when the user did not directly say '抖音', these broad rules materially increase the chance of misrouting unrelated user requests into an external scraping/search workflow.
This markdown file presents all user-facing instructions and parameter descriptions exclusively in Chinese. Under the policy rules, forcing a specific language without user opt-in can be a natural-language policy violation when no alternative language option or justification is provided.
This function sends the user's search keyword and a token to an external API via requestApi, which is a privacy-relevant network operation. While the comments describe parameters, there is no confirmation prompt, user-facing log, or explicit disclosure in the code that user input and credentials are being transmitted.
This request sends the token along with keyword and filtering parameters over the network to retrieve search results. The operation is safety-relevant because it transmits user-provided query data and credentials, but the code contains no visible warning, prompt, or disclosure to the user.
The code reads process.env.GUAIKEI_API_TOKEN and then uses it to create and retrieve a remote comment task, which implies outbound network requests involving the provided URL and parameters. Although success/error messages exist, they do not clearly disclose the use of environment credentials and remote transmission of request data to an external service.
The CLI writes full comment results to a local JSON file automatically after fetching them, without any explicit consent, opt-in flag, redaction, or retention control. Because comment data can include user-generated content and potentially identifying information, this creates a privacy and data-handling risk if the host machine is shared, monitored, or the output directory is later exfiltrated.
The file's natural-language strings, including comments and runtime messages such as error and success output, are entirely hard-coded in Chinese. This enforces a specific language experience without offering the user any locale selection or documenting that the skill is intentionally region/language-specific.
The code reads GUAIKEI_API_TOKEN from the environment and passes it, along with the user-supplied Douyin URL and limit, into post.createPostTask and post.getPostTask, which are network-oriented API calls by naming and usage. Although the skill's purpose implies remote fetching, there is no explicit disclosure in this file that user input and credentials are sent to an external service.
The CLI persists the full fetched results to a local JSON file via log.taskWrite without obtaining user consent or clearly documenting that scraped Douyin data will be stored on disk. Because the results may contain creator/content metadata and the filename is derived from user input, this creates an unnecessary data-retention surface and can expose sensitive research data to other local users, backups, or later compromise.
The skill silently writes fetched results to a local file after completing the task, but there is no user-facing warning or confirmation that disk persistence will occur. Silent persistence is risky in an analysis-oriented skill because users may assume results are ephemeral, while the saved file can retain potentially sensitive competitive-intelligence or comment data beyond the session.
The file contains multiple user-visible error strings in Chinese only, including authentication and network failures. This enforces a specific language/locale for end-user communication without offering a language choice or documenting a justified locale restriction.
This JavaScript file contains natural-language comments and runtime messages entirely in Chinese, including the warning and status output shown to users. Under the policy, forcing a specific language without user opt-in or documented justification is a locale-policy violation.
This JavaScript file contains natural-language comments and user-visible error/output strings exclusively in Chinese, including validation errors and formatted result messages. Because the skill does not indicate that it is region-specific or offer any language/locale opt-in, it appears to enforce a specific language by default, which matches the policy violation criteria.
This manifest-style JSON file contains user-facing title and description strings entirely in Chinese, including parameter descriptions. Because the file does not indicate that the skill is region-specific or provide an opt-in or alternative language, it can violate the policy against forcing a specific language without user choice.
No suspicious patterns detected.