# GoalCriteriaMiddleware

> **Class** in `deepagents_code`

📖 [View in docs](https://reference.langchain.com/python/deepagents-code/goal_rubric/GoalCriteriaMiddleware)

Run goal-criteria requests entirely inside the main server graph.

## Signature

```python
GoalCriteriaMiddleware(
    self,
    criteria_agent: Any,
    fallback_agent: Any = None,
)
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `criteria_agent` | `Any` | Yes | Context-enabled nested agent (repository/web/MCP). |
| `fallback_agent` | `Any` | No | Optional goal-only agent used when the context-enabled agent fails at the graph level (e.g. exhausts its recursion budget) or returns no usable proposal. `None` disables the fallback, so such failures surface as an error. (default: `None`) |

## Extends

- `AgentMiddleware[GoalCriteriaState, Any]`

## Constructors

```python
__init__(
    self,
    criteria_agent: Any,
    fallback_agent: Any = None,
) -> None
```

| Name | Type |
|------|------|
| `criteria_agent` | `Any` |
| `fallback_agent` | `Any` |


## Properties

- `trace_policy`
- `state_schema`

## Methods

- [`before_agent()`](https://reference.langchain.com/python/deepagents-code/goal_rubric/GoalCriteriaMiddleware/before_agent)
- [`abefore_agent()`](https://reference.langchain.com/python/deepagents-code/goal_rubric/GoalCriteriaMiddleware/abefore_agent)

---

[View source on GitHub](https://github.com/langchain-ai/deepagents/blob/2069079e09546060f5b52b2cd4f0e3c813e820f3/libs/code/deepagents_code/goal_rubric.py#L1369)