T06 · System Persistence
- Location
assets/shared-memory.config.example.json:18- Finding
Recurring Private-Maintenance Schedule Is Enabled by Default and Persists After Detachment
- Content
View full analysis
Vulnerability Details
File Location:
assets/shared-memory.config.example.json:18-23; persistence behavior is documented inreferences/config-reference.md:193-196
Vulnerability Type: Persistent scheduled task enabled without a distinct schedule opt-in
Risk Level: HighVulnerable Code Snippet
json "privateMaintenance": { "enabled": true, "every": "72h", "time": "12:00", "recommended": true }The schedule lifecycle is documented as follows:
md #### `schedules.privateMaintenance` - Meaning: per-agent private long-term memory maintenance schedule - Prepared by: `attach <agent>` - Preserved after: `detach <agent>`, `unregister <agent>`This conflicts with the safety requirements in
SKILL.md:37-45:md - Keep recurring schedules disabled by default unless the user explicitly enables them Never: - silently enable recurring background schedulesTechnical Analysis
The example configuration, which represents the documented default operating model, sets the per-agent private-maintenance schedule to
enabled: true. The configuration reference states thatattach <agent>prepares this schedule and that it remains after bothdetach <agent>andunregister <agent>.Consequently, attaching an agent can establish recurring behavior without a separate, explicit user decision to enable background scheduling. Detaching or unregistering the agent does not terminate the schedule. Its lifecycle therefore extends beyond the attachment that created it and survives the initiating skill operation.
This behavior directly contradicts the Skill's stated requirement that recurring schedules remain disabled by default unless explicitly enabled by the user.
Attack Path
- A user initializes the system using the supplied default/example configuration.
- The user invokes
attach <agent>to connect an agent to shared memory. - Attachment prepares the private-maintenance schedule while `schedules.privateMaintenance.e ...[truncated 1195 chars]
- Remediation
View remediation
Remediation Suggestions
- Change the default configuration so private maintenance is disabled:
json "privateMaintenance": { "enabled": false, "every": "72h", "time": "12:00", "recommended": true }-
Require a separate, explicit user confirmation before creating or enabling any recurring task. Invoking
attach <agent>alone should not constitute schedule consent. -
During
detach <agent>andunregister <agent>, disable or remove schedules created for that attachment by default. Retain a schedule only when the user explicitly requests retention. -
Before attachment, display:
- Whether a schedule will be created.
- Whether it will be enabled.
- Its interval, execution time, and timezone.
- Its behavior after detachment and unregistration.
-
After detachment or unregistration, report every retained scheduled task prominently and provide the exact action needed to disable it.
-
Add validation that rejects enabled recurring schedules unless the configuration records an explicit user opt-in.
-
Make all documentation and examples consistent with the safety rule that recurring schedules are disabled by default.
