Skip to main content

Policy Behavior

Escalation Routing Configuration

escalation_routing decides who reviews an escalated request: a team queue or one user. You set it on a provider target, or on one model of a target. It does not make a request escalate. A control such as Human Oversight must return escalate first. The gateway then adds the route to the escalation event.

Syntax​

Put the block on a target, or on one entry of its models list. Set exactly one of team_id or user_id:

Inside policy-config.yaml
providers:
  targets:
    - id: <target-id>
      provider: openai
      model: <model>
      secret_key_ref:
        env: VERDICTAN_OPENAI_API_KEY
      escalation_routing:
        team_id: <team-uuid>

Fields​

FieldTypeDescription
team_idstring (UUID)Team that gets the escalation in its queue. Any member can review it.
user_idstring (UUID)User who gets the escalation already claimed. Organization settings decide how the user is notified.

Lint rejects a block with both fields or with neither. It does not check the UUID format or whether the team or user exists. Find the IDs with verdictan team list or verdictan user list, in the Console, or through the API.

Examples​

Use a test agent, and a team or user in the same organization. Replace the example UUIDs.

Route a target to a team​

policy-config.yaml
pack:
  name: config-escalation-routing-provider
  version: 1.0.0
  enabled: true
providers:
  targets:
  - id: openai-prod
    provider: openai
    model: your-openai-model
    base_url: https://api.openai.com
    secret_key_ref:
      env: VERDICTAN_OPENAI_API_KEY
    escalation_routing:
      team_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
policies:
  chain:
  - human-oversight
policy:
  human-oversight:
    action: escalate

Apply the file to the test agent and send a request with stream: false. human-oversight escalates every response. Open Inbox in the same organization, find the request, and check that the team is correct. A person must review it; an escalation is not a finished answer. See Resolve an Escalation.

Route one model to a user​

When one target serves several models, give a model its own route. A request for the model ID or one of its aliases uses that route. A model without its own block uses the route of the target.

policy-config.yaml
pack:
  name: config-escalation-routing-model
  version: 1.0.0
  enabled: true
providers:
  targets:
  - id: openai-production
    provider: openai
    base_url: https://api.openai.com
    secret_key_ref:
      env: VERDICTAN_OPENAI_API_KEY
    escalation_routing:
      team_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
    models:
    - model_id: your-primary-openai-model
      aliases:
      - primary
    - model_id: your-secondary-openai-model
      aliases:
      - secondary
      escalation_routing:
        user_id: f0e1d2c3-b4a5-6789-0fed-cba987654321
policies:
  chain:
  - human-oversight
policy:
  human-oversight:
    action: escalate

Requests for secondary go to the user. Requests for primary go to the team of the target.

Limits and failure behavior​

  • A route never starts an escalation. Human Oversight and Flagged Review are controls that can.
  • The gateway picks the route from the request model. A model that no target declares has no route.
  • The YAML has no default queue. When no route applies, the control plane decides what happens next.
  • Lint does not check that the team or user exists. Check the ID before rollout.

Next steps​