> ## Documentation Index
> Fetch the complete documentation index at: https://docs.formation.texturehq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Follow-ups

> Let an agent come back to a conversation later and act on what it said it would check.

A follow-up is how an agent keeps a small promise across time: "I'll look at this
pull request again in 30 minutes and tell you when it merges." The agent writes a
short note to itself and a due time; when the time comes, it is started again in
the same conversation, reads the note, checks the current state, and acts.

Use a follow-up for one-off checking back. Use a [schedule](https://docs.formation.texturehq.com/runtime/schedules.md)
for reminders or briefings on a recurring cadence.

## What the agent sees

| Tool | Arguments | What it does |
| - | - | - |
| `schedule_follow_up` | `description` (1–1,000 characters), and one of `in` (`"30m"`, `"2h"`, `"1h30m"`, `"3d"`) or `at` (RFC3339 with offset) | Saves a follow-up for this conversation, due 1 minute to 30 days from now. |
| `list_follow_ups` | none | Lists this conversation's pending follow-ups, soonest first. |
| `cancel_follow_up` | `id` | Cancels a pending follow-up in this conversation. Cancelling one that already ran or was cancelled reports its status and changes nothing. |

The tools are offered in any turn that answers a message in a conversation,
including a turn started by a follow-up, so the agent can keep watching by
scheduling another one.

## When it fires

Each follow-up has its own Temporal workflow holding a durable timer, so a
pending follow-up survives deploys and restarts. When the timer fires, the
workflow starts an ordinary run in the original conversation, anchored to the
message the agent was answering, so the reply lands in the same channel and
thread. The run gets the agent's normal per-turn budget and its full tools.

The note reaches the agent as an instruction from its earlier self, not as a new
human message. The anchor message is only the place to answer: it gets no new
reaction, and identity commands, task intake, and continuation checks are not
run on it again. If another run is answering in the conversation at that moment,
the follow-up waits and retries until the conversation is free.

## No authority model

A follow-up records who it is for only by its conversation. Anyone in that
conversation can ask the agent to cancel it. Nothing about the agent is locked
while one is pending, and changes in memory, participants, or anything else are
new input to the run when it fires, not a reason to skip it.

The database row decides. The timer workflow reads the row under lock before it
starts the run, so a cancellation saved before the timer fires always wins, even
if the signal that ends the timer early arrives late.

## Operators

`GET /api/agents/{slug}/follow-ups` lists an agent's follow-ups, newest first
(see the [operator API](https://docs.formation.texturehq.com/operator-api.md#follow-ups)). A pending follow-up keeps its
Temporal connection's worker running until it fires or is cancelled, so
switching connections does not strand it.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.