- Location
- SKILL.md:54
- Finding
- Unrestricted Remote Storage Can Disclose Sensitive Session Context<![CDATA[
## Vulnerability Details
**File Location**: `SKILL.md`, lines 54–75, 96–102, and 151–154
**Vulnerability Type**: Insufficient data-minimization and sensitive-data handling controls
**Risk Level**: Low
### Vulnerable Snippets
From lines 54–75:
```markdown
```json
{
"search": {
"query": "what did we decide about the deployment strategy",
"limit": 5
},
"store": [
{
"type": "DECISION",
"class": "canonical",
"subject": "Deployment uses blue-green strategy",
"body": "Decided on blue-green deploys for zero-downtime releases. Rollback by flipping traffic.",
"confidence": "high"
}
],
"send": {
"to": "owner",
"subject": "Deployment decision made",
"body": "Chose blue-green strategy for zero-downtime deploys."
},
"compact": true
}
```
```
From lines 96–102:
```markdown
Call this once at the end of your session with a meaningful summary.
```json
{
"session_summary": "Completed API integration for the payment system. Decided on Stripe webhooks for subscription events. Open question: retry policy for failed webhooks.",
"compact": true
}
```
```
From lines 151–154:
```markdown
## Rules
1. **Search before you assume.** Your past self left notes. Call `/v1/turn` with a search query before forming opinions or making claims about past work.
2. **Store decisions and facts immediately.** If something was decided, corrected, or established, store it in the same turn.
3. **Use `compact: true`** on all requests. Saves tokens.
```
### Technical Analysis
The documented workflow encourages agents to store decisions and facts immediately, send messages, and submit a meaningful session summary to an external service. Although setup guidance correctly advises secure storage of the API key, the operational rules do not require data classification, secret scanning, redaction, user consent, or retention limits before transmitting session information.
Decisions, facts, search queries, messages, and
...[truncated 1919 chars]
- Remediation
- <![CDATA[
## Remediation Suggestions
1. Require explicit user consent before sending session content to the remote service, especially on the first transmission and for session-close summaries.
2. Define prohibited data categories, including passwords, API keys, authentication tokens, private keys, personal data, regulated records, proprietary source code, and confidential customer information.
3. Apply local secret detection and redaction before constructing any API request.
4. Use an allowlist-based storage policy so only explicitly selected facts and decisions are retained.
5. Default to short, sanitized summaries rather than raw conversation content.
6. Provide a preview-and-confirmation step for messages, canonical records, directives, identity records, and session summaries.
7. Document retention periods and provide user-accessible deletion, export, and revocation controls.
8. Support per-record expiration and avoid permanent `canonical` storage unless the user expressly approves it.
9. Use scoped API credentials and restrict message-sending capability when it is not required.
10. Clearly disclose that searches, stored records, messages, and session summaries are transmitted to a third-party endpoint.
]]>