Agent Skillsucsandman/DashClaw › manage-approvals

manage-approvals

GitHub

管理 Agent 行动前的人类审批工作流,支持通过 Dashboard、CLI、SDK 轮询及 API 进行审批或拒绝,确保高风险操作受控。

.claude/skills/dashclaw-agent/manage-approvals/SKILL.md ucsandman/DashClaw

Trigger Scenarios

Guard 策略返回 require_approval 动作风险分数超过阈值 触及需强制审查的系统

Install

npx skills add ucsandman/DashClaw --skill manage-approvals -g -y
More Options

Non-standard path

npx skills add https://github.com/ucsandman/DashClaw/tree/main/.claude/skills/dashclaw-agent/manage-approvals -g -y

Use without installing

npx skills use ucsandman/DashClaw@manage-approvals

指定 Agent (Claude Code)

npx skills add ucsandman/DashClaw --skill manage-approvals -a claude-code -g -y

安装 repo 全部 skill

npx skills add ucsandman/DashClaw --all -g -y

预览 repo 内 skill

npx skills add ucsandman/DashClaw --list

SKILL.md

Frontmatter
{
    "name": "manage-approvals",
    "license": "MIT",
    "metadata": {
        "author": "ucsandman",
        "version": "1.0.0",
        "category": "operations"
    },
    "description": "Human-in-the-loop approval workflows for governed agent actions"
}

Manage Approvals

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.

When Approvals Trigger

Approvals are triggered when:

  1. A guard policy returns require_approval
  2. An action's risk score exceeds the org's approval threshold
  3. The action touches systems flagged for mandatory review

The action enters pending_approval status and the agent waits.

Approval Channels

1. Dashboard (Web UI)

Navigate to the DashClaw dashboard → Approvals or Decisions view. Pending approvals show with:

  • Action type and declared goal
  • Agent ID
  • Risk score (color-coded)
  • Systems touched
  • Replay link for full decision context

Click Approve or Deny with optional reasoning.

2. CLI (Terminal)

# 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 selected
  • D — Deny selected
  • R — Refresh
  • O — Open replay in browser
  • Q — Quit

3. SDK Polling (Agent-Side)

// 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

4. API Direct

# 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"}'

Full Approval Flow Architecture

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)

Claude Code Hook Approval Flow

When using the pretool/posttool hooks with Claude Code:

  1. Claude Code calls a tool (e.g., Bash: git push origin main)
  2. Pretool classifies: action_type=deploy, risk=80, reversible=false
  3. Pretool calls POST /api/guard → gets require_approval
  4. Pretool creates action with pending_approval status
  5. Pretool polls for approval (30-second timeout)
  6. Operator approves via dashclaw approvals in another terminal
  7. Pretool receives approval → exits 0 → tool executes
  8. Posttool records outcome → PATCH /api/actions/:id

If approval times out or is denied, pretool exits 2 (enforce mode) and the tool is blocked.

Listing Pending Approvals

// SDK
const pending = await claw.getPendingApprovals({ limit: 50, offset: 0 });

// API
// GET /api/actions?status=pending_approval&limit=50

Approval Best Practices

  • Use SSE for real-time: The CLI inbox uses SSE streaming so approvals appear instantly
  • Set reasonable timeouts: 5 minutes for interactive workflows, 30 seconds for hooks
  • Include reasoning: Always provide reasoning when approving/denying — it's part of the audit trail
  • Don't skip in production: HITL gates exist because the action is high-risk. Bypassing defeats the purpose.
  • Use the replay link: Every action has a replay URL showing the full decision chain — use it to review context before approving

Version History

  • dc89c19 Current 2026-07-25 11:01

Same Skill Collection

.claude/skills/c--projects-dashclaw-route-changes/SKILL.md
.claude/skills/dashclaw-agent/build-dashclaw/SKILL.md
.claude/skills/dashclaw-agent/compliance-drift-evals/SKILL.md
.claude/skills/dashclaw-agent/create-policies/SKILL.md
.claude/skills/dashclaw-agent/instrument-agent/SKILL.md
.claude/skills/dashclaw-agent/register-on-dashclaw/SKILL.md
.claude/skills/dashclaw-agent/setup-dashclaw/SKILL.md
.claude/skills/dashclaw-agent/troubleshoot/SKILL.md
.claude/skills/dashclaw-weekly/SKILL.md
.claude/skills/gitnexus/gitnexus-cli/SKILL.md
.claude/skills/gitnexus/gitnexus-debugging/SKILL.md
.claude/skills/gitnexus/gitnexus-exploring/SKILL.md
.claude/skills/gitnexus/gitnexus-guide/SKILL.md
.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md
.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md
.agents/skills/dashclaw-governance/SKILL.md
.claude/skills/dashclaw-governance/SKILL.md
.claude/skills/dashclaw-ship/SKILL.md
.claude/skills/repro/SKILL.md
.hermes/skills/dashclaw-governance/SKILL.md
plugins/dashclaw/skills/dashclaw-governance/SKILL.md
public/downloads/dashclaw-governance/SKILL.md

Metadata

Files
0
Version
cfcdad4
Hash
08cf761e
Indexed
2026-07-25 11:01

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-20 19:06
浙ICP备14020137号-1 $Гость$