{% load json_filters %}
Structured agentic controls

Only active constraints are shown. Use Add constraint to enable a category — an empty category is never saved. Absent = not checked; explicit false/zero/null stays an assertion. Hover any field for details.

{% if agentic.tools.expected or agentic.tools.forbidden or agentic.tools.allowed %}

Tools

{% else %}
+ Add constraint: Tools
{% endif %} {% if agentic.retrieval.sources or agentic.retrieval.required or agentic.retrieval.min_documents or agentic.retrieval.max_documents or agentic.rerank.required or agentic.rerank.min_calls or agentic.rerank.max_calls %}

Retrieval and reranking

{% else %}
+ Add constraint: Retrieval & reranking
{% endif %} {% if agentic.policy.read_only or agentic.policy.allowed_data_scopes or agentic.policy.forbidden_data_scopes or agentic.policy.forbidden_side_effects or agentic.policy.allowed_destinations or agentic.policy.allow_side_effects %}

Policy

{% else %}
+ Add constraint: Policy
{% endif %} {% if agentic.guardrails.required or agentic.guardrails.must_pass or agentic.guardrails.before_actions or agentic.approvals.required_for or agentic.approvals.must_precede_execution %}

Guardrails and approvals

{% else %}
+ Add constraint: Guardrails & approvals
{% endif %} {% if agentic.handoffs.allowed or agentic.handoffs.forbidden or agentic.handoffs.required or agentic.handoffs.max_handoffs or agentic.handoffs.max_depth %}

Handoffs

{% else %}
+ Add constraint: Handoffs
{% endif %} {% if agentic.trajectory.required_sequence or agentic.trajectory.max_steps or agentic.trajectory.max_retries_per_tool or agentic.trajectory.max_identical_consecutive_calls or agentic.budgets.max_tool_calls or agentic.budgets.max_errors or agentic.state.assertions %}

Trajectory, budgets & state

{% else %}
+ Add constraint: Trajectory, budgets & state
{% endif %} {% if agentic.semantic_judge.enabled or agentic.semantic_judge.criteria %}

Semantic judge

{% else %}
+ Add constraint: Semantic judge
{% endif %}

Enforcement