indykite-authzen-evaluations — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited indykite-authzen-evaluations (Agent Skill) and scored it 91/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 1 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} is the classic direct prompt-injection phrasing. Placed in a skill body that the agent reads as trusted instructions, it tries to make the agent abandon its prior rules and follow whatever comes next — a full system-prompt override.
ignore/disregard/forget … previous instructions sentence.Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Batch evaluation makes many KBAC decisions in one request. You supply top-level subject / action / resource / context as defaults and an evaluations[] array where each entry overrides only the parts it specifies; the response carries one boolean decision per entry, in order.
This skill covers building and sending the batch request and reading the results. It does not author policies - the 2.0-kbac policies every entry is evaluated against are authored with indykite-authzen-kbac.
Activate this skill when the user wants to:
grace PROVISION?");gpu-node-7?");(subject, action, resource) triples in a single call.Do not activate this skill to make a single yes/no decision (indykite-authzen-evaluation), to enumerate all instances for one probe (the search skills indykite-authzen-search-action / -search-resource / -search-subject), or to author a policy or read/write graph data (batch evaluation only renders decisions).
indykite-authzen-kbac.X-IK-ClientKey value).context.input_params.Decide which parts are constant across the batch (put them at the top level) and which vary (put them in each evaluations[] entry). An entry inherits every top-level part it does not override.
Running example: one action (PROVISION) and one resource (gpu-node-7) are the defaults; the subject varies per entry, and one entry also overrides the resource.
{
"action": { "name": "PROVISION" },
"resource": { "type": "Server", "id": "gpu-node-7" },
"evaluations": [
{ "subject": { "type": "Person", "id": "linus" } },
{ "subject": { "type": "Person", "id": "grace" } },
{ "subject": { "type": "Person", "id": "grace" }, "resource": { "type": "Server", "id": "edge-box-2" } },
{ "subject": { "type": "Person", "id": "dennis" } }
],
"context": { "input_params": { "max_price": 80000 } }
}subject.id / resource.id are node external_ids; action.name is case-sensitive; context.input_params keys are written without the $ and keep their types. A ready body: assets/evaluations-provision-servers.json.
POST <API_URL>/access/v1/evaluationsAuthentication:
X-IK-ClientKey: <AppAgent-credentials-token>.Authorization: Bearer <user-access-token> - applies only in some cases (e.g. a condition references a token claim/scope), where it can flip claim-gated entries.A runnable shell helper: scripts/evaluate-batch.sh — run with --print to preview the curl (host-pinned; tokens redacted).
{
"evaluations": [
{ "decision": false },
{ "decision": true },
{ "decision": false },
{ "decision": true }
]
}The array is positional: evaluations[i] is the decision for request entry i.
A single /evaluation that omits a required partial parameter returns `422`. A batch call does not fail wholesale - it returns 200, and each entry whose matched policy needed the missing parameter comes back as decision: false with a context.reason:
{ "decision": false, "context": { "reason": "invalid_argument: missing or wrong input params, 'max_price'" } }So always distinguish a genuine deny (decision: false, no context) from a missing-input deny (decision: false with context.reason) before concluding access is denied.
When this skill has been applied successfully:
POST /access/v1/evaluations returns an evaluations[] array with one decision per request entry, in order, with top-level parts correctly applied as defaults.decision: false + context.reason (a 200), not mistaken for a request failure.indykite-authzen-evaluation) would return for the same triple.references/evaluations-reference.md - /evaluations: request/response shapes, defaults-and-override semantics, the missing-parameter behaviour, error codes.assets/evaluations-provision-servers.json - runnable batch request body for the PROVISION example.scripts/evaluate-batch.sh - Bash helper that posts a batch request to /access/v1/evaluations (host-pinned; --print to preview).This skill uses generic markdown instructions and works across all agents listed in the README. The agent needs to be able to issue HTTP requests (curl, an HTTP client, or the IndyKite Terraform provider). No Claude Code hooks, Cursor @-mentions, or Copilot workspace context are required.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.