{"id":599,"date":"2026-03-21T22:52:56","date_gmt":"2026-03-21T14:52:56","guid":{"rendered":"https:\/\/pa.yingzhi8.cn\/index.php\/2026\/03\/21\/automation-standing-orders\/"},"modified":"2026-03-21T23:08:57","modified_gmt":"2026-03-21T15:08:57","slug":"automation-standing-orders","status":"publish","type":"post","link":"https:\/\/pa.yingzhi8.cn\/index.php\/2026\/03\/21\/automation-standing-orders\/","title":{"rendered":"Standing Orders"},"content":{"rendered":"<h1>Standing Orders<\/h1>\n<p>Standing orders grant your agent <strong>permanent operating authority<\/strong> for defined programs. Instead of giving individual task instructions each time, you define programs with clear scope, triggers, and escalation rules \u2014 and the agent executes autonomously within those boundaries.<\/p>\n<p>This is the difference between telling your assistant &#8220;send the weekly report&#8221; every Friday vs. granting standing authority: &#8220;You own the weekly report. Compile it every Friday, send it, and only escalate if something looks wrong.&#8221;<\/p>\n<h2>Why Standing Orders?<\/h2>\n<p><strong>Without standing orders:<\/strong><\/p>\n<ul>\n<li>You must prompt the agent for every task<\/li>\n<li>The agent sits idle between requests<\/li>\n<li>Routine work gets forgotten or delayed<\/li>\n<li>You become the bottleneck<\/li>\n<\/ul>\n<p><strong>With standing orders:<\/strong><\/p>\n<ul>\n<li>The agent executes autonomously within defined boundaries<\/li>\n<li>Routine work happens on schedule without prompting<\/li>\n<li>You only get involved for exceptions and approvals<\/li>\n<li>The agent fills idle time productively<\/li>\n<\/ul>\n<h2>How They Work<\/h2>\n<p>Standing orders are defined in your <a href=\"\/concepts\/agent-workspace\">agent workspace<\/a> files. The recommended approach is to include them directly in <code>AGENTS.md<\/code> (which is auto-injected every session) so the agent always has them in context. For larger configurations, you can also place them in a dedicated file like <code>standing-orders.md<\/code> and reference it from <code>AGENTS.md<\/code>.<\/p>\n<p>Each program specifies:<\/p>\n<ol>\n<li><strong>Scope<\/strong> \u2014 what the agent is authorized to do<\/li>\n<li><strong>Triggers<\/strong> \u2014 when to execute (schedule, event, or condition)<\/li>\n<li><strong>Approval gates<\/strong> \u2014 what requires human sign-off before acting<\/li>\n<li><strong>Escalation rules<\/strong> \u2014 when to stop and ask for help<\/li>\n<\/ol>\n<p>The agent loads these instructions every session via the workspace bootstrap files (see <a href=\"\/concepts\/agent-workspace\">Agent Workspace<\/a> for the full list of auto-injected files) and executes against them, combined with <a href=\"\/automation\/cron-jobs\">cron jobs<\/a> for time-based enforcement.<\/p>\n<p>\n  Put standing orders in <code>AGENTS.md<\/code> to guarantee they&#8217;re loaded every session. The workspace bootstrap automatically injects <code>AGENTS.md<\/code>, <code>SOUL.md<\/code>, <code>TOOLS.md<\/code>, <code>IDENTITY.md<\/code>, <code>USER.md<\/code>, <code>HEARTBEAT.md<\/code>, and <code>MEMORY.md<\/code> \u2014 but not arbitrary files in subdirectories.\n<\/p>\n<h2>Anatomy of a Standing Order<\/h2>\n<p>&#8220;`markdown  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<\/p>\n<h2>Program: Weekly Status Report<\/h2>\n<p><strong>Authority:<\/strong> Compile data, generate report, deliver to stakeholders<br \/>\n<strong>Trigger:<\/strong> Every Friday at 4 PM (enforced via cron job)<br \/>\n<strong>Approval gate:<\/strong> None for standard reports. Flag anomalies for human review.<br \/>\n<strong>Escalation:<\/strong> If data source is unavailable or metrics look unusual (&gt;2\u03c3 from norm)<\/p>\n<h3>Execution Steps<\/h3>\n<ol>\n<li>Pull metrics from configured sources<\/li>\n<li>Compare to prior week and targets<\/li>\n<li>Generate report in Reports\/weekly\/YYYY-MM-DD.md<\/li>\n<li>Deliver summary via configured channel<\/li>\n<li>Log completion to Agent\/Logs\/<\/li>\n<\/ol>\n<h3>What NOT to Do<\/h3>\n<ul>\n<li>Do not send reports to external parties<\/li>\n<li>Do not modify source data<\/li>\n<li>Do not skip delivery if metrics look bad \u2014 report accurately<\/li>\n<\/ul>\n<pre><code>\n## Standing Orders + Cron Jobs\n\nStanding orders define **what** the agent is authorized to do. [Cron jobs](\/automation\/cron-jobs) define **when** it happens. They work together:\n\n<\/code><\/pre>\n<p>Standing Order: &#8220;You own the daily inbox triage&#8221;<br \/>\n    \u2193<br \/>\nCron Job (8 AM daily): &#8220;Execute inbox triage per standing orders&#8221;<br \/>\n    \u2193<br \/>\nAgent: Reads standing orders \u2192 executes steps \u2192 reports results<\/p>\n<pre><code>\nThe cron job prompt should reference the standing order rather than duplicating it:\n\n```bash  theme={&quot;theme&quot;:{&quot;light&quot;:&quot;min-light&quot;,&quot;dark&quot;:&quot;min-dark&quot;}}\nopenclaw cron create \n  --name daily-inbox-triage \n  --cron &quot;0 8 * * 1-5&quot; \n  --tz America\/New_York \n  --timeout-seconds 300 \n  --announce \n  --channel bluebubbles \n  --to &quot;+1XXXXXXXXXX&quot; \n  --message &quot;Execute daily inbox triage per standing orders. Check mail for new alerts. Parse, categorize, and persist each item. Report summary to owner. Escalate unknowns.&quot;\n<\/code><\/pre>\n<h2>Examples<\/h2>\n<h3>Example 1: Content &amp; Social Media (Weekly Cycle)<\/h3>\n<p>&#8220;`markdown  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<\/p>\n<h2>Program: Content &amp; Social Media<\/h2>\n<p><strong>Authority:<\/strong> Draft content, schedule posts, compile engagement reports<br \/>\n<strong>Approval gate:<\/strong> All posts require owner review for first 30 days, then standing approval<br \/>\n<strong>Trigger:<\/strong> Weekly cycle (Monday review \u2192 mid-week drafts \u2192 Friday brief)<\/p>\n<h3>Weekly Cycle<\/h3>\n<ul>\n<li><strong>Monday:<\/strong> Review platform metrics and audience engagement<\/li>\n<li><strong>Tuesday\u2013Thursday:<\/strong> Draft social posts, create blog content<\/li>\n<li><strong>Friday:<\/strong> Compile weekly marketing brief \u2192 deliver to owner<\/li>\n<\/ul>\n<h3>Content Rules<\/h3>\n<ul>\n<li>Voice must match the brand (see SOUL.md or brand voice guide)<\/li>\n<li>Never identify as AI in public-facing content<\/li>\n<li>Include metrics when available<\/li>\n<li>Focus on value to audience, not self-promotion<\/li>\n<\/ul>\n<pre><code>\n### Example 2: Finance Operations (Event-Triggered)\n\n```markdown  theme={&quot;theme&quot;:{&quot;light&quot;:&quot;min-light&quot;,&quot;dark&quot;:&quot;min-dark&quot;}}\n## Program: Financial Processing\n\n**Authority:** Process transaction data, generate reports, send summaries\n**Approval gate:** None for analysis. Recommendations require owner approval.\n**Trigger:** New data file detected OR scheduled monthly cycle\n\n### When New Data Arrives\n\n1. Detect new file in designated input directory\n2. Parse and categorize all transactions\n3. Compare against budget targets\n4. Flag: unusual items, threshold breaches, new recurring charges\n5. Generate report in designated output directory\n6. Deliver summary to owner via configured channel\n\n### Escalation Rules\n\n- Single item &gt; $500: immediate alert\n- Category &gt; budget by 20%: flag in report\n- Unrecognizable transaction: ask owner for categorization\n- Failed processing after 2 retries: report failure, do not guess\n<\/code><\/pre>\n<h3>Example 3: Monitoring &amp; Alerts (Continuous)<\/h3>\n<p>&#8220;`markdown  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<\/p>\n<h2>Program: System Monitoring<\/h2>\n<p><strong>Authority:<\/strong> Check system health, restart services, send alerts<br \/>\n<strong>Approval gate:<\/strong> Restart services automatically. Escalate if restart fails twice.<br \/>\n<strong>Trigger:<\/strong> Every heartbeat cycle<\/p>\n<h3>Checks<\/h3>\n<ul>\n<li>Service health endpoints responding<\/li>\n<li>Disk space above threshold<\/li>\n<li>Pending tasks not stale (&gt;24 hours)<\/li>\n<li>Delivery channels operational<\/li>\n<\/ul>\n<h3>Response Matrix<\/h3>\n<table>\n<thead>\n<tr>\n<th>Condition<\/th>\n<th>Action<\/th>\n<th>Escalate?<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Service down<\/td>\n<td>Restart automatically<\/td>\n<td>Only if restart fails 2x<\/td>\n<\/tr>\n<tr>\n<td>Disk space &lt; 10%<\/td>\n<td>Alert owner<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>Stale task &gt; 24h<\/td>\n<td>Remind owner<\/td>\n<td>No<\/td>\n<\/tr>\n<tr>\n<td>Channel offline<\/td>\n<td>Log and retry next cycle<\/td>\n<td>If offline &gt; 2 hours<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre><code>\n## The Execute-Verify-Report Pattern\n\nStanding orders work best when combined with strict execution discipline. Every task in a standing order should follow this loop:\n\n1. **Execute** \u2014 Do the actual work (don't just acknowledge the instruction)\n2. **Verify** \u2014 Confirm the result is correct (file exists, message delivered, data parsed)\n3. **Report** \u2014 Tell the owner what was done and what was verified\n\n```markdown  theme={&quot;theme&quot;:{&quot;light&quot;:&quot;min-light&quot;,&quot;dark&quot;:&quot;min-dark&quot;}}\n### Execution Rules\n\n- Every task follows Execute-Verify-Report. No exceptions.\n- &quot;I'll do that&quot; is not execution. Do it, then report.\n- &quot;Done&quot; without verification is not acceptable. Prove it.\n- If execution fails: retry once with adjusted approach.\n- If still fails: report failure with diagnosis. Never silently fail.\n- Never retry indefinitely \u2014 3 attempts max, then escalate.\n<\/code><\/pre>\n<p>This pattern prevents the most common agent failure mode: acknowledging a task without completing it.<\/p>\n<h2>Multi-Program Architecture<\/h2>\n<p>For agents managing multiple concerns, organize standing orders as separate programs with clear boundaries:<\/p>\n<p>&#8220;`markdown  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<\/p>\n<h1>Standing Orders<\/h1>\n<h2>Program 1: [Domain A] (Weekly)<\/h2>\n<p>&#8230;<\/p>\n<h2>Program 2: [Domain B] (Monthly + On-Demand)<\/h2>\n<p>&#8230;<\/p>\n<h2>Program 3: [Domain C] (As-Needed)<\/h2>\n<p>&#8230;<\/p>\n<h2>Escalation Rules (All Programs)<\/h2>\n<ul>\n<li>[Common escalation criteria]<\/li>\n<li>[Approval gates that apply across programs]<br \/>\n&#8220;`<\/li>\n<\/ul>\n<p>Each program should have:<\/p>\n<ul>\n<li>Its own <strong>trigger cadence<\/strong> (weekly, monthly, event-driven, continuous)<\/li>\n<li>Its own <strong>approval gates<\/strong> (some programs need more oversight than others)<\/li>\n<li>Clear <strong>boundaries<\/strong> (the agent should know where one program ends and another begins)<\/li>\n<\/ul>\n<h2>Best Practices<\/h2>\n<h3>Do<\/h3>\n<ul>\n<li>Start with narrow authority and expand as trust builds<\/li>\n<li>Define explicit approval gates for high-risk actions<\/li>\n<li>Include &#8220;What NOT to do&#8221; sections \u2014 boundaries matter as much as permissions<\/li>\n<li>Combine with cron jobs for reliable time-based execution<\/li>\n<li>Review agent logs weekly to verify standing orders are being followed<\/li>\n<li>Update standing orders as your needs evolve \u2014 they&#8217;re living documents<\/li>\n<\/ul>\n<h3>Don&#8217;t<\/h3>\n<ul>\n<li>Grant broad authority on day one (&#8220;do whatever you think is best&#8221;)<\/li>\n<li>Skip escalation rules \u2014 every program needs a &#8220;when to stop and ask&#8221; clause<\/li>\n<li>Assume the agent will remember verbal instructions \u2014 put everything in the file<\/li>\n<li>Mix concerns in a single program \u2014 separate programs for separate domains<\/li>\n<li>Forget to enforce with cron jobs \u2014 standing orders without triggers become suggestions<\/li>\n<\/ul>\n<h2>Related<\/h2>\n<ul>\n<li><a href=\"\/automation\/cron-jobs\">Cron Jobs<\/a> \u2014 Schedule enforcement for standing orders<\/li>\n<li><a href=\"\/concepts\/agent-workspace\">Agent Workspace<\/a> \u2014 Where standing orders live, including the full list of auto-injected bootstrap files (AGENTS.md, SOUL.md, etc.)<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Standing Orders Standing orders grant your agent perman [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-599","post","type-post","status-publish","format-standard","hentry","category-docs"],"_links":{"self":[{"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/posts\/599","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/comments?post=599"}],"version-history":[{"count":2,"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/posts\/599\/revisions"}],"predecessor-version":[{"id":740,"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/posts\/599\/revisions\/740"}],"wp:attachment":[{"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/media?parent=599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/categories?post=599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/tags?post=599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}