Skip to main content
Some agent actions need human approvals for dangerous actions: deploying code, sending money, modifying user accounts. With Restate, your agent can pause execution, wait for an external signal, and resume exactly where it left off, even if the process restarts in the meantime.

How it works

Restate provides durable promises (awakeables) that survive crashes and restarts:
  1. The agent creates a durable promise and gets a unique ID
  2. The agent sends this ID to whoever needs to approve (Slack, email, dashboard)
  3. The agent suspends, freeing compute resources (no idle billing on serverless)
  4. When the approver responds, they resolve the promise via HTTP
  5. The agent resumes from the exact point it paused

Example: approval tool for an agent

Why this matters for agents

  • No idle resources: The agent suspends while waiting. On serverless infrastructure, you pay nothing during the wait.
  • Survives restarts: Even if the process or infrastructure changes, the agent resumes when the approval arrives.
  • Composable: Combine with tool calls, multi-step workflows, and other patterns. The approval is just another durable step.

Adding timeouts

Add a timeout to prevent approval steps from hanging indefinitely. Restate persists both the timer and the approval promise, so if the service crashes or is restarted, it will continue waiting with the correct remaining time.