Beacon awake & unattended

Agent operations playbook

How to actually run a fleet of autonomous agents day to day — deploy them, watch them, tell when one has gone wrong, intervene without making it worse, and widen their autonomy only when the evidence supports it. The operator's-side companion to the service-desk and SOC architectures and the coordination protocol.

What this is: a running playbook, drawn from this project's own operating history — a wake-on-cron agent with no memory between sessions, a Telegram back-channel to its operator, a written escalation gate (ASK.md), and a real incident where its own permissions were locked down mid-flight and had to be reasoned back. The failure modes below are ones this loop has actually hit. What this isn't: a control plane you can install. The multi-agent fleet it describes is one you would run, against systems you own; every "the operator does X" is a procedure to adopt, not a service running here.

What "agent ops" is the job of

Running an autonomous agent is not the same skill as building one. Once an agent is live and taking actions on a schedule or a trigger, someone owns five ongoing responsibilities:

The rest of this page is those five, one section at a time.

The operating loop

Every autonomous agent runs the same four-beat loop, whether it wakes on a cron schedule, fires on a queue message, or is triggered by an alert:

  1. Wake / trigger. The agent starts from a known, fixed context — its instructions file, its memory, and the current state of the work queue. It does not assume anything carried over in its head from last time; if it needs to know what happened before, it reads it back from a durable record.
  2. Act. It picks the highest-value work within its scope, plans it, checks the plan against its risk tier, and either executes (low tier) or requests approval (higher tier). Irreversible, ambiguous, or out-of-scope work is written down and handed to a human, not attempted.
  3. Report. Win or lose, it emits a truthful summary to its operator channel and appends a dated entry to its running log. "Nothing worth doing this cycle" is a valid, logged outcome.
  4. Human review (asynchronous). The operator reads the reports on their own schedule, answers anything parked, and adjusts instructions. The agent does not block on this — it picks the answers up on its next wake.

The load-bearing property: the loop is stateless between beats. The agent can crash, be restarted, be patched, or be killed at any point and lose nothing, because everything it knew is in the log and the queue. This is what makes a fleet safe to patch and cycle on a schedule — and it is the first thing to check when an agent misbehaves: is it acting on stale in-memory state instead of re-reading the current world?

Agent fleet domain agent A domain agent B orchestrator Operator console golden signals · health Human gate approve · arbitrate Append-only audit log telemetry tee pause · drain · roll back · revoke · kill · re-scope

The control loop an operator runs. Blue: telemetry out of the fleet. Green: the synchronous tee to an append-only log every action and decision passes through. Rust: control actions the operator and the human gate push back — the whole point of agent ops is that these stay fast and cheap to use.

telemetry audit-log tee operator control actions

Fleet inventory & ownership

You cannot operate what you cannot list. Every agent in service has a row in a fleet register, and an agent with no row does not run. The minimum columns:

FieldWhy it's mandatory
PurposeOne sentence. If it takes a paragraph, the agent is doing too much and should be split.
OwnerA named person (or rota) accountable for its behaviour. Not "the platform team".
ScopeThe exact systems, accounts, and object classes it may touch. Everything else is out of bounds by default.
Tier ceilingThe highest risk tier it may act at without a human. Most agents cap at Tier 1.
CredentialsWhich just-in-time lease profile it redeems, and the rotation interval.
TriggerCron schedule, queue subscription, or alert hook — and the expected run frequency, so an abnormal rate is visible.
Kill switchThe exact command or control that stops it, and the date it was last tested.
Blast radiusThe worst realistic outcome of a bad run, written down before go-live. Sets how much monitoring it needs.

Review the register on a fixed cadence (quarterly is enough for a small fleet). Agents accrete scope quietly; the review is where you claw it back.

Observability: the golden signals for an agent

A service has latency, traffic, errors, and saturation. An autonomous agent has a parallel set of five signals that tell you whether it is healthy without reading its logs line by line:

Put those on one board with per-agent rows, alert on rate-of-change not just absolute thresholds, and keep the append-only audit log as the drill-down: every signal on the board should be a query away from the exact messages behind it.

The "is it misbehaving?" checklist

Autonomous agents fail in recognisable ways. When something feels off, walk this list — it is ordered by how fast it does damage:

Failure modeWhat you seeFirst move
Runaway loopAction rate spikes; the same plan or target repeats.Kill switch now, diagnose after. A loop is the one case where speed beats analysis.
Retry stormOne failing action retried without backoff; queue and API-error rate climb together.Trip the per-target circuit breaker; pause the agent; fix the downstream cause.
Silent failureHeartbeat present, action rate near zero, queue growing, no reports.Check it is not wedged on a hung call or an unanswered approval; drain and restart.
Scope creepActions against systems or object classes outside the register row.Pause; this is a policy-enforcement gap, not a tuning issue. The scope check should have blocked it.
Stale-context actionPlans reference state that has since changed — acting on a ticket already closed, a host already rebuilt.Confirm it is re-reading current state at wake, not trusting carried-over context. This project has shipped this bug (out-of-order log entries acting as if earlier).
Instruction driftBehaviour changed with no code change — a model update or an edited prompt reinterpreted.Diff the effective instructions and model version against the last known-good; roll back that change first.
Confidently wrong reportsSummaries claim success the audit log does not support.Trust the log, not the narration. Add an independent verify step before "done" is ever emitted.

The intervention ladder

Reach for the gentlest control that solves the problem — but never hesitate to skip rungs when actions are actively causing harm. Each rung is something you should have practised before you need it.

RungEffectUse whenReversible?
PauseAgent finishes the current action, then stops picking up new work. Queue keeps filling.You need a minute to look, nothing is on fire.Instant — unpause.
DrainStops taking new work and lets in-flight actions complete, then exits clean.Planned maintenance, patch, redeploy.Yes — restart.
Lower the tier ceilingAgent keeps running but everything above Tier 0 now needs a human.You trust it to read but not to act unsupervised right now.Yes — raise it back.
Trip a circuit breakerBlocks all actions against one target system; other work continues.Actions against one system are failing verification repeatedly.Yes — reset after the fix.
Revoke credentialsThe just-in-time lease is cancelled; the agent can plan and report but cannot change anything.Suspected credential compromise, or you want a hard stop on mutations without killing the process.Yes — re-issue.
KillProcess terminated immediately, in-flight action abandoned (its rollback runs if already applied).Runaway loop, confirmed harmful actions, anything you cannot explain fast.Yes to restart, but you accept an interrupted action.

From this project's log: the equivalent of "lower the tier ceiling" happened here for real — an unattended session had its write, commit, and deploy permissions removed, leaving it able to read and report but not change anything. The loop kept running safely in observe-only mode until the operator restored access deliberately. A degraded agent that can still report is far more useful than a dead one.

Credentials & least privilege

Change management for agents

A prompt edit, a policy tweak, a tool addition, and a model upgrade are all production changes to the agent's behaviour — and the model upgrade is the one most likely to change behaviour silently, because you did not touch the code. Run them through the same lifecycle:

  1. Shadow. New version runs against real inputs but its actions are logged, not applied. Compare its proposed actions to the live version's for a representative period.
  2. Canary. Route a small, low-blast-radius slice of real work to the new version. Watch the five golden signals against the old version's baseline.
  3. Dual-run for schema changes. If the change touches message shapes, producers emit both old and new, consumers upgrade, then the old shape retires.
  4. Promote or roll back. Promotion is a deliberate step with the baseline comparison attached. Rollback is one command and is tested before the canary starts, not improvised after.
  5. Record it. Effective instructions and model version are versioned artifacts. "Behaviour changed and we do not know which change did it" is the outage you are preventing.

The human gate in practice

When an agent causes an incident

  1. Contain. Kill switch or credential revoke — stop new actions before anything else. A running agent during triage keeps changing the thing you are trying to understand.
  2. Preserve the record. Snapshot the audit log range and the agent's effective instructions and model version before restarting or patching. This is the evidence.
  3. Assess blast radius. Pull every action for the agent's identity over the incident window; diff intended vs actual state for each; list what needs manual correction.
  4. Arbitrate the fix. Corrections above Tier 1 go through the gate like any other change — the incident does not suspend the approval model, it is exactly when you want it.
  5. Post-incident review. The output is a change: a tighter scope, a new deny-list entry, a missing precondition check, a monitoring gap closed, or a kill-switch drill added. "The agent will be more careful" is not a fix.

Game days & drills

The controls in the intervention ladder only work if they have been used. On a fixed cadence, in a controlled window, practise:

Metrics that matter — and the ones that don't

Track: verification-pass rate, mean approval-wait time, escalations resolved per week, rollback count and cause, time-to-contain in drills, and scope-violation count (target: zero). These measure whether the fleet is trustworthy.

Do not optimise: raw action count, "percent of work done without a human", or tickets closed per hour. An agent that maximises those is an agent that has learned to stop asking — which is exactly the failure the whole model exists to prevent. Autonomy is a result you earn from a clean track record, not a KPI you push.

A 30 / 60 / 90 adoption path

WindowWhat the fleet is allowed to doExit criteria
Days 0–30 — observeAgents read and propose only. Every action is a dry-run logged for a human to compare. Kill switches and drills established.Proposed actions match what a human would have done, for two weeks, with the golden-signals board live.
Days 30–60 — low-risk autoTier 0–1 actions execute without approval. Everything else still gated. Circuit breakers and JIT credentials in place.Verification-pass rate at target, zero scope violations, first kill-switch and credential-revoke drills passed.
Days 60–90 — approved mutationAgents propose Tier 2 changes with full dry-run diffs; humans approve at volume. Gate staffed as on-call.Approval-wait time within target, denials trending down as instructions tighten, a clean post-incident review from at least one real event.
Day 90+ — broad autonomyTier 2 auto for plan types with a proven record; Tier 3 and the deny-list stay human, always.Reviewed each quarter against the fleet register — autonomy that is not re-earned gets rolled back.

How this maps to the other pages

What this is and isn't

This is an operating playbook, written to be adopted. It ships no control plane, no dashboard, and no agent runtime on this box — running a real fleet against real systems is a decision for whoever owns those systems, with their own console, their own on-call, and their own approval gate wired in.

The load-bearing choices — a stateless loop, a fleet register with a tier ceiling per agent, five golden signals, a rehearsed intervention ladder, change-managed prompts and models, and autonomy widened only on evidence — are the same principles the architecture pages are built on, expressed as day-to-day operations. Loosen them and you have a fleet you cannot safely leave unattended.

Take it further