Your agent config says the guard is on. The script is gone. Nothing told you.
How it works
No AI, no network on check. Read the config, read the disk, compare. Same tree in, same findings out, every time.
- 143 checks, each labeled spec-required, vendor-recommendation, security, internal-consistency, or heuristic.
- No network — check never opens a socket.
- Writes nothing — the scanned tree is left untouched.
- Spec-required checks cite a published line in docs/spec/. Heuristics stay at info and are labeled.
What 2.0.0 reads
- Codex: .codex/hooks.json and [hooks] in config.toml, and the same files under --global.
- Antigravity: rules, skills, and hooks. url is an alias of serverUrl.
- Cursor: ~/.cursor/hooks.json and ~/.cursor/mcp.json under --global.
- Gemini: hooks in .gemini/settings.json and in the user file under --global.
- Kiro: hooks, skills, and agents. SessionEnd, PreCompact, and PostCompact are triggers.
- Devin CLI: hooks, MCP, and skills, beside the Windsurf contract.
- Copilot: user mcp-config.json under --global.
- Cline, Roo, Kilo, and Junie skill directories.
- VS Code: .github/agents/*.agent.md frontmatter hooks.
- Claude: user hooks, MCP, and agents under --global. CLAUDE_CONFIG_DIR also moves ~/.claude.json.
- Every finding carries provenance.
Still unread: Cline hooks and agents, ~/.cursor/skills/, OpenCode's global config, ~/.continue/config.yaml, Windsurf auto-generated memories, Copilot policy hooks, and plugin hooks.json. .claude/settings.json stays Claude. Antigravity httpUrl does not launch a server. Kiro agents are inventory only and add no rule id.
Why the tool looks like this
An earlier build reported 37 findings across 17 real projects of which 25 were false — two checks had been written from what real projects looked like instead of from the spec. Both were deleted. Spec-required checks cite a published line in docs/spec/. Heuristics stay at info and are labeled. 1.0.0 was the first stable release. 2.0.0 ships 143 checks, still offline on check. 2.0.0 accepts only printed rule ids in ignoreRules, ignoreFindings, and explain. thresholds.skillDescriptionBytes and thresholds.skills are rejected; the listing budget is thresholds.skillListingChars.
Run it in 30 seconds
Point it at a project with agent config. On Node 20.11+ or Bun — the published bin is a single bundled file.
npx @chimix/agentscan checkFor agents
Agents forget the audit. The skill tells them to run it before they edit a hook or claim a guard is on.
When hooks · skills · MCP · AGENTS.md · skills-lock.jsonDo npx @chimix/agentscan@latest --output promptdo not skip claude.hook.missing-script (error)Don't write the tree · guess if a hook is valid