T01 · Skill Instruction Hijacking
- Location
SKILL.md:3- Finding
Forced Skill Routing Overrides Normal Agent Tool Selection
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill has a coherent purpose, but it asks users to enable persistent command capture and sends developer-session output through LLM and Redis workflows with broad local and environment access.
Review before installing. This skill is for users who intentionally want resume to track coding-session activity, call an LLM provider, and cache briefings in Redis. Use a trusted pinned resume version, inspect the shell hook before enabling it, avoid putting secrets in shell commands, prefer TLS Redis, and do not use this with sensitive repositories unless you are comfortable with the data flow.
SKILL.md:3Forced Skill Routing Overrides Normal Agent Tool Selection
SKILL.md:84Installation Procedure Adds a Persistent Shell Command-Capture Hook
resume-mcp.js:39Sensitive Session Output Is Cached to Redis Without Enforced Transport Security
SKILL.md:82Unpinned Git Dependency Is Installed Before Receiving Persistent Shell Access
The skill sends project/session context to external services via the resume tool's LLM integration and stores results in Redis, yet the description does not clearly warn users that potentially sensitive development notes may leave the local machine and be cached remotely. This creates a real confidentiality risk because source-adjacent notes, project names, and work summaries may be disclosed to third-party providers or retained in infrastructure outside the user's control.
Referenced artifact was not completely inspected
Required to run the bridge script (`resume-mcp.js`).
The skill declares environment-variable requirements and instructs the agent to run shell commands, but it does not define an explicit tool/permission scope. That makes the skill's execution boundaries unclear and increases the chance an agent will invoke broader filesystem or command capabilities than the user expects, especially since the skill searches the home directory and launches external programs.
The skill searches broad locations under the user's home directory to discover projects, but the user-facing description does not clearly disclose that behavior. Hidden or under-disclosed directory enumeration can expose sensitive project names and metadata and violates the principle of informed consent for filesystem access.
The skill launches an external binary while passing through the full parent environment (env: { ...process.env, ... }), which can expose secrets such as API keys, tokens, cloud credentials, and unrelated configuration to the child process. In the context of a session-briefing skill, this is broader capability than necessary and becomes more dangerous because the child process runs against a user-influenced working directory, increasing the blast radius if the resume binary or its dependencies behave unexpectedly.
The skill caches the full resume output in Redis, which may contain developer notes, project briefings, or other sensitive session context, without any disclosure, consent, or scoping shown in the code. This creates a confidentiality risk because sensitive content persists beyond the immediate request and may be accessible to other components, operators, or tenants depending on Redis deployment and key isolation.
The dependency uses a caret range ("^4.7.0"), which allows automatic installation of newer minor and patch releases instead of a single fixed version. That increases supply-chain risk because future upstream changes or a compromised published version could be pulled into the skill without explicit review; in a skill that accesses session context and Redis-backed data, unexpected dependency changes can affect confidentiality or availability.
"type": "module",
"main": "resume-mcp.js",
"dependencies": {
"redis": "^4.7.0"
},
"engines": {
"node": ">=18"
The script shells out to the external resume binary with cwd set from a user-provided path, which can trigger processing of repository-local data. Although subprocess use is described in the header comment, there is no runtime disclosure to the user that an external command will be executed against the specified directory.
No suspicious patterns detected.