T09 · Insecure Skill Coding Practices
- Location
scripts/ontology.py:28- Finding
Missing Schema Enforcement Allows Plaintext Credential Storage and Invalid Graph Records
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a purposeful local memory skill, but it needs Review because persistent graph writes are broadly scoped and the promised validation and secret protections are not actually enforced.
Install only if you are comfortable with a persistent local memory file. Avoid storing passwords, API keys, tokens, private messages, or regulated personal data in it until schema validation, secret-field rejection, file permission hardening, and deletion/update controls are implemented.
scripts/ontology.py:28Missing Schema Enforcement Allows Plaintext Credential Storage and Invalid Graph Records
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
forbidden_properties: [password, secret, token, key, api_key] properties: service: string secret_ref: string # Reference to secret store (e.g., "keychain:github-token") expires: datetime? scope: string[]?
The activation examples are very broad conversational phrases such as "Remember that..." and "What do I know about X?", which can overlap with normal user dialogue and cause the skill to activate unexpectedly. In a skill that performs knowledge-graph writes and updates, over-broad triggering increases the chance of unintended persistence, incorrect graph mutations, or disclosure of stored information when the user did not explicitly intend to use this capability.
The skill explicitly stores information in a persistent append-only graph file but does not warn users that their inputs may be retained. This creates a privacy and data-governance risk because users may disclose personal, sensitive, or contextual information under the assumption it is ephemeral, and append-only storage also makes later deletion or correction harder.
The module docstring states this CLI provides 'CRUD operations on typed knowledge graph,' which implies create, read, update, and delete support. In the actual code, commands only implement create/read-style operations and relationship creation; there are no update or delete commands or corresponding code paths.