T09 · Insecure Skill Coding Practices
- Location
scripts/prompt_cache.py:27- Finding
Plaintext Retention of Prompts and Child-Associated Content
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a plausible local prompt cache, but it under-discloses plaintext retention of prompts, child names, and generated stories in a database.
Review this skill before installing in applications that handle private prompts, children's names, or confidential generated content. Use it only with a clearly scoped database, documented retained fields, access controls, encryption or equivalent protection where appropriate, and retention/deletion limits. The prompt_text field should either be removed or explicitly documented with user/operator consent.
scripts/prompt_cache.py:27Plaintext Retention of Prompts and Child-Associated Content
scripts/prompt_cache.py:28Silent Suppression of All Cache Write Failures
The code does implement the core idea of normalized prompt hashing plus database-backed cache get/set behavior, so it is related to the declared purpose. However, the description overstates the capability and generality. This chunk only caches story_json records and is tailored to prompt, child_name, and language; it does not show generic caching for both LLM and TTS calls, nor any audio/result replay handling. It also does not implement fuzzy matching, despite the module docstring mentioning optional fuzzy matching. The claim about working with any database backend is not verifiable from this chunk because it depends on an abstract database module. Overall, the primary purpose is adjacent but materially narrower and more specialized than declared.
The skill encourages caching raw prompts and identifiers such as child_name and language, but does not warn that this can store sensitive user content and personal data at rest. In context, caching LLM/TTS inputs can retain secrets, private conversations, or children's identifiers longer than users expect, increasing privacy and compliance risk if the database is accessed, logged, backed up, or shared.
The documentation explicitly states a specific normalization process before hashing, but the skill file provides no code here and points to a very small implementation file. This raises a possible intent-code divergence if the actual implementation hashes raw inputs or performs different normalization than documented.
No suspicious patterns detected.