ワンクリックで
manage-approvals
Human-in-the-loop approval workflows for governed agent actions
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Human-in-the-loop approval workflows for governed agent actions
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Governance behavior for AI agents governed by DashClaw. Teaches the governance protocol: when to call guard (risk thresholds), how to interpret decisions (allow/warn/block/require_approval), when to record actions, how to wait for approvals, and session lifecycle management. Loads org-specific policies and capabilities from MCP resources at session start. Use with @dashclaw/mcp-server. Trigger on: governed agent, dashclaw governance, guard policy, approval wait, governed capability, risk threshold, action recording, session lifecycle.
DashClaw platform expert for integration, troubleshooting, and governance. Snapshot-based — prefer live queries via `python -m livingcode query`, or `GET {baseUrl}/api/doctor` when Python/livingcode/the repo are unavailable.
Set up a DashClaw instance, install the CLI tool, and configure Claude Code hooks
Debug DashClaw errors, signal issues, and misconfigurations
| name | manage-approvals |
| description | Human-in-the-loop approval workflows for governed agent actions |
| license | MIT |
| metadata | {"author":"ucsandman","version":"1.0.0","category":"operations"} |
DashClaw's HITL (Human-in-the-Loop) system lets operators approve or deny agent actions before they execute. Three channels: dashboard, CLI, and SDK polling.
Approvals are triggered when:
require_approvalThe action enters pending_approval status and the agent waits.
Navigate to the DashClaw dashboard → Mission Control or Decisions view. Pending approvals show with:
Click Approve or Deny with optional reasoning.
# Interactive inbox — live updates via SSE
dashclaw approvals
# Direct approve/deny
dashclaw approve act_abc123 --reason "Reviewed deployment plan"
dashclaw deny act_abc123 --reason "Missing staging verification"
The interactive inbox (dashclaw approvals) uses SSE for real-time push notifications. New approval requests appear immediately without polling.
Keyboard shortcuts:
A — Approve selectedD — Deny selectedR — RefreshO — Open replay in browserQ — Quit// Agent waits for approval after guard returns require_approval
try {
await claw.waitForApproval(decision.action_id, {
timeout: 300000 // 5 minutes
});
console.log('Approved — proceeding');
} catch (err) {
if (err instanceof ApprovalDeniedError) {
console.log('Denied:', err.message);
return;
}
throw err;
}
try:
claw.wait_for_approval(decision["action_id"], timeout=300000)
print("Approved — proceeding")
except ApprovalDeniedError as e:
print(f"Denied: {e}")
return
# Approve
curl -X POST "$DASHCLAW_BASE_URL/api/approvals/act_abc123" \
-H "x-api-key: $DASHCLAW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"decision": "approved", "reasoning": "Reviewed and safe"}'
# Deny
curl -X POST "$DASHCLAW_BASE_URL/api/approvals/act_abc123" \
-H "x-api-key: $DASHCLAW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"decision": "denied", "reasoning": "Risk too high"}'
Agent calls claw.guard({ action_type, risk_score, ... })
↓
Guard evaluates policies → returns require_approval
↓
Action created with status: pending_approval
↓
Agent calls claw.waitForApproval(actionId)
(polls or uses SSE stream)
↓ ↓
Operator sees in dashboard/CLI Operator opens CLI inbox
↓ ↓
Reviews: goal, risk, systems Uses A/D keys or direct command
↓ ↓
└──────── Decision ────────────┘
↓
approved → agent continues
denied → ApprovalDeniedError thrown
timeout → blocked (enforce) or allowed (observe)
When using the pretool/posttool hooks with Claude Code:
Bash: git push origin main)POST /api/guard → gets require_approvalpending_approval statusdashclaw approvals in another terminalPATCH /api/actions/:idIf approval times out or is denied, pretool exits 2 (enforce mode) and the tool is blocked.
// SDK
const pending = await claw.getPendingApprovals({ limit: 50, offset: 0 });
// API
// GET /api/actions?status=pending_approval&limit=50