An MCP proxy that gates risky AI-agent actions. Pauses high-risk tool calls for a human, blocks critical ones outright, and signs every decision into a tamper-evident audit log. Drops into Claude Code's PreToolUse hook.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
evidence-backed
findings quoted directly from the published source artifact — not inferred
last analysis: gone · showing evidence from the last successful analysis (1w ago)
filesystem 39
- fs manumarri-sudo-quill-c5d36d6/experiments/_quill_shim.py :12
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/experiments/agentdojo_harness.py :39
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/experiments/render_artifacts.py :17
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/experiments/scenarios.py :24
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/experiments/vibe_coder_harness.py :23
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/adapters/claude_code.py :64
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/adapters/cursor.py :432
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/approvals.py :31
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/audit.py :33
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/audit_summary.py :28
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/cli.py :22
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/config.py :42
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/decay.py :51
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/doctor.py :15
import shutil - fs manumarri-sudo-quill-c5d36d6/src/quill/esf.py :26
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/exports.py :34
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/githook.py :26
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/hints.py :30
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/insights.py :26
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/integrate.py :20
import shutil - fs manumarri-sudo-quill-c5d36d6/src/quill/journal.py :26
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/learn.py :57
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/learning.py :47
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/notify.py :40
import shutil - fs manumarri-sudo-quill-c5d36d6/src/quill/onboard.py :16
import shutil - fs manumarri-sudo-quill-c5d36d6/src/quill/overnight.py :25
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/paths.py :11
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/pause.py :38
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/pinning.py :29
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/policy.py :203
# Interpreter one-liners that wrap a destructive call. Python's shutil.rmtree, - fs manumarri-sudo-quill-c5d36d6/src/quill/prompt.py :162
with cfg_path.open("rb") as f: - fs manumarri-sudo-quill-c5d36d6/src/quill/receipt.py :25
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/sandbox.py :38
import shutil - fs manumarri-sudo-quill-c5d36d6/src/quill/saves.py :35
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/session_approvals.py :26
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/telemetry.py :35
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/tree.py :17
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/tui.py :24
from pathlib import Path - fs manumarri-sudo-quill-c5d36d6/src/quill/watch.py :33
from pathlib import Path
shell / exec 4
- shell manumarri-sudo-quill-c5d36d6/experiments/vibe_coder_harness.py :19
import subprocess - shell manumarri-sudo-quill-c5d36d6/src/quill/cli.py :586
import subprocess - shell manumarri-sudo-quill-c5d36d6/src/quill/notify.py :42
import subprocess - shell manumarri-sudo-quill-c5d36d6/src/quill/watch.py :28
import subprocess
network 5
- net manumarri-sudo-quill-c5d36d6/src/quill/cli.py :3085
import socket - net manumarri-sudo-quill-c5d36d6/src/quill/notify.py :33
`smtplib`, Slack/webhook use `urllib.request`. - net manumarri-sudo-quill-c5d36d6/src/quill/sandbox.py :7
already allowed to start), raw network egress (a Python `requests.post` - net manumarri-sudo-quill-c5d36d6/src/quill/telemetry.py :261
import urllib.request - net manumarri-sudo-quill-c5d36d6/src/quill/watch.py :26
import socket
secrets 2
- secrets manumarri-sudo-quill-c5d36d6/experiments/agentdojo_harness.py :849
api_key = os.environ.get("ANTHROPIC_API_KEY") - secrets manumarri-sudo-quill-c5d36d6/experiments/vibe_coder_harness.py :641
api_key = os.environ.get("ANTHROPIC_API_KEY")
declared dependencies 7
- anyio@>=4.4
- pydantic@>=2.7
- structlog@>=24.1
- rich@>=13.7
- typer@>=0.12
- mcp@>=1.0
- textual@>=0.85