Grants
A grant issubject → capability:value.
Patterns are deliberately limited to
*, prefix.* and *.suffix. A grant
language nobody can read at a glance is a grant language that gets approved
without being read.
Where grants come from
A workflow’s manifest. Installing it grants exactly what the manifest declared — and an upgrade replaces the set rather than merging, so a version that no longer asks for something actually loses it. You see the list before anything is written:Trust tiers
All three are gated identically by the Broker. The tier says who vouched for the
code, not what it may do.
verify also reports a loop built against a different host ABI. A signature
proves an artifact is intact, not that it still fits — a loop declaring host
functions this KARMAX no longer has would install, run, and be refused on its
first real call, which looks exactly like a loop that decided to do nothing.
Two gates, not one
Every tool call passes both:1
The signed manifest
Is this tool in the
tools: list the operator approved? tool is a single
host function, so a workflow that declares it could otherwise name anything
in the registry.2
The Broker
Has the operator granted
tool:<name> to this subject?tool:* does not let a
workflow call something its manifest never listed.