All lessons › Function E — The Agentic SOC › Respond — From a Conclusion to the Actor Stopped
E4.4

Stop authority — who halts a fleet, and how long it takes

E4
▶
Lightboard recording

Not recorded yet. The lesson below is complete and runnable today — the video is added later without touching this page.

Video placeholderpublishes automatically from recordings/E4.4.mp4
Risk

Nobody has rehearsed halting an autonomous workflow.

Control

Named holder, measured time-to-stop, tested.

The lab

Time your own stop authority end to end.

◉Use case relevance

At three in the morning, the question is not what went wrong. It is who is allowed to stop it, on what evidence, without waiting for a forty-person bridge call to reach consensus.

At CyberTravels. Five checks and only the last has a number in it. measured_time_to_stop has to come from a real attempt, because the first time a stop authority is exercised is the worst possible moment to discover how long it takes — and D1.9's time_to_stop says twenty thousand revocations is not instant.

◴What this lesson is — Day 0, Day 1, Day 2

Stop authority as something rehearsed and timed rather than assigned: a named holder, a deputy, out-of-hours reachability that was tested by calling them, and a time-to-stop from a real attempt.

Day 0 — why

Stop authority is the control everyone assumes exists and almost nobody has timed.

Day 1 — how

Answer five questions with a name or a number each: who, what mechanism, how long, what breaks, who turns it back on.

Day 2 — measure

Measured time-to-stop, end to end, from a real exercise. An untimed stop authority is an intention with a runbook attached.

Measure this

what to measuredenominator or target
time-to-stop, end to endseconds, measured in a real exercise; an untimed stop authority is an intention

▦The framework, and how it works

   03:00, the agent is acting, the evidence is partial

   who may say stop?          +-----------------------------+
                              | named role, on call         |
   on what evidence?          | pre-agreed trigger list     |
   what does stop mean?       | revoke + gateway cut        |
   who is told after?         | named, not assembled at 3am |
                              +-----------------------------+

   pre-agreed authority beats a forty-person bridge call

Stop authority is the control everyone assumes exists and almost nobody has timed.

Five questions decide whether you have it, and each needs a name or a number rather than an intention:

  1. Who can halt an agent fleet without seeking approval?
  2. What is the mechanism — and is it revocation, which survives a restart, or process termination, which does not?
  3. How long does it take, measured end to end, not estimated?
  4. What breaks when it fires — and has the business already agreed to that?
  5. Who turns it back on, and against what evidence?

An untested stop button is a belief. The purpose of this lesson is to convert it into a measurement, because the measurement is what an auditor, a regulator and a board will each ask for in different words.

Anchor → E1.0. This is the interval itself, measured end to end rather than estimated. Five questions decide whether you have it, and each needs a name or a number: an untimed stop authority is an intention with a runbook attached.

2 · Demo — the five questions, answered badly and well

3 · Where it breaks — mechanism matters more than speed

4 · The control — run the game day and record the number

5 · The procedure, as a skill

The skill puts the vague answers next to the concrete ones, then asks what each stopping mechanism actually survives:

  • Killing the process does not survive a restart. It comes back.
  • Revoking the identity does survive a restart. It stays stopped.

It finishes with a time-to-stop of twelve seconds, and that number comes from a game day somebody actually ran. It is not an estimate.

▶Real time execution as skill

The skill — skills/response/stop-authority-readiness/SKILL.md

name: stop-authority-readiness
description: >-
  Turn "we can stop it" into a named mechanism with an owner, a measured
  time-to-stop from a game day, and a stated cost of stopping. Use to answer how
  long it would actually take to stop a running agent, before granting autonomy,
  and whenever stop authority has never been exercised.
allowed-tools: Read, Grep, Glob

Killing the process does not survive a restart

Stop authority is usually described rather than specified: somebody can stop it, probably quickly, and nobody has tried. Three questions turn that into a control — which mechanism, who may invoke it without asking, and how long it takes when measured rather than estimated.

When to use this

Before raising an agent's autonomy, at any authorisation to run unattended, and once a year as a game day.

Procedure

1 — Write the vague answers down and then the concrete ones. Side by side. "Ops can kill it" against "the on-call SRE revokes the workload identity in the identity console, and here is the runbook". The contrast is what gets the work scheduled.

2 — Enumerate mechanisms and what each survives. Killing the process does not survive a restart or a scheduler. Revoking the identity does. Blocking egress stops the effect and not the run. Record what each actually stops.

3 — Name who may invoke it without asking. Stop authority that needs an approval is not stop authority; it is an escalation. If nobody may act alone, that is the finding.

4 — Run a game day and measure. From decision to the agent being unable to act. Report seconds. An estimate is not a measurement and this is the number that is always wrong in the optimistic direction.

5 — Cost the stop. What stopping costs per minute in halted legitimate work. Somebody will ask, and having the number is what makes the decision fast during an incident.

Example

Input — the fixture committed at the top of scripts/stop_authority_readiness.py. Edit it and re-run: the buckets, counts and verdicts below are derived from it, not hard-coded.

Output — the opening lines of a real run:

who         VAGUE    the security team
            CONCRETE on-call SRE, no approval required for non-human identities

mechanism   VAGUE    we can turn off the agents
            CONCRETE revoke the SPIFFE identity at the gateway (survives restart)

time        VAGUE    quickly
            CONCRETE measured 12s decision→first failed call, game day 2026-07-04

The run continues past this. test_skills.py executes the script on every build, with no model configured — so what CI proves is that it runs and refuses legibly, not that it prints these lines. The output above is a recorded run against a real model, and nothing re-diffs it: a model's answer is not reproducible, and this repository does not claim otherwise anywhere it can be checked.

Output contract

{
  "answers": [{"question": "str", "vague": "str", "concrete": "str"}],
  "mechanisms": [{"name": "str", "stops": ["str"], "survives_restart": false}],
  "authority": {"may_invoke_alone": ["str"], "approval_required": false},
  "game_day": {"measured_seconds": 0, "estimated_seconds": 0},
  "cost_per_minute": 0.0,
  "ready": false
}

Failure modes

  • Process termination as the mechanism. The scheduler restarts it.
  • An estimated time-to-stop. Measure it once and the estimate is revealed.
  • Stop authority behind an approval. That is escalation with a different name.

Three ways to do this lesson. Pick one. They run the same procedure against the same code — what changes is who drives it, and how much you see.

1In your AI agent — you are taught

The agent reads the lesson, explains the idea, fetches the code, runs the check and answers your questions as you go. This is the one to take if you are here to learn.

Install it, once. From the folder you cloned. --all does every agent it finds on your machine:

python3 scripts/install_skills.py --all --lessons E4.4

Then restart your agent and open it in that folder. On Windows, if python3 says Python was not found, use python instead.

Then pick e4-4-stop-authority:

agentinstall just for this agentstart it
Claude Codepython3 scripts/install_skills.py --tool claude --lessons E4.4type /e4-4-stop-authority
GitHub Copilot (VS Code)python3 scripts/install_skills.py --tool copilot --lessons E4.4type /e4-4-stop-authority in Chat
Cursorpython3 scripts/install_skills.py --tool cursor --lessons E4.4type / in Agent chat and search for it
Codexpython3 scripts/install_skills.py --tool agents --lessons E4.4type $e4-4-stop-authority, or run /skills

2As one Python command — you just run it

No agent, no conversation. The same lesson executes and prints the same readback. Take this one if you have no assistant, if you are reviewing rather than learning, or if you want the result without the teaching around it.

python3 scripts/lesson.py E4.4

3Read the code, and the difference — nothing runs

Neither of the above, and no model needed. The first command writes CyberTravels exactly as it stood at the end of this lesson; the second prints the diff — the lines this lesson added or changed, and nothing from any later one.

python3 scripts/checkpoint.py --at E4.4 --out work/cybertravels
python3 scripts/checkpoint.py --at E4.4 --diff

On Windows, type python wherever these say python3 — and use \ instead of / in the paths. Everything else is identical. A0.0 step 2 explains why.

Ways 1 and 2 need a model; way 3 does not. A signed-in Claude Code CLI needs no API key, and any OpenAI-compatible endpoint works too. With neither, the audit exits 2 and says so rather than inventing an answer. A0.0 sets this up.

Ways 1 and 2 both end with the same readback: What I did, What changed, The number and Read this next. A step that was skipped or refused is reported as exactly that, never as a pass.

If you did the last lesson’s challenge, expect this to stop. Most challenges ask you to edit the code, and ways 1 and 2 will not overwrite your edits: you get stopped, not a failure, with two options — --out for a fresh folder that keeps your work, or --force to discard it and start this lesson clean.

✓What you just proved

The vague and concrete answers print side by side. Killing the process stops the agent but does not survive a restart, while identity revocation does. The game-day timeline gives a measured 12-second time-to-stop, permitting 12 to 240 further actions depending on rate. The readiness check fails the vague version on three counts and passes the tested one.

✎Your turn

Run the game day. The deliverable is the number, and the number is what goes in the evidence pack for F1.7 and the board slide for F3.5. An untested stop button is a belief.

Tools used

kagent

Skill source: skills/response/stop-authority-readiness

← PreviousE4.3 · Containment at machine speed