… …
Module 3 · Part C of 3

The Always-On Agent

Module 3b ran the agent when you sent a message. Heartbeats and cron jobs can start unattended work, and an agent can delegate work to a sub-agent. Skills supply reusable instructions to a running agent. Each run still uses the agent loop and OpenShell sandbox; the session, instructions, and trigger determine what runs. You will install a skill and observe a cron-fired write.

How triggers choose context and instructions

Every mechanism on this page is described by the same three knobs:

The table shows the course configuration. Use the same three fields to classify other trigger types; OpenClaw also exposes additional session modes.

NameSessionDirective lives inTrigger
Skill (run below) reuses the caller's workspace/skills/<name>/SKILL.md explicit skill request in this exercise; automatic selection is a separate check
Heartbeat (concept only) main session here HEARTBEAT.md gateway timer, ~30 min by default
Cron (run below) isolated here; fresh per firepayload.message in the scheduled job one-shot scheduled time in this exercise
Sub-agent (concept only) fresh, parent holds the handletask instructions supplied by the parentparent agent decides mid-turn
OpenClaw cron can bind a job to the main, isolated, current, or a named session. This course uses isolated cron runs so each demonstration starts clean. You run the skill and the cron job on this page. Heartbeat and sub-agent dispatch are covered here only as table entries; no cell on this page fires them, so do not wait for one.

Step 1 · Read a skill and its runbook

Install a practice directory containing SKILL.md with name/description frontmatter and a bundled runbook. Readback verifies both files. Then a fresh conversation explicitly reads the skill and retrieves a reference from the runbook. Inspect its tool events and proposed action before judging whether it followed the instructions. This tests explicit skill use; automatic selection requires a separate discovery test.

Same runtime as Kickstart. You are driving the same OpenClaw agent you connected on the Kickstart page.

Step 2 · Inspect your running agent

Scheduled jobs live on the gateway rather than behind an HTTP REST route, so the same WebSocket connection the Control UI uses is also where you list and manage them through the cron methods cron.list cron.add and cron.remove. A cron job lets an always-on agent act with no human in the loop because scheduled work fires on its own timer. The course runtime creates an isolated session for this demonstration. OpenClaw can instead bind scheduled work to another supported session mode when continuity is more important than isolation.

The cell installs one uniquely named job and waits up to three minutes for a successful scheduled run. The one-shot job requests automatic deletion after its run, which also limits work if the page closes. The cell verifies a new file reference and removes its owned job, including on failure or Stop. Keep the page open until cleanup finishes. If cleanup fails, retain the logged job ID and use the removal cell. The evidence file remains for inspection.

A successful run history entry and matching new file establish that the schedule triggered the write without a new chat message at firing time.

Cron jobs run unattended. A scheduled directive that asks the agent to "send the daily report" will fire whether you are watching or not. The course selects an isolated session for each fire, so earlier message history is not automatically carried forward. Shared files can still influence a later run. Other cron configurations can retain or bind session context. Module 4a compares the live filesystem and network policy with command evidence; the configured enforcement mechanisms determine which operations are permitted.

Where to take this

Public Hermes repository exposes the same broad capability categories: reusable skills, persistent memory, scheduled work, and a messaging gateway. Its implementation and defaults differ from OpenClaw, so compare the security boundary and session behavior rather than assuming that matching feature names imply matching risk controls.

Any harness that can write reusable instructions, schedule work, and accept remote messages can persist a compromised directive beyond one conversation. Module 4 separates those application controls from the sandbox controls that bound filesystem, process, and network access.

Hermes gates its messaging surface. Its current security guide documents pairing codes and platform or global user allowlists, with default: deny when no allow rule matches. Those application controls decide who may talk to the agent. An operating-system sandbox separately bounds what its tools can reach.

These references describe different ways to preserve reusable code, execution state, or instructions:

References

Comprehensive list at Going Further · References.

Try it · trigger a skill in conversation

Copy the installed SKILL.md path from Step 1 and ask the agent to read it for a new practice incident. Compare the proposal with the runbook and inspect its tool events. To test automatic selection separately, omit the path and check whether the agent reads the skill.

That is the same machinery a heartbeat or a cron fire would use, only driven by your own message instead of by a timer.

← Module 3b: OpenClaw