T09 · Insecure Skill Coding Practices
- Location
scripts/trustee_api.py:503- Finding
Automatic Payment Without Transaction-Specific User Approval
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This video-generation skill is mostly purpose-aligned, but it can automatically spend Giggle account credits without a transaction-specific user confirmation.
Review before installing. Only use this skill if you are comfortable giving it a Giggle API key and allowing the workflow to create projects and automatically pay for them with the account's available credits. Prefer a version that requires explicit approval with price and limits before every payment, and consider pinning dependencies.
scripts/trustee_api.py:503Automatic Payment Without Transaction-Specific User Approval
scripts/requirements.txt:1Unbounded Third-Party Dependency Version
The workflow explicitly states it may 'auto-pay' when pending payment is detected, but the install/review warning mentions only network use and omits billing risk. This is dangerous because users may authorize the skill expecting API usage only, while the workflow can trigger real charges without a distinct, informed confirmation step.
The workflow automatically invokes the payment endpoint when it detects a pending payment state, without requiring explicit user approval at the moment of charge. In a skill whose advertised purpose is content generation, this can lead to unexpected spending and removes an important transactional safety boundary.
The skill requires environment access and performs networked API operations, but it does not declare explicit tool scope such as permissions or allowed-tools. This weakens reviewability and containment, increasing the chance the agent invokes capabilities the user did not clearly authorize.
The trigger phrases are broad enough to activate on many ordinary requests related to videos, narration, or cinematic content, even when the user may not intend to use this external paid service. Over-broad activation can route users into a workflow that sends data to a third party and may incur charges without sufficiently specific consent.
The skill manifest describes video generation and style viewing, but the code includes a payment-capable API method. That scope expansion is security-relevant because a caller can trigger billing-related actions that are not clearly disclosed by the skill's stated purpose, increasing the risk of unauthorized or surprising charges.
The workflow hard-codes language = "zh", overriding the language choice available in other commands and forcing a specific locale. This is a natural-language policy issue because the user is not offered a language choice or asked to opt in to Chinese output.
The dependency is specified as requests>=2.31.0, which allows any newer release to be installed and makes builds non-reproducible. This can unintentionally pull in a vulnerable or behavior-changing version later, increasing supply-chain risk even if no immediate exploit is present in this file.
requests>=2.31.0
Because requests is not pinned, it is impossible to verify from this manifest whether the installed version includes fixes for known advisories affecting some releases. This ambiguity creates avoidable exposure to publicly known vulnerabilities in a widely used HTTP client library.
The manifest frames the skill as a user-facing video generation and style browsing tool, but the implementation independently reads GIGGLE_API_KEY from the host environment and uses it for authenticated remote actions. Accessing host environment credentials is an infrastructure capability that is not described in the stated purpose.
No suspicious patterns detected.