Async executions
# Async executions
Long-running agent work runs through the async execution queue. Operators and integrators can list, pause, resume, and cancel executions — the same surfaces HumanOS uses when a human must approve before work continues.
Overview
Async executions are first-class jobs with cursor-paginated listing and explicit lifecycle verbs. Pausing is how you hold the line at an approval gate without tearing down the run.
Implementation:
apps/api/src/routes/async-executions.tsapps/api/src/control-plane/async-jobs.tsShipped endpoints
| Verb | Path |
|---|---|
| List | GET /v1/async-executions?status=&agent_id=&limit=&cursor= |
| Get | GET /v1/async-executions/:id |
| Pause | POST /v1/async-executions/:id/pause |
| Resume | POST /v1/async-executions/:id/resume |
| Cancel | POST /v1/async-executions/:id/cancel |
| Awaiter status | POST /v1/async-executions/:id/awaiter-status |
queued, running, paused, completed, failed, cancelled (see route filters in async-executions.ts).Try it
HITL integration pattern
Typical approval loop:
reason referencing the approval ticket.POST /v1/approvals/:id/respond or Command Plane escalations.See Human-in-the-Loop for approval inbox details.
Cooperative cancel (multi-replica)
Workers honor cooperative cancel flags so pause/cancel propagate across replicas. Operational detail: docs/runbooks/cooperative-cancel-multi-replica.md.
Use cases
/v1/approvals respond.Security considerations
DO
Pass pause reason strings that reference approval ids for audit
Verify delegation owns the execution before pause/resume
DON'T
Spawn duplicate executions instead of resuming paused jobs
Resume without checking approval record when reason says awaiting human