Slack agent
Delivery, Stop and recovery
How events are stored before work starts, how replies and generated files are delivered, how Stop works and what recovery does.
Delivery, Stop and recovery
Slack retries events and people press buttons twice. The agent is built so a turn runs once, a reply posts once, and nothing is quietly lost.
Events are stored first
Every signed Slack event is written to a PostgreSQL inbox before Slack is acknowledged. Event IDs are kept for seven days, so a Slack retry is recognised and not run again. Work is picked up from three separate lanes:
- Work: ordinary turns.
- Control: Stop and revocation, so they never wait behind a model call.
- Interaction: button clicks and modals.
Replies
The reply is stored before the final authority recheck, then posted to the person's private thread with a delivery marker.
- A failure before the Slack post starts is retried with backoff, up to four deliveries. If it still fails, the person gets "I couldn't finish that request. Please try again."
- A post whose outcome is unknown is never posted again. Recovery can match it later using the delivery marker in that thread's history.
- Recovery works on turns younger than 15 minutes.
Generated briefs
When generation started from Slack finishes, the agent posts one review into the originating private thread. It reads the brief once with the user's own connection, so current access applies, and needs no credit.
- Text up to 700 characters appears inline; longer text shows a 280-character preview plus a link.
- Decks and graphics appear as private links and are uploaded as files, once each.
- A Webinar adds its whole kit as a ZIP link. Incomplete slots are named.
- A failure names its code and the recovery path.
- "Links are private and last seven days."
If the person's access or the brief's owner changes, the watch for that job ends.
Stop
Slack's stop control sends agent_session_stopped. The agent cancels the person's active turn and replies "Stopped." Stop can still be used after unlinking. It cannot undo a write that already committed, and spend already incurred stays charged.
Status indicator
In private threads Slack shows the agent as processing while it works, and it is always cleared at the end, even on a refusal.