{{define "content"}}

Capabilities and policies

No action reaches the world except through a capability, and every capability is governed by ALLOW / ASK / DENY rules. The most specific rule wins; on ties the stricter effect wins. Locked capabilities cannot be relaxed.

{{$admin := .Principal.User.Role.AtLeast "administrator"}}

Effective policy matrix mind × capability, for a generic target right now

{{range .Data.Minds}}{{end}}{{range $c := .Data.Capabilities}} {{range $m := $.Data.Minds}}{{$e := index $.Data.Matrix $m.ID $c.Name}}{{end}} {{end}}
CapabilityRiskDefault{{.DisplayName}}
{{$c.Name}}{{if $c.Locked}} locked{{end}}
{{$c.Description}}
{{$c.Risk}}{{$c.DefaultEffect}}{{$e.Effect}}

Rules

{{if .Data.Policies}}{{if $admin}}{{end}}{{range .Data.Policies}} {{if $admin}}{{end}}{{end}}
ScopeCapabilityTargetActionHoursEffectReasonBy
{{if .MindID}}{{index $.Data.MindNames .MindID}}{{else}}global{{end}}{{.Capability}}{{.TargetPattern}}{{.ActionKind}}{{if .HoursFrom}}{{deref_int .HoursFrom}}–{{deref_int .HoursTo}}{{else}}always{{end}}{{.Effect}}{{.Reason}}{{.CreatedBy}}
{{else}}

No rules yet: every capability uses its default (ASK for reads and writes, DENY for locked).

{{end}} {{if .Data.Grants}}

Active session grants

{{range .Data.Grants}}{{end}}
{{index $.Data.MindNames .MindID}}{{.Capability}}{{.TargetPattern}}by {{.GrantedBy}} until {{.ExpiresAt.Local.Format "15:04"}}{{if $.Principal.User.Role.AtLeast "operator"}}
{{end}}
{{end}}
{{if $admin}}

Add rule

ALLOW rules on high-risk capabilities are shown with a warning in the matrix. sudo_shell and delete_database are locked to DENY.

{{end}}
{{end}}