HUMANLATCH by VerdictLayer

Integration patterns

Integration patterns

Use HumanLatch with the systems you already run.

These examples show common ways to place HumanLatch between an AI system and a consequential action: deployment workflows, tool execution, operator approvals, and event-driven orchestration.

CI/CD control

GitHub Actions and Terraform

Check a Terraform apply with HumanLatch before the workflow reaches production. Your pipeline can proceed automatically for low-risk changes, pause for approval, or fail closed when policy blocks the action.

This is a practical starting point for infrastructure teams that want approval gates without rebuilding their deployment workflow.

- name: Ask HumanLatch before apply
  run: |
    curl -X POST "$HUMANLATCH_URL/api/v1/actions/propose?workspace_id=$WORKSPACE_ID"       -H "Authorization: Bearer $HUMANLATCH_API_KEY"       -H "Content-Type: application/json"       -d '{
        "action_type": "terraform.apply",
        "target": "prod-eks-cluster",
        "summary": "Apply Terraform changes to production EKS",
        "context": {"environment": "production", "requested_by": "agent:github-actions"}
      }'

Runtime safety

Agent tool wrappers

Wrap the real tool or executor boundary so an agent can request an action, but HumanLatch decides whether the live capability should be allowed to run.

This pattern works well for assistants, copilots, and agent frameworks that already call tools programmatically.

const verdict = await humanlatch.proposeAction({
  action_type: toolName,
  target,
  summary,
  payload,
  context: { environment: "production", requested_by: "agent:assistant" },
})

if (verdict.status !== "approved_auto") {
  return { blocked: true, status: verdict.status, id: verdict.id }
}

return await executeRealTool(payload)

Operator workflow

Slack approval loop

Send pending approvals to Slack with the summary, target, and risk context so reviewers can make a decision quickly and return the system to a known state.

This is useful when teams already live in Slack and want HumanLatch to fit into their normal approval workflow.

Pending action: terraform.apply
Target: prod-eks-cluster
Risk: 50
Reason: production context
Buttons: [Approve] [Reject] [Open in HumanLatch]

Event-driven orchestration

Webhook resume pattern

Use webhooks to resume orchestration after a human decision instead of polling for status forever. Your system receives the approval or rejection event and continues from there.

This keeps long-running workflows simpler and makes the approval step feel like part of the system rather than an external interruption.

POST /action.approved
{
  "id": "action-123",
  "action_type": "terraform.apply",
  "decided_by": "user-456",
  "note": "Approved for maintenance window"
}