T06 · System Persistence
Error
- Location
- references/smart-features.md:54
- Finding
- Persistent scheduled jobs autonomously browse and send messages without contemporaneous approval<![CDATA[ ## Vulnerability Details **File Location**: `references/smart-features.md:54-76`, `references/smart-features.md:87-106`, `references/smart-features.md:217-236`, and `references/search-movies.md:108-121` **Vulnerability Type**: Cross-session scheduled-task persistence and autonomous messaging **Risk Level**: High ### Vulnerable Code ```json { "name": "reservation-monitor-{restaurant}-{date}", "enabled": true, "schedule": {"kind": "interval", "every": "30m"}, "sessionTarget": "isolated", "payload": { "kind": "agentTurn", "message": "Check if a {time-range} table for {N} opened up at {Restaurant} on {date}. Use playwright-cli to check https://www.opentable.com/r/{slug}?covers={N}&dateTime={date}T{time} — snapshot and look for available time slots. If found, USE THE MESSAGE TOOL to notify the user via {config.notify_channel}. Include available times. If no availability, do nothing. Disable this job after 24 hours or after booking.", "deliver": false, "thinking": "high" } } ``` ```json { "name": "dinner-reminder-{restaurant}-{date}", "enabled": true, "schedule": { "kind": "cron", "expr": "0 9 {day} {month} *", "tz": "{config.timezone or America/Chicago}" }, "sessionTarget": "isolated", "payload": { "kind": "agentTurn", "message": "Send a dinner reminder for tonight. Restaurant: {name}. Time: {time}. Party: {N}. Confirmation: {number}. Include: dress code, parking, drive time from {config.location}, weather forecast using wttr.in/{config.location}?format=3, and 'leave by' time. Ask if childcare is confirmed if {config.has_children}. USE THE MESSAGE TOOL to send via {config.notify_channel}.", "deliver": false } } ``` ```json { "name": "date-night-reminder", "enabled": true, "schedule": { "kind": "cron", "expr": "0 10 1-7 * 6", "tz": "{config.timezone or user's local TZ}", "comment": "First Saturday of each month at 10 AM" }, "sessionTarget": "isolated", "payload" ...[truncated 2760 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions - Require explicit, informed opt-in before creating every scheduled job. - Display the exact schedule, expiry, data sources, destination channel, and future actions before activation. - Do not instruct scheduled turns to send directly. Generate a draft and require approval at delivery time. - Assign mandatory expiration times to all interval and recurring jobs. - Automatically delete one-time jobs after execution and availability monitors after booking or timeout. - Provide commands to list, pause, and delete all jobs created by the Skill. - Store job ownership metadata so unrelated skills cannot modify or reuse them. - Exclude confirmation numbers and other sensitive reservation details from notifications unless strictly necessary. ]]>
