{% from "partials/mcp_cards.html" import grants_card, rules_card, servers_card %} {% macro facts(items) -%}
{% for fact in items %}
{{ fact.label }}
{{ fact.value }}
{% endfor %}
{%- endmacro %}
{% for table in policy.tables %}

{{ table.title }}

{% if table.rows %} {% for column in table.columns %}{% endfor %} {% for row in table.rows %} {% for cell in row %} {% endfor %} {% endfor %}
{{ column }}
{{ cell.text }}
{% else %}

{{ table.empty }}

{% endif %}

{{ table.note }}

{% endfor %} {% if policy.kind == "mount" %}

WORKDIR

Workdir
{{ policy.workdir }}

The agent's tmux session starts here. A host path outside the allowed mount roots is refused when the policy is created.

{% elif policy.kind == "shell" %}

CAPABILITIES · {{ policy.capabilities | selectattr("granted") | list | length }} OF {{ policy.capabilities | length }}

    {% for item in policy.capabilities %}
  • {{ "✓" if item.granted else "—" }} {{ item.name }} {{ item.note if item.granted else "not granted" }}
  • {% endfor %}

A shell policy grants capabilities and nothing else; limits are constants of the gate.

{% elif policy.kind == "mcp" %} {{ rules_card(policy.rules) }} {% elif policy.kind == "model" %}

PROVIDERS · {{ policy.providers | length }}

    {% for provider in policy.providers %}
  • {{ provider.name }} {{ provider.url }}
    api {{ provider.api }}
    models {{ provider.models }}
    credential {{ provider.credential }} {{ provider.limits }}
  • {% endfor %}

A key appears by the name of its secret only; its value never leaves the API. One model belongs to one provider.

{% endif %}

CANONICAL DOCUMENT

{{ policy.canonical }}
{% if policy.canonical_note %}

{{ policy.canonical_note }}

{% endif %}

IDENTITY

{{ facts(policy.identity) }}

{{ identity_note }}

{% if policy.kind == "model" %}

BUDGET · PER RUN

{{ facts(policy.budget) }}

{{ budget_note }}

{% endif %} {% if policy.kind == "mcp" %} {{ servers_card(policy.servers) }} {{ grants_card(policy.grants, policy.listing) }} {% elif policy.kind == "model" %}

SECRETS · {{ policy.secrets | length }}

{{ facts(policy.secrets) }}

{{ secrets_note }}

{% else %}

ENFORCEMENT

{{ facts(policy.enforcement) }}

{{ policy.enforcement_note }}

{% endif %}