github not analyzable

manumarri-sudo/quill

github

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.

maintainer
manumarri-sudo
license
MIT
first seen
2026-06-09
last seen
2026-06-11
releases · 30d
2
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 0 tools
transport stdio · http counts 0 tools · 0 res · 0 prompts permission surface via code analysis

No tools enumerated yet for this server.

code evidence vv0.2.0a5 · github-tarball
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