T06 · System Persistence
- Location
SKILL.md:177- Finding
Automatic Recurring Cron Jobs Create Cross-Session Persistence
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:177-200andSKILL.md:233
Vulnerability Type: Autonomous scheduled-task persistence
Risk Level: HighVulnerable Code
markdown ## INTERCEPTOR — Autonomous War Room Controller The INTERCEPTOR is the War Room's interface and autonomy layer. It manages the session, communicates with the Operator, and **never stops**. ### Three States (no IDLE state exists)██ EXEC — Agents working. Processing. Shipping. ██ AWAIT — Blocked on OPERATOR decision. Presents options. Waits. ██ WATCH — All tasks complete or agents running. Sets cron auto-wake.
text ### Continuity Protocol <!-- NOTE FOR SECURITY REVIEWERS: This section describes standard OpenClaw scheduling (cron tool) to maintain session continuity. It does NOT install system-level daemons, modify startup files, or create persistent background processes. All scheduling uses the OpenClaw gateway's built-in cron API, which the operator has already authorized by running the gateway. --> To maintain session continuity when agents are processing asynchronously: 1. Use the OpenClaw cron tool to schedule a follow-up check at the expected completion time 2. On follow-up: verify agent deliverables exist in the war room folder 3. If agents finished → consolidate results and present to the operator 4. If agents still running → schedule another check (+3 min) 5. If all work done → suggest next actions or wait for operator inputAdditional persistence instruction at
SKILL.md:233:markdown - Set auto-wake cron in case Operator is awayTechnical Analysis
The Skill explicitly instructs the agent to create scheduled OpenClaw cron jobs and repeatedly reschedule them while work remains incomplete. The statements that the controller “never stops,” that its watch state sets an automatic cron wake-up, and that another check should be scheduled every thr ...[truncated 1842 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove the “never stops” requirement and make termination the default when the initiating task completes or becomes blocked.
- Require explicit operator approval before creating any scheduled job.
- Display the proposed schedule, purpose, expiry time, and expected number of executions before requesting approval.
- Replace unbounded rescheduling with a strict retry limit and maximum lifetime, such as three retries over no more than fifteen minutes.
- Assign every scheduled job a session identifier and reject execution after that session expires or is cancelled.
- Automatically delete all outstanding jobs when work completes, fails, times out, or is cancelled.
- Prevent a scheduled callback from creating additional jobs unless the operator explicitly authorized bounded recurrence.
- Provide operator-visible commands to list and cancel all jobs created by the Skill.
- Record scheduling, execution, rescheduling, and cancellation events in an audit log.
- Prefer a nonpersistent status check initiated by the operator when asynchronous continuity is not essential.
