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
See also
Same route in the other SDKs
The TypeScript tab above is the contract. These calls hit that same route.