failshut
Audits Codex permission hooks and deny/ask rules to verify they fail shut rather than silently fail open.
failshut
Tell you, in one command, whether your AI coding-agent permission hooks and deny/ask rules actually fail shut — or silently fail open.
You configured deny/ask/hooks for Claude Code, Codex, or OpenCode. After an upgrade, does policy still hold — or did a harness quirk turn it into a silent allow? failshut audit pressurizes the config manifold and reports every joint that bubbles.
Pain this comes from (see Coverage for what v0.1 actually detects): claude-code#32990 · claude-code#102649 · opencode#55728 · opencode#55814 · opencode#55909 · codex#54298 · codex#54440 · codex#54448 · claude-code#102582
Install
# Linux amd64 example — see Releases for darwin/windows + arm64
curl -sL https://github.com/Blackman99/failshut/releases/download/v0.1.1/failshut_0.1.1_linux_amd64.tar.gz | tar xz
./failshut auditOr: go install github.com/Blackman99/failshut/cmd/failshut@latest
Related MCP server: agent-guard
Usage
failshut audit
failshut audit --project ~/code/my-app # also scans <project>/.claude and opencode.json
failshut audit --json
failshut mcp # read-only: audit_report, list_findingsSample FAIL OPEN output:
FAIL OPEN — 1 finding(s) where policy may not hold:
[1] hook-missing (claude-code)
file: /home/you/app/.claude/settings.json
evidence: PreToolUse command "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-src-writes.sh" runs /home/you/app/.claude/hooks/block-src-writes.sh — missing
fix: Restore the hook script or fix the path. A hook that cannot start exits non-2, and Claude Code lets the tool call through.
Summary: 1 FAIL OPEN · 5 FAIL SHUT checks · 1 config(s)
Exit 1 on any FAIL OPEN · 0 if sealed or nothing configured.
v0.1 is static. It does not intercept live tool calls (--canary → not in v0.1).
Rules
ID | Catches |
| Claude Code hook whose script is missing or not executable. The command is parsed like a shell would: |
| OpenCode |
| OpenCode agent (incl. |
|
|
| Heuristic Codex approval/sandbox mismatches (see Coverage) |
| Heuristic hook-ask + auto-allow pairing (see Coverage) |
Coverage
What v0.1 detects from config alone, issue by issue. Being honest here is part of the product.
Issue | Status | Notes |
Detected |
| |
Detected after the fact |
| |
Detected |
| |
Detected when the agent is configured |
| |
Partial | Only | |
Not detected | Codex's | |
Not detected | Windows runtime bug; nothing in config shows it. | |
Not detected | Delegation policy is chosen by the service, not by a local config key. | |
Not detected | Hook |
Docs & site
https://blackman99.github.io/failshut/ · docs
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Proves AI-generated Python does what you asked: lint, types, security, sandbox run, exact fixes.
- EnokiOAuthai.enokilabs
Test your AI agents for security and safety weaknesses, and re-verify the fixes.
Lets coding agents check their own code for leaked secrets, risky dependencies and AI-code mistakes
Pre-execution governance for AI agents. Deterministic PASS/FAIL/REVIEW verdicts, replayable proof.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAudit any MCP server for tool-poisoning, prompt-injection, and data-exfiltration risk before connecting an agent.MIT
agent-guardprivate
AlicenseAqualityAmaintenanceSafety checks an agent runs before it acts — flags malicious packages, destructive shell commands, secret leaks, and web-backend holes before execution.812 PyPIMIT- AlicenseNot gradedqualityCmaintenanceAudits AI agent skills for safety using static, semantic, adversarial, and supply-chain analysis, providing scores and risk flags. Can be run via CLI, CI, or as an MCP tool from Claude Code, Cursor, and Codex.17 PyPI2Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables enterprise MCP security auditing through 12 deterministic no-LLM tools for evidence-gated claims, skill/prompt supply-chain audits, token profiling, and server auth-mode checks.MIT