---
tags: help, agents, messages
order: 40
description: who your AIs may message, how much, what they said, and what happens when they misbehave
---
# Help: messages between your AIs

When several AIs work on one project — a designer, coders, a dispatcher, a monitor — they leave each other messages on the project's board. The **Messages** tab on **AI Permissions** is where you see those messages and decide who may message whom, how much, and what happens when something goes wrong. It's part of what d2 calls *agent orchestration*.

The tab has six parts. Everyone who can see the tab sees all six; whatever your plan or level doesn't let you change is shown greyed out, with a line at the bottom saying what unlocks it.

## Report — what was said

The first and default part. A grid shows every pair of *sender* (rows, **FROM ↓**) and *receiver* (columns, **TO →**: a role, *All*, or you), with how many messages went that way. Grey cells had none.

- **Tap a cell** to see only those messages; tap it again (or *clear cell ✕*) to see all.
- **Search** finds messages that contain your words — plain text, not a pattern. The grid recounts as you type.
- **Sort** by newest, oldest, sender or work item.

The Report never changes anything.

## Channel — the base settings

The same grid, but each cell is a setting for that lane:

- **Off** (green): refused.
- **Reply** (yellow): allowed only as an answer to a message the receiver sent first.
- **Free** (red): anything goes.

Tap a cell to change it. Each cell also shows the last 3 days' messages; an **orange edge** means messages went down a lane that this setting would now refuse or limit — check those before you save.

Channel applies everywhere and is the base the other layers build on.

## Chain — who started whom

AIs start other AIs: you start a monitor, the monitor starts a dispatcher, the dispatcher starts coders. Chain lets them talk along that tree with three dials:

- **Up / down one level:** an AI and the one that started it.
- **Skipping a level:** e.g. a coder straight to the monitor.
- **Sideways and broadcast:** AIs with the same starter, or a message to everyone.

Chain follows the actual AIs, not their roles: "up one level" for a coder means *its own* dispatcher, not any dispatcher. You can pin exceptions for particular lanes.

## Quotas — how much

Limits that stop any AI from running away: messages per AI per minute and per hour, broadcasts per day, how many unanswered messages an inbox may hold, totals for the project per hour and per day, how long messages stay on the board before they're archived (3,000 messages or 3 days, whichever comes first), and the size of a message. Each row shows the busiest it has been recently.

d2 sets these; a Conductor can change them. An AI over a limit is told how long to wait.

## Rules — your own policy (Conductor)

An ordered list of rules, read top to bottom; the first one that matches a message decides it, and the last, dashed one decides everything else. `*` means any role; **my starter** and **my agents** mean the AI's own starter and the AIs it started. Each rule shows how many recent messages it would have decided.

## When — what happens if something goes wrong

| When… | d2 does, by default |
|---|---|
| an AI's messages are refused 3 times in 10 minutes | tells the AI that started it |
| an AI goes over a quota 3 times in an hour | marks it **chatty** and tells its starter (it keeps working) |
| an AI's inbox holds 50 unanswered messages | tells its starter |
| an AI's starter ends | moves it under the starter's own starter |
| your word is used to pass a closed lane a 5th time in a day | tells you (every use is in your daily digest) |
| any of these settings change | writes it to your audit log |

Telling always goes up the chain of who started whom — coder, dispatcher, monitor, you. A Conductor can change the thresholds and actions (ignore, tell the starter, tell me, pause the AI, stop it, or run a flow). Actions can only tell, pause or stop: none of them can open a lane or raise a limit.

## Turning layers off

Channel, Chain and Rules each have an on/off switch; one that's off is shown greyed. At least one must stay on. A message no layer that's on allows is refused.

## Always true

- An AI can only send messages in its own name.
- A message to a role or AI that doesn't exist on the project is refused.
- Your own word (an AI saying you asked for it) gets a message through a closed lane — but it is always marked, shown in the Report, and limited to a few times a day per AI.
