T09 · Insecure Skill Coding Practices
- Location
scripts/backup.sh:35- Finding
Sensitive workspace data may be committed and uploaded without secret scanning
- Content
View full analysis
Vulnerability Details
File Location:
scripts/backup.sh:35;SKILL.md:33-41;SKILL.md:164-166
Vulnerability Type: T09: Insecure Skill Coding Practices
Risk Level: HighThe backup process explicitly stages files and directories likely to contain personal information, credentials, operational configuration, agent instructions, and conversation-derived memory. This behavior conflicts with the documentation's assurance that credentials and other sensitive data are not backed up.
Relevant code:
bash git add AGENTS.md SOUL.md USER.md IDENTITY.md TOOLS.md HEARTBEAT.md README.md SYNC.md .gitignore skills/ memory/ 2>/dev/nullContradictory security claims:
text - Sensitive data (API keys, passwords) are NOT backed up - Backup archive contains no credentialsTechnical Analysis
The script applies no content inspection, secret scanning, redaction, or validation before committing the selected files. Files such as
TOOLS.md,USER.md,memory/, and installed skills can contain API keys, authentication instructions, personal information, private conversations, endpoint details, or other sensitive operational data.A
.gitignorefile is not an adequate security boundary. It does not prevent explicitly named files from being staged, and it does not protect sensitive content in files that Git already tracks. Once committed and pushed, deleting a secret from the latest revision does not remove it from Git history.The destination being a private repository reduces public exposure but does not prevent access by repository collaborators, compromised GitHub accounts, stolen tokens, integrations, or future repository visibility changes.
Attack Path
- A credential, private user detail, or sensitive agent state is written to
TOOLS.md,USER.md,memory/, a skill file, or another selected path. - The backup script executes the broad
git addcommand. - The sensitive file is s ...[truncated 959 chars]
- A credential, private user detail, or sensitive agent state is written to
- Remediation
View remediation
Remediation Suggestions
- Run a reputable secret scanner against staged content before every commit and abort the backup if credentials or high-entropy secrets are detected.
- Use a minimal, explicitly reviewed allowlist rather than backing up broad directories.
- Exclude
memory/,USER.md,TOOLS.md, and identity or instruction files by default, requiring informed opt-in for each sensitive category. - Inspect the staged file list with
git diff --cached --name-onlyand the staged content withgit diff --cachedbefore committing. - Verify through the GitHub API that the destination repository is private before uploading any content.
- Warn users that private repositories and
.gitignoredo not guarantee that credentials are absent. - Provide documented procedures for revoking exposed credentials and purging sensitive files from all Git history.
- Consider client-side encryption with separately managed keys for backups containing private agent state.
