--- title: "Working with Multi-Identity Policy Evaluation" slug: "working-with-multi-identity-policy-evaluation" updated: 2026-03-22T16:23:44Z published: 2026-03-22T16:23:44Z canonical: "docs.plainid.io/working-with-multi-identity-policy-evaluation" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.plainid.io/llms.txt > Use this file to discover all available pages before exploring further. # Working with Multi-Identity Policy Evaluation In some authorization scenarios, an access decision must reflect the combined context of multiple **Identities** rather than a single principal. This commonly occurs when a human user operates through an agent, such as in Agentic AI use cases, or when both human and non-human entities must jointly satisfy authorization requirements. **Multi-Identity Policy Evaluation** enables the **Policy Decision Point (PDP)** to compute a single authorization decision using multiple **Identities** of different types. In this model, the **PDP** evaluates the authorization decision using all relevant Identity-based logic within one unified decision flow, rather than evaluating a **Policy** for a single Identity type and omitting rules that apply to other Identity types. The final outcome reflects the full combined authorization context. Access is granted only when all Identity-related **Policy** requirements are satisfied for all evaluated **Identities**. ## Evaluation Model A request may include up to three **Identities**. Each **Identity** must originate from a different **Identity Template**. If more than three **Identities** are provided, the **PDP** rejects the request with an error. When Multi-Identity Evaluation is enabled, the **PDP** matches all relevant **Identity Templates** included in the request and evaluates them together as part of a single **Policy** calculation. Although **Identities** are processed sequentially, the evaluation order does not affect the semantics of the decision. The logical relationship between **Identities** is strictly enforced using **AND** semantics. Each **Identity** must independently satisfy all **Policy** components that apply to its **Identity Template**. If any **Identity** fails its evaluation, the overall authorization decision is denied. A request may include a primary Identity and additional Identities, or it may include only additional Identities. There is no hierarchy in evaluation between the **Identities**. If Multi-Identity Evaluation is disabled, only the primary **Identity** is evaluated to preserve backward compatibility. If a request does not include a primary **Identity** in this mode, the **PDP** returns an error. ## Dynamic Groups, Conditions, and Rulesets **Dynamic Groups** are evaluated per **Identity Template** and participate in the same unified decision. Their behavior depends on which **Identities** are included in the request. - If only one **Identity** type is provided, only the **Dynamic Groups** associated with that **Identity Template** are evaluated. - If multiple **Identity** types are included, the **Dynamic Groups** for each **Identity Template** must pass. The relationship between the Identity logic is enforced using **AND** semantics. For example, if a **Policy** contains one **Dynamic Group** for a Human **Identity** and another for an Agent **Identity**, and both **Identities** are present in the request, both **Dynamic Groups** must evaluate successfully. Failure of either results in denial. There is no override or substitution between **Identity** types. **Conditions** behave consistently with the standard evaluation model but operate within a shared multi-Identity context. When a **Condition** references **Identity Attributes**, those attributes are resolved against the corresponding **Identity Template** in the request. If multiple **Identities** are present, all Identity-related **Conditions** must evaluate to true. When using **Identity Attribute** logic, **Rulesets** are evaluated using the referenced **Attribute's Identity Template**. If multiple **Rulesets** reference different **Identity Templates**, all rules must evaluate successfully. ## Scope Configuration Multi-Identity Policy Evaluation is controlled at the **Scope** level through the **Use Multiple Identities Combination** setting. See [Managing Scopes](/v1/docs/managing-scopes) to learn more about enabling this setting. By default, this setting is disabled to preserve backward compatibility. In this mode, Identity logic components such as **Dynamic Groups**, **Conditions**, and **Rulesets** are evaluated using the existing single-Identity behavior. When enabled, Identity logic components from multiple **Identity Templates** within the same **Policy** are evaluated together as part of one authorization decision. ## Request and Response Behavior Multiple **Identities** can be included in a request using the existing `entityTypeId` and `entityId` request parameters. These parameters can represent the primary **Identity**, additional **Identities**, or all **Identities**, depending on the request structure. **Identity Attributes** can be provided for the primary **Identity** as well as for additional **Identities**. Alternatively, multiple JWTs can be included in the request by using multiple identity mappers, each associated with a different **Identity Template**. When the `includeIdentity` flag is used in the request, the response structure reflects the number of evaluated **Identities**: - If a single **Identity** is evaluated, **Identity Attributes** are returned as a single object to maintain backward compatibility. - If multiple **Identities** are evaluated, **Identity Attributes** are returned as a list, with each entry corresponding to one **Identity Template**. --- Multi-Identity Policy Evaluation enables **Policies** to enforce authorization requirements across multiple **Identity** types within a single, unified decision. This supports advanced scenarios such as human-plus-agent authorization while maintaining strict and predictable **Policy** semantics.