Approvals
Approvals let skills pause before high-impact actions. The skill prepares the action, OS records the request, a human makes the decision, and the skill continues or stops. The approval belongs to OS, so the agent process does not need to stay alive while the human decides.When approvals are useful
Use approvals when a skill is about to do something that changes shared state, publishes something, affects an external system, or creates a result other people will trust. Examples:- publish or share an artifact
- create campaign drafts in a connected system
- update important workspace records
- send a customer-facing message
- trigger a workflow another person depends on
Approval flow
Approval request shape
| Field | Purpose |
|---|---|
id | Stable approval identifier. |
workspaceId | Workspace that owns the request. |
skillExecutionId | Execution that requested the decision. |
skillName | Skill asking for approval. |
title | Human-readable decision title. |
summary | What will happen if approved. |
riskLevel | Internal impact level for sorting and policy. |
status | Pending, approved, rejected, expired, or cancelled. |
proposedPayload | Structured action details. |
traceId | Link back to execution logs. |
createdAt | Request creation time. |
resolvedAt | Human decision time. |
Delivery surfaces
Approval delivery should be adapter-based. Skills should ask OS for approval. Skills should not know whether the request goes to the app, Slack, Discord, or another surface.Resume model
The simplest useful model is explicit resume. A skill returnsapproval_required. The human decides. The agent or user then continues the skill with the approval reference.
Automatic wake-up can come later after OS has durable execution checkpoints.