{
  "name": "approvals",
  "title": "Approvals - Human-in-the-Loop Decisions",
  "description": "Human-in-the-loop approvals: yes/no, choice, and text input - expiry, workflow integration, and confirmation behavior",
  "guid": "sk_plat_aprv",
  "category": "Agent Tools",
  "requiredTools": [
    "approval_create",
    "approval_list",
    "approval_answer",
    "approval_cancel"
  ],
  "content": "# Approvals - Human-in-the-Loop Decisions\n\nUse `approval_create` to pause and wait for human input before proceeding. Useful in workflows, dangerous operations, or any decision that needs human judgment.\n\n## Approval Types\n- **yes_no**: Simple approve/deny (default)\n- **choice**: Multiple options - renders as interactive buttons for easy selection\n- **text**: Free-form text response from the user\n\n## How It Works\n1. Call `approval_create` with a title and optional type/choices\n2. Agent pauses - no further tools execute until the approval resolves\n3. User responds (approve, deny, choose, or type) via the inline card, `/approval answer`, or chat\n4. Agent resumes with the user's decision\n\n## Expiry\n- **Default**: 7 days\n- **Max**: 30 days\n- **In-chat tool approvals**: 10 minutes\n- Expired approvals are automatically cleaned up\n\n## Behavior Rules\n- While an approval is pending, all non-approval tools are blocked\n- `approval_*` tools (list, answer, cancel, create) stay callable so the agent can manage the queue\n- After 2 denials of the same tool in a conversation, further attempts are hard-blocked\n- Destructive operations (DROP TABLE, recursive delete, TRUNCATE) automatically trigger confirmation - you don't need to call `approval_create` manually for these\n\n## In Workflows\n- Use `wait_for_input` step type for workflow-level approvals\n- The workflow pauses until the user responds\n- Great for: expense approvals, content review, deploy gates, data deletion sign-off\n\n## Tools\n- **approval_create**: Create a pending approval\n- **approval_list**: Check pending and resolved approvals\n- **approval_answer**: Approve, deny, or reply to a pending approval (same capability as a human answering the card)\n- **approval_cancel**: Cancel a pending approval without a decision - unblocks any waiting agent\n"
}
