monty-codeact — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited monty-codeact (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Collapse multi-step tool chains into a single sandboxed Python execution using Pydantic Monty — a minimal, secure Python interpreter written in Rust with sub-microsecond startup.
Tools are called as regular Python functions with keyword arguments:
content = view(path="src/main.py")
files = glob(pattern="**/*.py")
hits = grep(pattern="TODO", paths="src")
result = bash(command="git log --oneline -5")
edit(path="config.json", old_str='"debug": false', new_str='"debug": true')Chain by sequencing:
for f in glob(pattern="**/*.py", paths="src"):
content = view(path=f)
if "TODO" in content:
print(f + ": " + str(content.count("TODO")) + " TODOs")python3 scripts/codeact.py --discover # JSON manifest
python3 scripts/codeact.py --instructions # LLM-ready referenceTools are auto-detected based on what's installed on the host.
uv run --with pydantic-monty python3 scripts/codeact.py --auto --workspace . --code '...'Output: {"stdout": "...", "stderr": "...", "return_value": null, "success": true}
Monty runs a subset of Python. Will error on:
class keyword at allmatch/casef"{x:<10}", f"{x:>5}", f"{x:.2f}" all fail"{:<10}".format(x) failsor insteadin checksglob(pattern="src/{db,services}/**/*.py") is supported.Sandbox tool return types (getting these wrong causes retries):
glob(pattern=...) → list of strings like ["src/app.py", "src/utils.py"]view(path=...) → string (file content)mcp_call(server=..., tool=..., ...) → stringbash(command=...) → dict with keys stdout, stderr, returncodeKey usage patterns:
glob() and view() are in the sandbox — discoverfiles inside your codeact program, not with separate tool calls before it.
If the first one fails, fix the bug in the program, don't add a scouting step.
for f in glob(pattern="**/*.py"): to iterate files. No os.walk or os.path.Output formatting workaround (use instead of format specs):
def pad(s, w):
s = str(s)
return s + " " * max(0, w - len(s))Tips: Use chr(10) for newlines. Use import json explicitly. Use string concatenation (+) or simple f-strings (f"count: {n}").
Sandboxed code can only reach the outside world through registered tool functions. Use --workspace to restrict file tools to a directory tree.
uv (recommended) or pip install pydantic-monty~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.