mcpField
A
agent-safety-audit

agent-safety-audit

github.com/dmokaSecurity2184 installsUpdated 5w ago
Repository

About agent-safety-audit

agent-safety-audit is a skill for assessing an agent environment’s security. It inventories untrusted inputs, private data access, and data-exfiltration paths, then identifies the least costly leg to remove. Checklists and read-only scripts support the audit.

Key features

  1. 01Inventory tools, connectors, and credentials
  2. 02Trace untrusted text entry points
  3. 03Identify private data access scope
  4. 04List data-exfiltration paths
  5. 05Prioritize fixes by cost

Use cases

  1. 01Check whether an agent has all three conditions for data leakage
  2. 02Audit MCP connectors and network rules
  3. 03Review security settings for unattended tasks

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/dmoka/skills --skill agent-safety-audit

After installing, type/agent-safety-auditin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

examples/
claude-code-routine-email-to-pr.md
hermes-coding-employee.md
references/
checklists.md
fixes.md
trifecta.md
scripts/
inventory.sh
probe.sh

Details

From the project README

Agent safety audit

An agent that can read your private data, reads text a stranger wrote, and can send data out can be talked into leaking that data by one crafted message. The prompt does not stop it reliably. Removing one of the three legs does. Your job: find the three legs in this setup, show exactly what opens each one, and name the cheapest one to cut.

Read references/trifecta.md once if the terms are new to you.

Steps

  1. Inventory. Run scripts/inventory.sh <path> on the repo or config folder (read-only; it prints file names, tool lists and env var NAMES, never values). Add what the files can't show by asking the user: which connectors or MCP servers are attached, which network rule the environment uses, what runs unattended and on which trigger. Done when you can list every tool, connector, token, mounted folder and network rule the agent has, and where each one is configured.
  2. Untrusted input. List every way text the user did not write reaches the agent: emails, issues, PR comments, web pages it fetches, dependency READMEs, documents, webhook payloads, other agents' output. Done when each item names its entry point.
  3. Private data. List what the agent can read that should not become public: secrets and tokens (including ones mounted read-only), mailboxes, private repos, a notes or brain repo, customer data, cloud credentials. Note the scope: the whole mailbox or one inbox, one repo or all of them. Done when each item names where the agent gets it.
  4. Ways out. List every path data can leave by: network egress (open, or an allowlist, and whether it allows whole domains), send/forward/post tools, webhooks, git push, public PRs, issues and gists, commit messages, anything that syncs automatically after the agent writes (a brain or wiki pushed by a job). Done when each item names what enables it.
  5. Verdict. If one session has all three, say so first, in one line, and list the items that make it so. If it has two, say which one is missing and what would add the third (a new connector, a web tool, a token). Use references/checklists.md for the platform.
  6. Fixes, cheapest leg first. For each finding, give the smallest change that removes a leg, from references/fixes.md: which setting, which file, what it cuts, what it costs the job. Prefer removing a leg over adding a filter. Then list what stays true after the fixes (the honest limits).
  7. Optional probes, only with the user's OK. scripts/probe.sh checks from inside the agent's environment whether an outside site is reachable, whether env vars are readable, and whether known secret files exist. It prints yes/no only, never values.

Report as: the verdict line, then one table per leg (item · where it's configured · risk), then the fixes, then the limits. Two real audits: examples/.

Gotchas

  • Connector and MCP calls don't go through the network allowlist. A tight allowlist says nothing about a Gmail or Slack connector that can send.
  • An allowlisted domain can be the way out. discord.com allows every webhook on Discord, not just yours; EchoLeak left through an allowlisted Microsoft domain.
  • "Read-only" is not "safe". A read-only token or mounted secret is still readable, and reading is how it leaks. Ask what can read it, not what can write with it.
  • A pattern guard (a hook that blocks curl to unknown hosts) narrows the way out; it is not a wall. An agent can build the URL in a variable or a file. Count it as a speed bump.
  • Automatic sync is a way out and a way in. A job that commits and pushes whatever the agent wrote turns one poisoned note into a change every other agent reads.
  • Multi-repo sessions can drop per-repo safety. A Claude Code cloud session with several repositories doesn't load any repo's hooks or permission rules.
  • The prompt is not a leg. "Never follow instructions in emails" helps; count it in the limits, never as a fix.

Last verified: 2026-09-29 with Claude Code 2.1.284 (audits of a repo, a routine and a negative control)

Comments

Markdown supported