{% extends "base.html" %}{% set hide_nav = True %}{% block title %}Keywright decision{% endblock %}{% block body %}

{{ icon('shield') }}Keywright

{% if req %}
{% include "_hazards.html" %}
{{ req.agent.name }} asks for:
{% include "_patterns.html" %}
{% for pats, op in operations(req.detail) %}{% with constraints=op %}{% include "_constraints.html" %}{% endwith %}{% endfor %} {% if req.reason %}
“{{ req.reason }}”
{% endif %}
{{ req.created_at.strftime('%Y-%m-%d %H:%M:%S') }} UTC · status {{ req.status }}
{% if done %}
Recorded: {{ scope_labels[scope] }}. You can close this page.
{% elif req.status != 'pending' %}
This request was already {{ req.status }}{% if req.decision_scope %} ({{ decision_label(req) }}){% endif %}.
{% else %}
Confirm: {{ scope_labels[scope] }}

{% if hazard_blocks(hazard_level(req.detail)) %}Flagged destructive: this allows the exact operation shown once, or denies it. {% endif %}{% if binds_exactly(req.detail) %}This decision covers the exact operation{% if operations(req.detail)|length > 1 %}s{% endif %} shown, for the selected duration.{% else %}This decision covers the listed permission patterns.{% endif %} Review other scope and duration choices in the admin UI.

{% if scope == 'session' %}Session access uses the client-supplied ID and expires within {{ session_cap_minutes }} minutes. {% endif %}Expiry and revocation prevent future calls; running operations continue.

{% if scope == 'deny' %}{% endif %}
{% endif %} {% endif %} {% endblock %}