Skip to main content

daoflow approvals

Review queued approval requests, record the human decision, and follow the resulting durable operation from the CLI.

Subcommands​

approvals list​

List the current approval queue.

daoflow approvals list --limit 10 --json

Required scope: any valid token

approvals approve​

Approve a queued request. Confirmation is required.

daoflow approvals approve --request apr_123 --yes --json

Required scope: approvals:decide

approvals reject​

Reject a queued request. Confirmation is required.

daoflow approvals reject --request apr_123 --yes --json

Required scope: approvals:decide

Options​

FlagDescription
--limit <n>Max queue entries to show for list
--request <id>Approval request ID for approve/reject
--yesRequired confirmation for decisions
--jsonStructured JSON output

JSON Output​

list​

{
"ok": true,
"data": {
"limit": 10,
"summary": {
"totalRequests": 4,
"pendingRequests": 2,
"approvedRequests": 1,
"rejectedRequests": 1,
"criticalRequests": 1
},
"requests": [
{
"id": "apr_123",
"actionType": "backup-restore",
"targetResource": "backup-run/bkr_123",
"resourceLabel": "postgres-volume@production-us-west",
"riskLevel": "critical",
"status": "pending",
"statusTone": "failed",
"requestedBy": "agent@daoflow.local",
"reason": "Restore after failed migration.",
"commandSummary": "Restore backup artifact to foundation-vps-1:/var/lib/postgresql/data.",
"requestedAt": "2026-03-29T12:00:00.000Z",
"expiresAt": "2026-03-29T19:00:00.000Z",
"recommendedChecks": [
"Confirm the target volume is isolated from live writes before replaying snapshot data."
],
"dispatchStatus": "retrying",
"dispatchStatusLabel": "retrying",
"dispatchStatusTone": "running",
"operationId": "op_restore_123",
"dispatchAttempts": 2,
"dispatchError": "Temporal is temporarily unavailable.",
"dispatchNextAttemptAt": "2026-03-29T12:31:00.000Z",
"dispatchedAt": null,
"dispatchCompletedAt": null
}
]
}
}

approve/reject​

{
"ok": true,
"data": {
"request": {
"id": "apr_123",
"actionType": "backup-restore",
"targetResource": "backup-run/bkr_123",
"resourceLabel": "postgres-volume@production-us-west",
"status": "approved",
"statusTone": "healthy",
"reason": "Restore after failed migration.",
"decidedBy": "ops@daoflow.local",
"decidedAt": "2026-03-29T12:30:00.000Z",
"dispatchStatus": "pending",
"operationId": "op_restore_123",
"dispatchAttempts": 0
}
}
}

Notes​

  • approvals list is a read-only view of the queue
  • approvals approve and approvals reject require --yes and fail before any API call if confirmation is missing
  • Approving a dispatchable request saves a durable operation automatically; do not repeat the underlying deploy or restore command
  • Dispatch states are pending, retrying, dispatched, succeeded, and terminal-failure
  • The dashboard can retry a terminal dispatch failure only when the operation was never submitted
  • Permission errors keep the exact scope details in JSON mode so an agent can tell whether it needs approvals:decide