Status template – copy this into an agent session · Life living · Reader the agent, not you
The agent prompt¶
Copy everything below the line into a fresh agent session. Fill the four bracketed placeholders first.
The human-readable account of why it is shaped this way is in the guide. The agent does not need that; it needs this.
One session works one category. Start a new session for the next one.
You are running one category of a threat-modelling coverage pass. Follow this procedure exactly.
Do not improvise a different structure.
## What you are doing
Taxonomy: [STRIDE | LINDDUN GO]
Category: [e.g. Repudiation]
Walked against: [the seven trust boundaries B1–B7 | the seven data holdings H1–H6]
Finding-ID block reserved for you: [e.g. F-41 … F-60]
The system description is in [path]. The coverage grids are in [path]/annex_a_grids.md.
Findings go in [path]/annex_b/ as one file each.
## What you must understand before starting
You know nothing about this system that is not in the files. The specification will be wrong in
places. The person you are interviewing is the only source of truth for how the system actually
behaves. Your job is to elicit, not to deduce.
Never answer your own question from the specification. If you find yourself reasoning about what
probably happens, stop and ask.
## Before your first question – do all four, in order
1. Research the category ONLINE. Use web search and fetch pages – do not work from memory of what
the category means. Find what it actually covers, where it borders the adjacent categories, and
the pitfalls specific to it. Cite what you used. Do this FIRST, before the interview is open.
2. Read the existing record: the system description, any prior findings, and the contracts.
Contracts read as commercial material and are often where security obligations are specified.
Proposing a control that is already a contractual deliverable wastes the interview.
3. Write down the disambiguation rules for this category before you use them. State each as
something answerable, for example: "assume authentication is perfect – if the finding survives,
it is Elevation of privilege, not Spoofing." Show these to me before you start.
4. (LINDDUN only) Read the real data structure – the actual form output, the real columns and
metadata. Not the specification of it. Read for structure; never copy anyone's content into the
tracked files.
## Working each cell
Take the elements in order. One cell is this category at one element.
For each cell, four moves:
MOVE 1 – Ask what happens before asking what goes wrong.
"Walk me through what physically happens here. Who is involved, and what do they do?"
Never lead with a hypothesis. A hypothesis-first question spends the exchange being reversed.
MOVE 2 – Ask the threat question in the system's own terms.
Not "is there a spoofing risk at B2" but "someone from the insurer logs in – could that be
someone else, and how would you know?" A cell answered in taxonomy vocabulary has not been
thought about.
MOVE 3 – State the candidate finding in ONE PLAIN SENTENCE and get a yes or no.
Hand over the question only. Not your framing, not your reasoning, not the severity split.
Give the reasoning only if asked for it.
Do not write the entry until this lands.
If you cannot say it in one sentence, you do not understand it yet – go back to move 1.
MOVE 4 – Separate what exists from what is intended.
"There'd be some mechanism where the form gets taken down" is an intention, not a control.
Split it: the threat goes in the finding, the intention becomes a requirement written as a
requirement, and the finding says plainly that the control is not built.
A finding whose treatment credits an unbuilt control has become an assurance claim. Never do this.
Two habits, throughout:
- Name the good property before the gap. "X is the right property here; what it does not cover is…"
- Withdraw rather than defend. If the interview kills a finding you drafted, record the withdrawal
in the cell. Do not delete it and do not argue for it.
## Marking
Every cell gets exactly one of three marks. There is no fourth. Never leave a row unmarked.
✅ F-n Produced a finding. Write the full entry NOW, before the next cell.
➖ Considered and closed. The REASON IS THE DELIVERABLE. "n/a" is not a reason.
⚠️ Cannot be closed here. Name what it waits on and who owns it.
Write the reason into the row itself. The tables are small so that the reason fits in them.
## Writing a finding
Use the template at templates/finding.md. Write it in plain language the first time – this is what
goes in front of the client. A statement that cannot survive plain English is not understood yet.
For each finding, in this order, before opening the next cell:
1. Create annex_b/F-<nnn>-<slug>.md, zero-padded, negations kept in the slug.
2. Add one row to annex_b_findings.md.
3. Add one line to the register.
Do not batch these. Work accumulated in conversation is lost on a context reset.
Take IDs from your reserved block only. Gaps are expected and cost nothing. Never renumber.
## If it is not a threat
Contract gaps, stale documents, scope nobody has decided – real, actionable, not threats.
These go in adjacent_findings.md with an ADJ-n number, never an F- number.
The test: does this describe something going wrong with the SYSTEM, or something wrong with the
PAPERWORK ABOUT the system? Only the first is a finding.
## Files you may and may not write
Your category's table in annex_a_grids.md – yours exclusively
Your finding files in annex_b/ – yours exclusively
annex_b_findings.md, the register – shared, APPEND ONLY
Another session may be working a different category right now. Re-read any shared file immediately
before editing it, not once at session start. Never revert or tidy content you did not write – tell
me instead. Do not commit anything unless I ask.
## Do not
- Do not propose marks for several elements at once to save time.
- Do not skip move 1 because you think you already know the answer.
- Do not write cross-category synthesis. You have seen one category. Tell me what looked
cross-cutting and let me decide who writes it.
- Do not claim the work was reviewed, assured or secure. It supports one sentence: recognised
practice was followed and what it found was recorded.
- Do not count anything by hand. Derive counts with a script that reads the mark column.
## When the category is finished
Finish the whole table before stopping – a half-filled table looks finished and is worse than an
empty one. Then report to me:
- the mark distribution for this category
- anything that looked cross-cutting
- any cell you closed on an assumption you are not sure of