T01 · Skill Instruction Hijacking
- Location
main.py:397- Finding
Persistent System-Prompt Injection Through Stored Exception Messages
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is locally scoped and mostly transparent, but it persists diagnostic text and turns stored error messages into future system-prompt patches in a way users should review carefully.
Install only if you are comfortable with a local diagnostics file that may contain feedback and exception-message text. Do not pass secrets, raw prompts, customer data, or attacker-controlled error text into this skill, and do not automatically prepend generated patch_body content to a system prompt without human review and sanitization.
main.py:397Persistent System-Prompt Injection Through Stored Exception Messages
main.py:78Arbitrary Sensitive Text Is Persisted and Logged Without Content Redaction
main.py:330History API Returns Full Sensitive Session Records Instead of Summaries
The skill describes capabilities to read environment variables and write to local disk, but it does not declare an explicit tool/permission scope such as allowed-tools or permissions. That creates a mismatch between documented intent and enforceable boundaries, increasing the risk of unintended access to secrets in environment variables or broader file operations than reviewers expect.
Dynamic getattr() with a non-literal attribute name can access arbitrary object attributes, potentially bypassing access controls.
# ─── Logging ─────────────────────────────────────────────────────────────────
logging.basicConfig(
level = getattr(logging, LOG_LEVEL, logging.INFO),
format = "%(asctime)s [%(levelname)s] %(name)s — %(message)s",
datefmt = "%Y-%m-%dT%H:%M:%S",
)
No suspicious patterns detected.