Skip to main content

Agent Do/Don't

A rules engine between an AI agent and its tools, built assuming the model can be hijacked by anything it reads. The model proposes; the rules decide: do it, ask you, or refuse.

This package contains the MCP proxy. It works with any agent that uses MCP tools, such as Claude Code, Claude Desktop, or your own. It sits between the agent and an MCP server, and neither of them needs any changes. It needs nothing beyond the Python standard library. The project also includes an Android app with the same rules (GitHub).

Status: experimental.

What it does

Suppose an agent reads a web page with hidden instructions telling it to email your notes to helpdesk@evil.example. If the model falls for it, the proxy sees the session has read untrusted content, and refuses the email: that address isn't one of yours. The call never reaches the email server.

  • Taint. After a tool returns untrusted content, the session counts as untrusted from then on. This holds across every server the agent uses, and questions name where the content came from.
  • Where data goes. URLs, email addresses and phone numbers in a call's arguments are checked against your lists. Once the session is tainted, an address you haven't listed is refused, not asked. Before that, a new address asks.
  • Risk. It reads the server's tool annotations the cautious way. A tool with no annotations counts as possibly irreversible and asks.
  • Presets. Built-in corrections for popular servers (filesystem, GitHub, Gmail via workspace-mcp) are picked automatically from the server's command.
  • Your settings. You can set any tool to "do it", "ask" or "never", and there's a rate limit.
  • Asking. Questions appear in the client (MCP elicitation). If the client can't ask, the call is refused, never run silently.
  • Log. Every decision goes to ~/.agentdodont/mcp-audit.jsonl.

Set up

Start the proxy in place of the server, with the server's own command after --. With uv installed, nothing else needs installing. For Claude Code:

claude mcp add fetch -- uvx agentdodont mcp-proxy --rules /path/to/mcp-rules.json --name fetch -- uvx mcp-server-fetch

Or put this in .mcp.json in your project:

{
  "mcpServers": {
    "fetch": {
      "command": "uvx",
      "args": ["agentdodont", "mcp-proxy", "--rules", "/path/to/mcp-rules.json", "--name", "fetch",
               "--", "uvx", "mcp-server-fetch"]
    }
  }
}

Claude Desktop uses the same entry in claude_desktop_config.json. Without uv, run pip install agentdodont and use "command": "agentdodont" with the same arguments minus the first "agentdodont".

A rules file is optional. Every field in it is optional too:

{
  "allowed_sites": ["wikipedia.org", "github.com"],
  "known_recipients": ["dana@example.com"],
  "levels": {"read_*": "auto", "delete_*": "ask", "get-env": "deny"},
  "tools": {"send_message": {"destination_args": {"channel": "recipient"}}}
}

More

Apache License 2.0.

Metadata

Release files for agentdodont 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agentdodont 0.1.2
File Size Uploaded Provenance Actions
agentdodont-0.1.2.tar.gz 71.7 kB With provenance Details for agentdodont-0.1.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for agentdodont 0.1.2
File Interpreter ABI Platform Actions
agentdodont-0.1.2-py3-none-any.whl Python 3 none any Details for agentdodont-0.1.2-py3-none-any.whl

Total release size: 132.6 kB

Release files / agentdodont-0.1.2.tar.gz

Download URL agentdodont-0.1.2.tar.gz
Size 71.7 kB
Tags Source
SHA-256 checksum
How to use checksums
09acbe82e2d2ba03dbd24df84db1c9403e286a4307826c99ef6078b39dd54b11
BLAKE2b-256 checksum
How to use checksums
d62b2213c784beeac244cc43871cfdf212caf937f8a78ed730e895fed194a8bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 9, 2026.

Transparency log

Release files / agentdodont-0.1.2-py3-none-any.whl

Download URL agentdodont-0.1.2-py3-none-any.whl
Size 60.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f81c6162cc8f2ef68519a4d1c17a04354a90be133afef462166557f134afb380
BLAKE2b-256 checksum
How to use checksums
6ba7bcc0617cbfdf09a9f1cf554d52475abd7f0219e5ca1a369dfb30268be4e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 9, 2026.

Transparency log

Security for agentdodont 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for agentdodont-0.1.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 9, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page