audit-agents

audit-agents is a skill for Claude Code from taoq-ai/ziran. It costs 100 tokens per session (1,441 once invoked), scanned A, original, Apache-2.0.

A review process for AI agent definitions and code that uses ZIRAN to find dangerous combinations of tools. It explains each finding, suggests the smallest tool change, and can create a baseline that makes continuous integration fail if access expands.

In plain words
What is it for?
Use it to inspect Claude Code subagents, plugins, or Python agents, review findings, propose safer tool lists, and enforce those limits in CI.
Why use it?
It helps identify data-exfiltration and similar attack paths before an agent runs. The baseline also makes later increases in tool access visible during code review.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: reads .claude/ paths; mentions .claude-plugin; mentions subagents.

Part of the ziran plugin — 4 skills shipped together

Good fit Use it to inspect Claude Code subagents, plugins, or Python agents, review findings, propose safer tool lists, and enforce those limits in CI.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/taoq-ai/ziran/audit-agents
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add taoq-ai/ziran --skill audit-agents
Clone the repo
git clone --depth 1 https://github.com/taoq-ai/ziran

Made for: Claude Code.

Or install ziran, the plugin that ships this one along with the rest of its 4 skills.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for audit-agents

README.md
[![agentmods](https://agentmods.dev/badge/skills/taoq-ai/ziran/audit-agents/github.svg)](https://agentmods.dev/skills/taoq-ai/ziran/audit-agents)
Your own site
<a href="https://agentmods.dev/skills/taoq-ai/ziran/audit-agents"><img src="https://agentmods.dev/badge/skills/taoq-ai/ziran/audit-agents/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for audit-agents

Your own site · 80×15
<a href="https://agentmods.dev/skills/taoq-ai/ziran/audit-agents"><img src="https://agentmods.dev/badge/skills/taoq-ai/ziran/audit-agents.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 100 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,441 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00100 $0.01441
Opus 5.5 $0.00040 $0.00576
Sonnet 5.5 $0.00020 $0.00288
Haiku 4.5 $0.00010 $0.00144

Measured 3d ago against content hash 87c9750b066f, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

audit-agents scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/ziran/skills/audit-agents/SKILL.md · 113 lines

How it starts

The opening of the file, as written. The whole thing — 113 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Audit agents with ZIRAN

ziran audit reads agent definitions without running them, maps each declared tool to a capability and walks the pairs for dangerous chains (a file reader plus a URL fetcher is a data exfiltration path). No LLM, no API key. Your job is the part the CLI does not do: decide which findings are real for this agent, explain the attack in one sentence, and propose the smallest change that removes it.

Check ziran is available

Run ziran --version. It needs ziran>=0.42.0. If it is missing, offer pip install "ziran>=0.42.0" (or uv tool install ziran); do not install without asking.

Run the audit

PATH is a plugin root (has .claude-plugin/plugin.json), a directory with .claude/agents/, a directory named agents, a single agent .md file, or Python agent source.

ziran audit <PATH> --format json

Read the JSON, not the table: each row has rule, severity, file, line, message, agent and tools. Exit code 0 passed, 1 failing findings, 2 usage error (bad path or file). Add --severity high to hide medium and low rows.

Interpret the rules

Rule Meaning What to tell the user
CC001 A dangerous chain over the agent's tools, e.g. data_exfiltration via Read -> WebFetch Name the chain type, say how an injected instruction would use it, and give its ATLAS techniques from atlas-chains.md.
SA003 A dangerous tool on its own (Bash, WebFetch, Write ...) Ask whether the agent's task needs it.
SA004 A wildcard tool (Bash(*), mcp__server, mcp__server__*) Replace with the specific tools or rules it uses.
SA007 No tools: key, so the agent inherits every tool Almost always fix: add an explicit list.
SA001 A secret pattern in the prompt, description or tools Treat as a leaked credential: rotate it, then remove it. Cite file and line; never repeat the secret value.
CC000 The agent file could not be parsed Fix the frontmatter first; other results are incomplete.
BL001-BL004 Widening against a baseline: new tool, lost tools: key, new chain, new agent See "Baseline" below.

Read the full file on GitHub · 113 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 113 lines · 100 tokens per session scan A 87c9750b066f

Subscribe to this mod's changes

audit-agents is a skill published in the GitHub repository taoq-ai/ziran (11 stars, last pushed yesterday), licensed Apache-2.0. It adds 100 tokens to every session and 1,441 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-19.

Related

Other skills, from other repositories

integrate-arcjet-guard-agents

Integrate Arcjet security into a Vercel AI SDK (v7) application using @arcjet/guard — wrap agent tools with guard checks, enforce rules on risky app actions, and emit audit events joined by one correlation ID. Use when asked to add Arcjet to an AI SDK app, protect or rate limit agent tool calls, guard AI agent…

arcjet/arcjet-js · 91 tokens

integrate-arcjet-guard-claude-agent-sdk

Integrate Arcjet security into a Claude Agent SDK agent using @arcjet/guard — wrap tool() handlers, screen inbound prompts with UserPromptSubmit, and deny unwrapped built-in/MCP tools with PreToolUse. Use when asked to add Arcjet to a Claude Agent SDK or Claude Code agent, rate limit its tools, screen inbound…

arcjet/arcjet-js · 92 tokens

integrate-arcjet-guard-eve

Integrate Arcjet security into a Vercel Eve agent using @arcjet/guard — add guard gates to tools and connections, screen inbound messages, and record agent lifecycle events correlated to the session. Use when asked to add Arcjet to an Eve agent, rate limit its tools, guard connection access, or screen inbound messages.

arcjet/arcjet-js · 77 tokens

integrate-arcjet-guard-langchain

Integrate Arcjet security into a LangChain JS createAgent using @arcjet/guard — wrap tool() / StructuredTool, put guardMiddleware on createAgent({ middleware }) for MCP / unwrapped tools, and read configurable.threadid for correlation. Use when asked to add Arcjet to langchain createAgent, rate limit its tools, screen…

arcjet/arcjet-js · 101 tokens

integrate-arcjet-guard-genkit

Integrate Arcjet security into a Genkit JS agent using @arcjet/guard — wrap ai.defineTool, put guardMiddleware on generate({ use }) for unwrapped / MCP / filesystem tools, and read a caller-owned id from generate({ context }). Use when asked to add Arcjet to genkit, rate limit its tools, screen inbound messages, or…

arcjet/arcjet-js · 89 tokens

integrate-arcjet-guard-langgraph

Integrate Arcjet security into a LangGraph Graph API agent using @arcjet/guard — wrap tool() / StructuredTool, wrap ToolNode for unwrapped MCP tools, and read threadid for correlation. Use when asked to add Arcjet to a LangGraph StateGraph / ToolNode agent, rate limit its tools, screen inbound messages, or block…

arcjet/arcjet-js · 87 tokens