{% macro rule_list(rules) -%}
    {% for rule in rules %}
  1. {{ rule.index }}
    {{ rule.effect }} {{ rule.server }} {{ rule.target }} {% if rule.budget %}{{ rule.budget }}{% endif %}
    {% if rule.note %}
    {{ rule.note }}
    {% endif %}
  2. {% endfor %}
{%- endmacro %} {% macro rules_card(rules) -%}

RULES · {{ rules | length }}

{{ rule_list(rules) }}

A call needs a matching allow rule and no matching deny; what no rule names is denied. The number is the rule's place in the stored document, as tool errors and the audit name it.

{%- endmacro %} {% macro servers_card(servers) -%}

SERVERS · {{ servers | length }}

Url, credential and limits live on the catalog entry, not here. A Run copies the entries when it is created.

{%- endmacro %} {% macro grants_card(grants, listing) -%}

SECRETS GRANTED TO AGENTS · {{ grants | length }}

{% if listing %}

secrets__list answers {{ "this name" if grants | length == 1 else "these " ~ (grants | length) ~ " names" }}, never a value

{% endif %}

A value the agent has read belongs to the agent: it may reach the model provider, its own files and the console log. naos never shows it. Create, rotate and delete under Secrets.

{%- endmacro %}