Back to Crewai

HITL Workflows

docs/en/enterprise/guides/human-in-the-loop.mdx

1.14.5a26.7 KB
Original Source

Human-In-The-Loop (HITL) is a powerful approach that combines artificial intelligence with human expertise to enhance decision-making and improve task outcomes. This guide shows you how to implement HITL within CrewAI Enterprise.

HITL Approaches in CrewAI

CrewAI offers two approaches for implementing human-in-the-loop workflows:

ApproachBest ForVersion
Flow-based (@human_feedback decorator)Production with Enterprise UI, email-first workflows, full platform features1.8.0+
Webhook-basedCustom integrations, external systems (Slack, Teams, etc.), legacy setupsAll versions

Flow-Based HITL with Enterprise Platform

<Note> The `@human_feedback` decorator requires **CrewAI version 1.8.0 or higher**. </Note>

When using the @human_feedback decorator in your Flows, CrewAI Enterprise provides an email-first HITL system that enables anyone with an email address to respond to review requests:

<CardGroup cols={2}> <Card title="Email-First Design" icon="envelope"> Responders receive email notifications and can reply directly—no login required. </Card> <Card title="Dashboard Review" icon="desktop"> Review and respond to HITL requests in the Enterprise dashboard when preferred. </Card> <Card title="Flexible Routing" icon="route"> Route requests to specific emails based on method patterns or pull from flow state. </Card> <Card title="Auto-Response" icon="clock"> Configure automatic fallback responses when no human replies within the timeout. </Card> </CardGroup>

Key Benefits

  • External responders: Anyone with an email can respond, even non-platform users
  • Dynamic assignment: Pull assignee email from flow state (e.g., account_owner_email)
  • Simple configuration: Email-based routing is easier to set up than user/role management
  • Deployment creator fallback: If no routing rule matches, the deployment creator is notified
<Tip> For implementation details on the `@human_feedback` decorator, see the [Human Feedback in Flows](/en/learn/human-feedback-in-flows) guide. </Tip>

Setting Up Webhook-Based HITL Workflows

For custom integrations with external systems like Slack, Microsoft Teams, or your own applications, you can use the webhook-based approach:

<Steps> <Step title="Configure Your Task"> Set up your task with human input enabled: <Frame>
    </Frame>
</Step>

<Step title="Provide Webhook URL">
    When kicking off your crew, include a webhook URL for human input:
    <Frame>
        
    </Frame>
</Step>

<Step title="Receive Webhook Notification">
    Once the crew completes the task requiring human input, you'll receive a webhook notification containing:
        - **Execution ID**
        - **Task ID**
        - **Task output**
</Step>

<Step title="Review Task Output">
    The system will pause in the `Pending Human Input` state. Review the task output carefully.
</Step>

<Step title="Submit Human Feedback">
    Call the resume endpoint of your crew with the following information:
    <Frame>
        
    </Frame>

    <Warning>
        **Critical: Webhook URLs Must Be Provided Again**:
        You **must** provide the same webhook URLs (`taskWebhookUrl`, `stepWebhookUrl`, `crewWebhookUrl`) in the resume call that you used in the kickoff call. Webhook configurations are **NOT** automatically carried over from kickoff - they must be explicitly included in the resume request to continue receiving notifications for task completion, agent steps, and crew completion.
    </Warning>

    Example resume call with webhooks:
    ```bash
    curl -X POST {BASE_URL}/resume \
      -H "Authorization: Bearer YOUR_API_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
        "execution_id": "abcd1234-5678-90ef-ghij-klmnopqrstuv",
        "task_id": "research_task",
        "human_feedback": "Great work! Please add more details.",
        "is_approve": true,
        "taskWebhookUrl": "https://your-server.com/webhooks/task",
        "stepWebhookUrl": "https://your-server.com/webhooks/step",
        "crewWebhookUrl": "https://your-server.com/webhooks/crew"
      }'
    ```

    <Warning>
        **Feedback Impact on Task Execution**:
        It's crucial to exercise care when providing feedback, as the entire feedback content will be incorporated as additional context for further task executions.
    </Warning>
    This means:
    - All information in your feedback becomes part of the task's context.
    - Irrelevant details may negatively influence it.
    - Concise, relevant feedback helps maintain task focus and efficiency.
    - Always review your feedback carefully before submission to ensure it contains only pertinent information that will positively guide the task's execution.
</Step>
<Step title="Handle Negative Feedback">
    If you provide negative feedback:
    - The crew will retry the task with added context from your feedback.
    - You'll receive another webhook notification for further review.
    - Repeat steps 4-6 until satisfied.
</Step>

<Step title="Execution Continuation">
    When you submit positive feedback, the execution will proceed to the next steps.
</Step>
</Steps>

Best Practices

  • Be Specific: Provide clear, actionable feedback that directly addresses the task at hand
  • Stay Relevant: Only include information that will help improve the task execution
  • Be Timely: Respond to HITL prompts promptly to avoid workflow delays
  • Review Carefully: Double-check your feedback before submitting to ensure accuracy

Common Use Cases

HITL workflows are particularly valuable for:

  • Quality assurance and validation
  • Complex decision-making scenarios
  • Sensitive or high-stakes operations
  • Creative tasks requiring human judgment
  • Compliance and regulatory reviews

Learn More

<CardGroup cols={2}> <Card title="Flow HITL Management" icon="users-gear" href="/en/enterprise/features/flow-hitl-management"> Explore the full Enterprise Flow HITL platform capabilities including email notifications, routing rules, auto-response, and analytics. </Card> <Card title="Human Feedback in Flows" icon="code" href="/en/learn/human-feedback-in-flows"> Implementation guide for the `@human_feedback` decorator in your Flows. </Card> </CardGroup>