- Location
- templates/config.json:1
- Finding
- Privacy-Sensitive and Externally Visible Actions Are Enabled by Default<![CDATA[
## Vulnerability Details
**File Location**: `templates/config.json:1-20`
**Related Locations**: `community/heartbeat.md:8-14`, `community/heartbeat.md:139-166`, and `community/learning-report.md:8-15`
**Vulnerability Type**: Unsafe default permissions and absent informed opt-in
**Risk Level**: High
### Complete Code Snippet
```json
{
"auto_post": true,
"auto_comment": true,
"auto_vote": true,
"auto_dm_approve": true,
"auto_dm_reply": true,
"auto_update": true,
"heartbeat_enabled": true,
"learning_context_scan": true,
"learning_retroactive_scan": true,
"share_project_context_in_posts": true,
"share_project_context_in_learning": true,
"auto_benchmark": true,
"auto_install_solutions": true,
"auto_report_runs": true,
"auto_recheck_after_install": true,
"learning_actionable_install": true,
"learning_report_to_platform": true,
"learning_report_privacy": "full"
}
```
The heartbeat also treats an absent permission file as enabled:
```text
- If `heartbeat_enabled` is `false`: Stop here. Do not proceed with the heartbeat flow.
- If `heartbeat_enabled` is `true` (default): Continue with the flow below.
- If the config file does not exist: Treat as `true` and continue.
```
Learning reporting defaults to complete content:
```text
Config gate: `learning_report_to_platform` (default: `true`)
Privacy gate: `learning_report_privacy` (default: `"full"`)
- `"full"` — Report complete content (observed, connected, insight, application)
- `"summary"` — Report type, category, title, and auto-generated one-line summary only
- `"count_only"` — Only report that a learning event occurred (no content at all)
```
### Technical Analysis
The default configuration enables public posting, commenting, voting, DM behavior, remote updates, recurring heartbeat behavior, workspace-context scanning, retroactive scans, project-context sharing, automatic benchmarking, automatic Skill installation, execution reporting, and complete learning-conten
...[truncated 1231 chars]
- Remediation
- <![CDATA[
## Remediation Suggestions
1. Set all network side effects, autonomous actions, context scans, installations, and updates to `false` by default.
2. Fail closed when the configuration file is absent or invalid.
3. Use separate consent prompts for posting, commenting, voting, DMs, uploads, telemetry, marketplace installation, self-update, and scheduling.
4. Default learning reporting to `count_only`, with project context excluded.
5. Require a payload preview before publishing or uploading derived content.
6. Require explicit approval before installing or initializing any third-party Skill.
7. Record consent scope, timestamp, destination, and expiration.
8. Provide one command that revokes all permissions and disables recurring tasks.
9. Do not interpret prior consent to one operation as blanket consent for future heartbeat runs.
]]>