indykite-authzen-search-resource — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited indykite-authzen-search-resource (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.
Resource search asks the AuthZEN endpoint: which resources may this subject perform a given action on? Given one subject, one action, and a resource type, it returns the matching resource instances under the project's currently ACTIVE KBAC policies and current graph state.
It is one of three AuthZEN search endpoints, each pinning two of the three (subject, action, resource) parts and enumerating the third:
| Endpoint | Pinned | Enumerates | Skill |
|---|---|---|---|
/search/action | subject + resource | actions | indykite-authzen-search-action |
/search/resource | subject + action | resources | this skill |
/search/subject | resource + action | subjects | indykite-authzen-search-subject |
This skill covers building and sending the request and reading the results. It does not author policies - the 2.0-kbac policies these results are evaluated against are authored with indykite-authzen-kbac.
Activate this skill when the user wants to:
linus PROVISION?", "which documents can this user read?");Do not activate this skill for a single yes/no decision (indykite-authzen-evaluation), to enumerate actions or subjects instead (the sibling search skills), or to author a policy or read/write graph data (search only lists resources).
subject.type / resource.type and actions cover the question. If none exist, author them first with indykite-authzen-kbac; search over an empty policy set returns {"results": []}.X-IK-ClientKey value).context.input_params.If a prerequisite is missing, say so - an empty result set from a missing policy or absent node looks identical to a real "nothing permitted".
Resource search fixes the subject and the action, and searches across resources of a given type:
| Part | Field | Example |
|---|---|---|
| subject | subject.type + subject.id | Person / linus |
| action | action.name | PROVISION |
| resource | resource.type only | Server (no id) |
Do not set resource.id - the instances are what the search returns.
{
"subject": { "type": "Person", "id": "linus" },
"resource": { "type": "Server" },
"action": { "name": "PROVISION" },
"context": { "input_params": { "max_price": 4000 } }
}Include context.input_params only if a candidate policy references a $name partial parameter; supply each key without the $, correctly typed. A ready body: assets/search-resource-request.json.
POST <API_URL>/access/v1/search/resourceAuthentication:
X-IK-ClientKey: <AppAgent-credentials-token>.Authorization: Bearer <user-access-token> - applies only in some cases; when supplied it can narrow the results.A runnable shell helper: scripts/search-resource.sh — run with --print to preview the curl (host-pinned; tokens redacted).
{ "results": [ { "type": "Server", "id": "edge-box-2" } ] }Each results[] entry is a resource (type + id, the external_id) the subject may perform the action on. An empty results array is a normal 200 meaning nothing of that type is permitted - not an error.
Empty or surprising results usually trace to: resource.id accidentally set (it takes resource.type only), the action not matching a policy, subject.id not being an external_id, a $param missing/mistyped (tightening max_price shrinks the set), or the resource nodes being absent. Full checklist: references/search-resource-reference.md.
When this skill has been applied successfully:
POST /access/v1/search/resource returns a results array of resource instances (type + id) a subject may perform the given action on, under current ACTIVE policies and graph state (an empty array means nothing of that type permitted — a normal 200)./access/v1/evaluation) results for the same triples.references/search-resource-reference.md - endpoint, auth, request/response shape, error codes, troubleshooting, sibling endpoints.assets/search-resource-request.json - runnable resource-search request body for the linus PROVISION Server example.scripts/search-resource.sh - Bash helper that posts a search request to /access/v1/search/resource (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.