Batched file operations for autonomous Claude Code runs. Collapses N reads/greps/globs into one Bash round-trip — fewer output tokens, less cache growth, less wall time.
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 commit 083ca21 · analyzer v33 · 6h ago
skills & prompt files 1
danger signals12
- dynamic code execution __import__() Digital-Process-Tools-claude-supertool-083ca21/tests/test_adapter_wall_is_not_a_verdict_1604.py :293
module = __import__(module_name) - dynamic code execution eval()/exec() Digital-Process-Tools-claude-supertool-083ca21/tests/test_custom_ops.py :814
argv = eval(captured.read_text(encoding="utf-8")) - dynamic code execution eval()/exec() Digital-Process-Tools-claude-supertool-083ca21/tests/test_devto.py :652
return eval(proc.stdout.strip()) - dynamic code execution eval()/exec() Digital-Process-Tools-claude-supertool-083ca21/tests/test_guard_narrower_than_the_command_1421.py :512
eval(annotation, namespace) # noqa: S307 - our own module's own text - dynamic code execution eval()/exec() Digital-Process-Tools-claude-supertool-083ca21/tests/test_hashnode.py :403
return eval(proc.stdout.strip()) - dynamic code execution eval()/exec() Digital-Process-Tools-claude-supertool-083ca21/tests/test_py_syntax_names_its_limit_1100.py :69
exec(compile(f.read_text(encoding="utf-8"), str(f), "exec"), {}) - suspicious endpoint 169.254.169.254 (cloud metadata) Digital-Process-Tools-claude-supertool-083ca21/tests/test_image_fetch_ssrf_817.py :159
"http://169.254.169.254/latest/meta-data/iam/security-credentials/role", - committed secret GitLab token Digital-Process-Tools-claude-supertool-083ca21/tests/test_git_resolve_child_stderr_redaction_925.py :37
glpat-…(26 chars, redacted) - committed secret Anthropic key Digital-Process-Tools-claude-supertool-083ca21/tests/test_git_resolve_child_stderr_redaction_925.py :38
sk-ant…(33 chars, redacted) - committed secret GitLab token Digital-Process-Tools-claude-supertool-083ca21/tests/test_paste_backup_mode_1685.py :69
glpat-…(26 chars, redacted) - committed secret GitHub token Digital-Process-Tools-claude-supertool-083ca21/tests/test_secret_redaction_760.py :143
ghp_01…(40 chars, redacted) - committed secret Stripe live key Digital-Process-Tools-claude-supertool-083ca21/tests/test_secret_redaction_760.py :322
sk_liv…(28 chars, redacted)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 1481
filesystem 399
- fs (weak) Digital-Process-Tools-claude-supertool-083ca21/.github/scripts/check_encoding_seam.py :32
from pathlib import Path - fs (weak) Digital-Process-Tools-claude-supertool-083ca21/.github/scripts/check_meta_guards.py :39
from pathlib import Path - fs (weak) Digital-Process-Tools-claude-supertool-083ca21/.github/scripts/coverage_gate.py :154
from pathlib import Path - fs (weak) Digital-Process-Tools-claude-supertool-083ca21/.github/scripts/duration_report.py :115
from pathlib import Path - fs (weak) Digital-Process-Tools-claude-supertool-083ca21/.github/scripts/generate_shipped_reference.py :79
with open(os.path.join(REPO_ROOT, ".supertool.json"), encoding="utf-8") as fh: - fs (weak) Digital-Process-Tools-claude-supertool-083ca21/.github/scripts/junit_summary.py :48
from pathlib import Path - fs (weak) Digital-Process-Tools-claude-supertool-083ca21/.github/scripts/lint_new_files.py :111
import shutil - fs Digital-Process-Tools-claude-supertool-083ca21/.oss/assemble_changelog.py :79
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/.oss/statusline.py :37
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/_supertool.py :135
import shutil - fs Digital-Process-Tools-claude-supertool-083ca21/formatters/php-cs-fixer/php-cs-fixer.py :17
import pathlib - fs Digital-Process-Tools-claude-supertool-083ca21/formatters/phpcbf/phpcbf.py :17
import pathlib
show 28 more
- fs Digital-Process-Tools-claude-supertool-083ca21/formatters/prettier-write/prettier-write.py :18
import pathlib - fs Digital-Process-Tools-claude-supertool-083ca21/formatters/ruff-format/ruff-format.py :24
import pathlib - fs Digital-Process-Tools-claude-supertool-083ca21/hooks/guard-selftest.py :58
import shutil - fs Digital-Process-Tools-claude-supertool-083ca21/hooks/pre_bash_guard.py :150
with open(os.path.join(directory, name), encoding="utf-8") as fh: - fs Digital-Process-Tools-claude-supertool-083ca21/hooks/shipped_rules.py :168
with open(index, encoding="utf-8") as handle: - fs Digital-Process-Tools-claude-supertool-083ca21/notifiers/cursor-witness/listen.py :37
try: os.unlink(sock_path) - fs Digital-Process-Tools-claude-supertool-083ca21/presets/_board.py :23
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/_checks.py :26
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/_classify_render.py :134
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/_git_run.py :44
import shutil - fs Digital-Process-Tools-claude-supertool-083ca21/presets/_http.py :594
with open(tmp, "wb") as fh: - fs Digital-Process-Tools-claude-supertool-083ca21/presets/_image_root.py :224
fd = os.open(root, os.O_RDONLY | os.O_DIRECTORY | os.O_NOFOLLOW) - fs Digital-Process-Tools-claude-supertool-083ca21/presets/_mirror.py :66
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/_publish_safety.py :26
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/_remote_default.py :22
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/_st_hint.py :76
with open(path, "rb") as fh: - fs Digital-Process-Tools-claude-supertool-083ca21/presets/_statusline_fragments.py :129
os.unlink(tmp) - fs Digital-Process-Tools-claude-supertool-083ca21/presets/_untrusted.py :385
file directly with `open(target, "rb")` and `.decode("utf-8", - fs Digital-Process-Tools-claude-supertool-083ca21/presets/bluesky/_atproto.py :19
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/bluesky/_auth.py :24
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/bluesky/follow.py :15
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/bluesky/like.py :15
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/bluesky/list.py :10
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/bluesky/publish.py :25
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/bluesky/read.py :10
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/bluesky/repost.py :7
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/bluesky/search.py :10
from pathlib import Path - fs Digital-Process-Tools-claude-supertool-083ca21/presets/bluesky/status_since.py :13
from pathlib import Path
359 more not shown — this panel samples each group; the count above is the real total.
shell / exec 307
- shell (weak) Digital-Process-Tools-claude-supertool-083ca21/.github/scripts/check_encoding_seam.py :30
import subprocess - shell (weak) Digital-Process-Tools-claude-supertool-083ca21/.github/scripts/coverage_gate.py :22
drive a preset by spawning it (`subprocess.run([sys.executable, DIFF, ...])`), - shell (weak) Digital-Process-Tools-claude-supertool-083ca21/.github/scripts/lint_new_files.py :112
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/.oss/statusline.py :34
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/_supertool.py :138
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/formatters/php-cs-fixer/php-cs-fixer.py :19
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/formatters/phpcbf/phpcbf.py :19
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/formatters/prettier-write/prettier-write.py :20
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/formatters/ruff-format/ruff-format.py :26
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/hooks/guard-selftest.py :59
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/_branch_locale.py :30
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/_declared_legs.py :47
import subprocess
show 28 more
- shell Digital-Process-Tools-claude-supertool-083ca21/presets/_declared_workflows.py :56
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/_git_run.py :45
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/_pr_board.py :52
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/_remote_default.py :21
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/_repo_target.py :24
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/_untrusted.py :371
`subprocess.run(text=True)`, and Python's universal-newline translation - shell Digital-Process-Tools-claude-supertool-083ca21/presets/claims/check.py :57
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/classify/model.py :97
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/dashboard/dashboard.py :64
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/git/_git_common.py :22
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/git/conflicts.py :12
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/git/push.py :75
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/git/resolve.py :16
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/git/status.py :19
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/git/worktrees.py :54
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/github/_release_gate.py :89
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/github/batch_follow.py :23
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/github/batch_star.py :20
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/github/branch.py :79
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/github/check.py :44
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/github/find_followable.py :18
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/github/find_starable.py :18
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/github/follow.py :8
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/github/following.py :7
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/github/issue.py :10
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/github/issue_comment.py :36
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/github/issue_create.py :61
import subprocess - shell Digital-Process-Tools-claude-supertool-083ca21/presets/github/issues.py :83
import subprocess
267 more not shown — this panel samples each group; the count above is the real total.
network 95
- net Digital-Process-Tools-claude-supertool-083ca21/_supertool.py :137
import socket - net Digital-Process-Tools-claude-supertool-083ca21/notifiers/cursor-witness/listen.py :20
import socket - net Digital-Process-Tools-claude-supertool-083ca21/notifiers/cursor-witness/notify.py :27
import socket - net Digital-Process-Tools-claude-supertool-083ca21/presets/_http.py :5
`urllib.request.urlopen` uses the default global opener, which installs - net Digital-Process-Tools-claude-supertool-083ca21/presets/_repo_target.py :26
import urllib.parse - net Digital-Process-Tools-claude-supertool-083ca21/presets/bluesky/_atproto.py :16
import urllib.error - net Digital-Process-Tools-claude-supertool-083ca21/presets/bluesky/like.py :16
from urllib.parse import urlparse - net Digital-Process-Tools-claude-supertool-083ca21/presets/bluesky/read.py :11
from urllib.parse import urlparse - net Digital-Process-Tools-claude-supertool-083ca21/presets/bluesky/repost.py :8
from urllib.parse import urlparse - net Digital-Process-Tools-claude-supertool-083ca21/presets/devto/_resolve.py :21
from urllib.parse import urlparse - net Digital-Process-Tools-claude-supertool-083ca21/presets/devto/_rest.py :7
import urllib.error - net Digital-Process-Tools-claude-supertool-083ca21/presets/devto/_session.py :25
import urllib.error
show 28 more
- net Digital-Process-Tools-claude-supertool-083ca21/presets/devto/comment.py :43
import urllib.error - net Digital-Process-Tools-claude-supertool-083ca21/presets/devto/read.py :13
from urllib.parse import urlparse - net Digital-Process-Tools-claude-supertool-083ca21/presets/github/find_starable.py :20
import urllib.parse - net Digital-Process-Tools-claude-supertool-083ca21/presets/github/issue.py :12
import urllib.parse - net Digital-Process-Tools-claude-supertool-083ca21/presets/gitlab/api.py :63
import urllib.parse - net Digital-Process-Tools-claude-supertool-083ca21/presets/gitlab/issue.py :14
import urllib.parse - net Digital-Process-Tools-claude-supertool-083ca21/presets/gitlab/issue_create.py :9
import urllib.parse - net Digital-Process-Tools-claude-supertool-083ca21/presets/gitlab/job.py :24
import urllib.parse - net Digital-Process-Tools-claude-supertool-083ca21/presets/hashnode/_graphql.py :7
import urllib.error - net Digital-Process-Tools-claude-supertool-083ca21/presets/hashnode/_resolve.py :20
from urllib.parse import urlparse - net Digital-Process-Tools-claude-supertool-083ca21/presets/hashnode/comments.py :8
from urllib.parse import urlparse - net Digital-Process-Tools-claude-supertool-083ca21/presets/hashnode/read.py :12
from urllib.parse import urlparse - net Digital-Process-Tools-claude-supertool-083ca21/presets/mcp/daemon.py :25
import socket - net Digital-Process-Tools-claude-supertool-083ca21/presets/slack/_api.py :9
bare `urllib.request.urlopen` -- see that module's docstring for why: a - net Digital-Process-Tools-claude-supertool-083ca21/presets/watch/channel.py :106
import socket - net Digital-Process-Tools-claude-supertool-083ca21/presets/watch/sources/bluesky-engagement/poller.py :57
import urllib.error - net Digital-Process-Tools-claude-supertool-083ca21/presets/watch/sources/devto-engagement/poller.py :64
import urllib.error - net Digital-Process-Tools-claude-supertool-083ca21/presets/watch/sources/github-issue-feed/poller.py :52
import urllib.parse - net Digital-Process-Tools-claude-supertool-083ca21/presets/watch/transport.py :24
import socket - net Digital-Process-Tools-claude-supertool-083ca21/presets/youtube/_oauth.py :56
import socket - net Digital-Process-Tools-claude-supertool-083ca21/presets/youtube/_yt.py :16
import urllib.error - net Digital-Process-Tools-claude-supertool-083ca21/presets/youtube/list.py :18
from urllib.parse import urlparse - net Digital-Process-Tools-claude-supertool-083ca21/presets/youtube/read.py :15
from urllib.parse import parse_qs, urlparse - net (weak) Digital-Process-Tools-claude-supertool-083ca21/tests/_mcp_mock.py :12
import socket - net (weak) Digital-Process-Tools-claude-supertool-083ca21/tests/_netblock.py :31
`socket.socket` type expose**, `tests/test_netblock_egress_register_1584.py` - net (weak) Digital-Process-Tools-claude-supertool-083ca21/tests/conftest.py :159
# calls through that name, so a test stubbing `MODULE.urllib.request.urlopen` - net (weak) Digital-Process-Tools-claude-supertool-083ca21/tests/fixtures/mock_mcp_server.py :16
import socket - net (weak) Digital-Process-Tools-claude-supertool-083ca21/tests/test_encoding_seam.py :264
"import urllib.request\n"
55 more not shown — this panel samples each group; the count above is the real total.
secrets 4
- secrets Digital-Process-Tools-claude-supertool-083ca21/presets/watch/sources/bluesky-engagement/poller.py :138
password = os.environ.get("BLUESKY_APP_PASSWORD", "").strip() - secrets Digital-Process-Tools-claude-supertool-083ca21/presets/watch/sources/devto-engagement/poller.py :129
val = os.environ.get("DEVTO_API_KEY", "").strip() - secrets (weak) Digital-Process-Tools-claude-supertool-083ca21/tests/test_preset_auth_env_isolation_2096.py :108
assert os.environ.get("SLACK_BOT_TOKEN") is None - secrets (weak) Digital-Process-Tools-claude-supertool-083ca21/tests/test_security_tree_sitter.py :293
import getpass
declared dependencies 7
- pytest@*
- pytest-cov@*
- pytest-xdist@*
- pytest-timeout@*
- ruff@*
- markdown-it-py@*
- pyyaml@*