The approval is not in the queue
Two states look identical to a missing approval: the action was never queued, because draft_only prepares without asking; or there was never an approval to queue, because a gate refused the action outright. Both are visible in the decision log, which is the screen that separates 'held silently' from 'refused' from 'already decided by somebody else'.
What the symptom looks like#
You expect a decision to make. Perhaps a colleague said one was coming, perhaps a customer wrote and the reply should have needed a yes. Needs You is either empty or does not contain that conversation, and the thread shows no outbound message either. Nothing is broken on screen; there is simply no item where you expected one.
The useful question is not *where has it gone* but *was it ever there*. Those two have different causes and different fixes, and the decision log answers the second in one line.
The two states that look like absence#
- It was never queued
draft_onlywrites the reply and stops. It does not ask, on purpose, so nothing enters the queue at any point. The reply exists on the conversation; there is no approval because none was ever created. This is the commonest cause and the least like a fault.- There was nothing to approve
- A gate refused the action before autonomy was consulted. A suppressed recipient, an unsubscribe, a do-not-contact entry or a memory block stops the action outright rather than escalating it, because a refusal that asks a person to override it is not much of a refusal.
The other four reasons#
| Cause | How to recognise it | What to do |
|---|---|---|
| Somebody already decided it | The decision log names a person and a time; the thread shows the sent message or the rejection | Nothing. The queue belongs to the workspace, so a colleague clearing an item is normal work, not a lost one |
The mode is autonomous | The message went out with no decision at all, and the log shows the rule that permitted it | Read Connect did something without asking; the scope in force is usually wider than the one you set |
| The engine has not reached it yet | The conversation is recent and the log shows nothing about it in either direction | Wait a tick. Preparation is not instantaneous, and an item cannot be queued before the work exists |
| You are in a different workspace | Everything is missing, not one thing | Check which workspace the session resolved to — see which workspace you are in |
What Connect did complete#
- The inbound message was fetched, canonicalised and attached to the right thread and person.
- The reply was written, or the action was assembled, unless the channel's mode is
off. - The autonomy decision was made and written to the decision log with the rule behind it, whichever way it went.
- Where a refusal applied, its origin was recorded — a suppression names where it came from rather than reporting a bare failure.
What Connect did not complete#
- It did not queue an item under
draft_only, and no future tick will: that mode never asks, so waiting changes nothing. - It did not send anything a gate refused, and it did not offer the refusal as something a person could wave through from the queue.
- It did not notify anybody that an approval was expected and absent, because nothing knows what you were expecting.
- It did not delete an item you saw earlier. Items leave when they are decided or when their cause clears, and both leave a trace.
What you can do, and when to escalate#
Open the decision log and filter to the conversation or the period.
Result One of three things is there: a hold, a refusal, or somebody's decision. Any of them ends the search.
If it is a hold, read the mode in force at the narrowest scope.
Result
draft_onlyexplains it completely. Switching that channel or contact toask_before_sendmakes the next one appear in the queue.If it is a refusal, read the origin it names.
Result A suppression that may be cleared can be cleared; a do-not-contact entry is deliberately harder, and the Connect Assistant cannot clear one at all.
Escalate to support only when the log has no entry of any kind for a conversation that clearly received a message — that is the one shape here that is not explained by configuration. Quote the time, the channel and the workspace, and leave message content out of the report.
Questions#
Can an item disappear from the queue without anybody deciding it?
An operational entry can, because those are derived from the state that caused them and drain when the cause clears — a mailbox that starts fetching again removes its own item. A held action does not: it waits for a decision.
Does the queue expire old items?
No. Nothing is aged out, and nothing is sent by default when an item is old. That is the safe failure, but it is not harmless — the recipient is still waiting, and the ranking exists to keep the expensive wait at the top.
Why is a refusal not offered as an approval I could override?
Because the gates are not preferences. A do-not-contact entry, an unsubscribe and a suppression are commitments to a person outside your workspace, and a queue that let anybody wave them through would make them advisory.