# Standing instructions

A standing instruction is a durable direction — something a person tells Connect to do, or not to do, that keeps applying afterwards. It lives at one of the four tiers, alongside memory and the autonomy setting for the same scope. Directions change **what is said and done**; memory changes **what is known**; autonomy changes **what is permitted**.

- **Status:** Available
- **Audience:** both
- **In the app:** #/rules, #/rules-advanced
- **Last verified:** 2026-09-10
- **Canonical:** https://connectbyjbrh.com/docs/autonomy/standing-instructions/

## Three layers, one hierarchy

| Layer | Answers | Example |
|---|---|---|
| Autonomy | May Connect do this without asking? | Hold every reply to this customer for a person |
| Standing instruction | How should Connect behave here? | Never quote a delivery date on this channel; always offer a call after two exchanges |
| Memory | What is true here? | This organisation's account manager changed in March |

All three resolve through the same four tiers — workspace, channel, endpoint, contact — which is why a direction set against one contact behaves the way an autonomy exception on that contact behaves: it wins over anything wider. Learning the hierarchy once buys you all three.

> **Note** A direction cannot widen permission. Telling Connect to answer straight away on a channel set to `ask_before_send` produces a reply written straight away and held exactly as before. If the intent was speed, the change belongs on the autonomy screen.

## Writing one that can be acted on

- **Say what to do, not how you feel about it.** "Be more professional" cannot be checked against an output. "Do not use first names with new contacts" can.
- **Pick the tier deliberately.** A house rule belongs at workspace tier. A rule about one difficult account belongs on that contact, where it will not quietly change every other conversation.
- **Prefer one direction to several overlapping ones.** Two rules that partially contradict each other produce behaviour nobody predicted and nobody can debug.
- **Write the boundary as well as the instruction.** "Offer a call when the customer mentions a deadline" is better than "offer calls", because it says when not to.

The strongest evidence that a direction is needed is a repeated edit in the approval queue. If you have corrected the same sentence four times, the correction is a rule the business holds and Connect has never been told — see [Editing before approving](/docs/autonomy/editing-before-approval/).

## How it differs from a memory entry

The practical test is whether the statement would still be true if Connect did not exist. "The warehouse closes at noon on Fridays" is a fact about the business and belongs in memory, where it can inform any reply on any channel. "Do not promise Friday afternoon collection" is a direction, derived from that fact, telling Connect what to do about it.

Recording the fact is usually the better move, because one fact serves many situations while one direction serves one. Record the direction as well when the desired behaviour does not follow obviously from the fact, or when it is a preference rather than a consequence.

Blocking is the case where the two blur. A block is stored as a memory entry with the tag `block:<channel>`, and Connect's directive lookup reads the tag list rather than the text of the note. It is knowledge shaped so that it acts like a direction — which is why writing "do not contact" in the body of a memory entry accomplishes nothing at all.

## Reviewing and removing them

1. Read what is set at every tier for a piece of work, not just the one you last touched.
   - Result: An empty tier is shown as empty rather than omitted, so "nothing is set here" is an answer you can see instead of infer.
2. Remove directions whose reason has passed.
   - Result: Durable means durable: a rule written for one busy quarter keeps applying through the quiet ones.
3. Watch the next few conversations after any change.
   - Result: If behaviour has not moved, the direction was set at the wrong tier or is not specific enough to act on.

A person can read everything Connect knows at every tier and forget any of it, from the mailbox row, the channel screen or the contact panel. The Connect Assistant can add and remove entries on request too — within rights narrower than a person's, and never to clear a do-not-contact entry.

## Questions

### Is a standing instruction the same as a prompt?

No. It is a durable direction attached to a tier of the workspace, resolved with everything else that applies to a piece of work. It is not text you retype per conversation, and it survives the conversation it was written in.

### Can a direction make Connect send without approval?

No. Permission is the autonomy layer's job, and nothing written as a direction changes it. A held reply stays held however the direction is worded.

### Where do I see everything that applies to one customer?

The memory viewer, reachable from the contact panel, shows every tier that applies to that piece of work with its own entries — including the tiers that are empty, so you can tell 'nothing set' from 'not shown'.

## Related

- [Exceptions to a rule](https://connectbyjbrh.com/docs/autonomy/exceptions/)
- [Editing before approving](https://connectbyjbrh.com/docs/autonomy/editing-before-approval/)
- [The four autonomy modes](https://connectbyjbrh.com/docs/autonomy/modes/)
- [Memory in Connect](https://connectbyjbrh.com/docs/memory/)
- [Knowledge in Connect](https://connectbyjbrh.com/docs/knowledge/)
- [Making a correction actually change behaviour](https://connectbyjbrh.com/research/memory-correction-that-sticks/)

## What this page is based on

- Connect source pack §6 — memory tiers, `tiers()` and tag-driven directives (`docs-source/sources/GENERAL.md`)
- Connect source pack §5 — autonomy scopes sharing the same hierarchy
- Connect source pack §8 — the Connect Assistant's `remember` and `forget`, and its narrower rights
- Connect capability registry (`docs-source/facts.py`) — `CANONICAL_TERMS`, `memory_tiers`, `block_directive`, `memory_editing`
