T09 · Insecure Skill Coding Practices
- Location
SKILL.md:134- Finding
Potential Disclosure of Sensitive User Context Through Git
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:134, 169–171
Vulnerability Type: Sensitive information exposure through insecure configuration guidance
Risk Level: MediumVulnerable Code Snippet
text CURRENTLY TRACKING THIS WEEK [Specific story / company / topic the user flagged]text 2. Add a new routine with a cron schedule (e.g. "0 7 * * *" for 7 AM daily) 3. Set the prompt field to the master prompt above 4. Commit and push — Claude Code will run it on schedule.Technical Analysis
The skill generates a master prompt containing user-specific information, potentially including the user's role, preferred sources, exclusions, business interests, and companies, deals, products, or regulatory developments currently being tracked.
The setup guide directs the user to place this generated prompt in
.claude/routines.json, then commit and push it. It does not instruct the user to inspect the prompt for sensitive information, confirm that the target repository is private, or store confidential values outside version control.Git commits retain historical content even after a later working-tree deletion. Consequently, following these instructions in a public or broadly shared repository can persistently expose the generated profile and business context. This is not covert exfiltration: exploitation depends on the user following the documented setup guidance and pushing to a repository accessible to unauthorized parties.
Attack Path
- A user answers the interview with personal or confidential business context.
- The skill incorporates those answers into the generated master prompt, including current tracking priorities.
- The user stores the prompt in
.claude/routines.jsonas instructed. - The user commits and pushes the file without redacting sensitive content or checking repository visibility.
- An unauthorized party with access to the public or shared repository reads the committed prompt or retrieves it from ...[truncated 726 chars]
- Remediation
View remediation
Remediation Suggestions
- Replace the unconditional “Commit and push” instruction with a warning to review the generated prompt for confidential or identifying information before storing it.
- Require users to verify that the repository is private and that access is limited to intended recipients before pushing.
- Recommend keeping personalized prompts in an ignored local configuration file rather than a tracked file.
- Where supported, store sensitive prompt sections in an approved secret manager or inject them through protected environment variables.
- Provide a sanitized routine template containing placeholders while keeping user-specific values outside version control.
- Add
.claude/routines.json, or a separate sensitive override file, to.gitignorewhen cloud synchronization through Git is unnecessary. - Warn that deleting sensitive content in a later commit does not remove it from Git history. If exposure occurs, instruct users to rewrite repository history, invalidate affected forks or caches where possible, and review repository access logs.
- Add a pre-commit review step or automated secret/sensitive-data scanning before allowing generated briefing configurations to be committed.
