Willow platform session runtime — MCP client, capability gate, JSONL sessions, Grove bus, tier-0 sync
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed v1.7.1 · analyzer v33 · 1h ago
danger signals1
- dynamic code execution __import__ sink willow_ratatosk-1.7.1/tests/test_key_custody.py :23
assert "ANTHROPIC_API_KEY" not in __import__("os").environ
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 47
filesystem 17
- fs willow_ratatosk-1.7.1/ratatosk/cassette.py :29
from pathlib import Path - fs willow_ratatosk-1.7.1/ratatosk/crown.py :11
from pathlib import Path - fs willow_ratatosk-1.7.1/ratatosk/daemon.py :31
from pathlib import Path - fs willow_ratatosk-1.7.1/ratatosk/history.py :8
from pathlib import Path - fs willow_ratatosk-1.7.1/ratatosk/hooks.py :24
import shutil - fs willow_ratatosk-1.7.1/ratatosk/paths.py :6
from pathlib import Path - fs willow_ratatosk-1.7.1/ratatosk/policy.py :19
from pathlib import Path - fs willow_ratatosk-1.7.1/ratatosk/session.py :9
from pathlib import Path - fs willow_ratatosk-1.7.1/ratatosk/sync.py :7
import shutil - fs willow_ratatosk-1.7.1/ratatosk/tools.py :9
from pathlib import Path - fs willow_ratatosk-1.7.1/ratatosk/traces.py :20
with open(trace_path, "a", encoding="utf-8") as handle: - fs (weak) willow_ratatosk-1.7.1/tests/test_cassette.py :9
from pathlib import Path
show 5 more
- fs (weak) willow_ratatosk-1.7.1/tests/test_fleet_conventions.py :27
from pathlib import Path - fs (weak) willow_ratatosk-1.7.1/tests/test_release_wiring.py :38
from pathlib import Path - fs (weak) willow_ratatosk-1.7.1/tests/test_scans_fire.py :92
from pathlib import Path - fs (weak) willow_ratatosk-1.7.1/tests/test_seal_watcher.py :18
with open(path, "a", encoding="utf-8") as handle: - fs (weak) willow_ratatosk-1.7.1/tests/test_tool_results.py :5
from pathlib import Path
shell / exec 3
- shell willow_ratatosk-1.7.1/ratatosk/hooks.py :26
import subprocess - shell willow_ratatosk-1.7.1/ratatosk/tools.py :7
import subprocess - shell (weak) willow_ratatosk-1.7.1/tests/test_tool_results.py :135
"""subprocess.run(timeout=) signals only the direct child; a program that
network 2
- net willow_ratatosk-1.7.1/ratatosk/ollama.py :15
import requests - net (weak) willow_ratatosk-1.7.1/tests/test_scans_fire.py :1466
target.write_text("import requests\n", encoding="utf-8")
secrets 1
- secrets willow_ratatosk-1.7.1/ratatosk/crown.py :256
key = os.environ.get("ANTHROPIC_API_KEY", "")
database 1
- db willow_ratatosk-1.7.1/ratatosk/history.py :6
import sqlite3
declared dependencies 6
- mcp@>=1.0,<3
- anthropic@>=0.40
- requests@>=2.31
- pytest@>=8
- pyyaml@>=6
- tomli@>=2; python_version<