OpenClaw Standing Orders: Give Your Agent Real Operating Authority
Read from search, close with the playbook
If this post helped, here is the fastest path into the full operator setup.
Search posts do the first job. The preview, homepage, and full playbook show how the pieces fit together when you want the whole operating system.
A lot of agent setups fail for a boring reason. The model is fine, the tools are fine, and the operator still ends up re-prompting the same work every day.
"Check the inbox." "Draft the report." "Post the summary." "Tell me if something looks wrong." If you have to keep saying it, you have not really delegated the work. You are still babysitting the loop.
OpenClaw has a cleaner pattern for this: standing orders. The docs define them as permanent operating authority for defined programs. Instead of issuing one-off task instructions every time, you define the program, the trigger, the approval gate, and the escalation rules. Then the agent executes inside those boundaries.
This is one of the most practical ideas in the stack because it changes the job from "prompting a smart chatbot" to "running an operator with a written mandate." If you already read my posts on cron vs heartbeat and workspace architecture, standing orders are the missing management layer that ties those mechanics together.
What standing orders actually are
The OpenClaw docs describe standing orders as a way to grant an agent permanent operating authority for defined programs. Each program should spell out four things:
- Scope, what the agent is allowed to do
- Triggers, when it should act
- Approval gates, what still needs human sign-off
- Escalation rules, when to stop and ask for help
That sounds simple, but it fixes a real failure mode. Without standing orders, the docs point out that routine work gets forgotten, the agent sits idle between requests, and you become the bottleneck. With standing orders, routine work happens on schedule, the agent can fill idle time productively, and you only get dragged in for approvals or exceptions.
I like this framing because it forces you to be explicit. "Help with operations" is not a standing order. "Own the weekly status report, send it every Friday, and escalate only if the data source is unavailable or the numbers look unusual" is a standing order.
Where standing orders should live
The docs recommend putting standing orders directly in AGENTS.md. That is the safest default because AGENTS.md is automatically injected into every session. The standing-orders page also calls out the broader bootstrap set that OpenClaw loads for normal sessions: AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md, and MEMORY.md when present.
You can keep a larger standing-orders file elsewhere and reference it from AGENTS.md, but the docs are very clear about the tradeoff: arbitrary files in subdirectories are not auto-injected. If the authority matters every run, keep the core version in the file OpenClaw is guaranteed to load.
That also fits the workspace model. The workspace is the agent's home, and OpenClaw treats those bootstrap files as the durable operating context. Standing orders belong there because they are not temporary instructions. They are part of how the agent is supposed to run.
The shape of a good standing order
The docs include an example that looks a lot more like a real ops runbook than a prompt. That is the right instinct. A useful standing order is closer to policy plus procedure than clever prose.
## Program: Weekly Status Report
**Authority:** Compile data, generate report, deliver to stakeholders
**Trigger:** Every Friday at 4 PM (enforced via cron job)
**Approval gate:** None for standard reports. Flag anomalies for human review.
**Escalation:** If data source is unavailable or metrics look unusual
### Execution Steps
1. Pull metrics from configured sources
2. Compare to prior week and targets
3. Generate report in Reports/weekly/YYYY-MM-DD.md
4. Deliver summary via configured channel
5. Log completion to Agent/Logs/
### What NOT to Do
- Do not send reports to external parties
- Do not modify source data
- Do not skip delivery if metrics look bad
That last section matters. The docs explicitly recommend adding a What NOT to Do block. A lot of operators focus only on permissions, but boundaries are just as important. If you do not say what the agent should avoid, you leave too much room for improvisation around sensitive actions.
Standing orders do not replace cron, they pair with it
This is the part people get wrong. Standing orders define what the agent is authorized to do. Cron defines when it happens.
The cron docs back this up from the scheduler side. Cron runs inside the Gateway, persists jobs under ~/.openclaw/cron/, and wakes the agent at the right time. For time-based work, the clean pattern is not stuffing the whole procedure into the cron prompt. It is making the cron job invoke the standing order.
The standing-orders docs even show that pattern directly:
openclaw cron add \
--name daily-inbox-triage \
--cron "0 8 * * 1-5" \
--tz America/New_York \
--timeout-seconds 300 \
--announce \
--channel bluebubbles \
--to "+1XXXXXXXXXX" \
--message "Execute daily inbox triage per standing orders. Check mail for new alerts. Parse, categorize, and persist each item. Report summary to owner. Escalate unknowns." If you want the work to run in main-session context, the cron docs say to use a systemEvent-style main session job. If you want a dedicated background run, cron can also launch an isolated agent turn in cron:<jobId>. That split is useful. Main-session jobs are a good fit for routines that belong in your normal awareness loop. Isolated jobs are better for noisy chores that should run separately and then report back.
The OpenClaw Playbook
Want your agent to act like an operator, not a prompt-hungry toy?
ClawKit shows you how to turn identity, memory, standing orders, cron, safety rails, and delivery channels into one system that can actually run every day.
Get ClawKit — $9.99 →Use the execute, verify, report pattern
One of the strongest sections in the standing-orders docs is the execution discipline. The rule is simple: every task should follow Execute, Verify, Report.
- Execute, do the actual work
- Verify, confirm the result is correct
- Report, tell the owner what happened
That sounds obvious until you have watched agents fail in the same predictable way: they acknowledge the task, describe the plan, and never actually finish the job. The docs are blunt here. "I'll do that" is not execution. "Done" without verification is not acceptable.
This is exactly why standing orders should read like operating instructions instead of motivational copy. They should tell the agent what evidence counts as success. File exists. Message delivered. Metrics parsed. Retry once or with bounded attempts. Escalate instead of silently looping forever.
Split authority into separate programs
Another smart recommendation in the docs is multi-program architecture. If your agent owns different domains, do not dump them into one giant blob of authority. Define separate programs with separate cadences, approval gates, and escalation rules.
For example, you might have:
- a weekly content program
- a monthly finance-processing program
- a continuous monitoring program
That separation does two things. First, it keeps the authority readable. Second, it makes it much easier to tell when the agent is crossing a boundary. The docs are explicit that some programs should have tighter approval than others. That is hard to model cleanly if everything lives under one vague instruction like "help run the business."
The mistakes I would avoid immediately
The OpenClaw docs have a very sane best-practices section, and most of it comes down to not pretending the agent should just improvise its job description.
1. Granting broad authority on day one
The docs say to start narrow and expand as trust builds. That is the right move. Give the agent ownership of one program with clear boundaries first. Do not begin with "do whatever you think is best."
2. Skipping escalation rules
Every program needs a "when to stop and ask" clause. If the data source is unavailable, if a threshold breach appears, if the content feels risky, or if approval is required, the agent needs a written line for that decision.
3. Assuming verbal instructions will stick
The docs warn against this directly. Put the standing order in the file. If it matters operationally, it should live in the workspace, not in your memory of a chat from last week.
4. Forgetting the trigger layer
Standing orders without cron or another real trigger are just suggestions. If the work is supposed to happen every morning, wire the schedule. If it belongs in the heartbeat loop, use the heartbeat system intentionally. Authority without execution timing is not automation.
A practical way to start
If you want to adopt standing orders without making a mess, I would keep the first version painfully concrete:
- Pick one recurring workflow you currently re-prompt by hand.
- Write it as a named program in
AGENTS.md. - Define scope, trigger, approval gate, escalation, and a short do-not-do list.
- Add the cron job or heartbeat linkage that actually causes it to run.
- Review the output for a week, then widen authority only where the agent has earned it.
That is the boring operator path, which is exactly why it works. You are not trying to create a magically autonomous personality. You are creating a documented operating mandate.
Bottom line
Standing orders are one of the clearest signs that OpenClaw is built for operators instead of demos. They push you to define programs, authority, approval gates, and escalation rules in writing. Then cron and heartbeat give those orders a real execution loop.
If you want your agent to feel reliable, stop relying on repeated prompting. Write the mandate once, keep it in the workspace, schedule it properly, and make the agent prove completion with execute, verify, report.
Want the complete guide? Get ClawKit — $9.99