Claude Code, Skill
Mc Agent Toolkit
Monte Carlo's official toolkit for AI coding agents.
Compatibility: Not stated.
Grade B
Minor issues only, no Medium or High. Worth a quick look at the findings below before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
Rescanned at commit f1ea90fa2b7f, unchanged since the check below.
PERMISSION_DELETE_FILES NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST SECRETS_PATH_DOTENV SECRETS_ENV_READ OBFUSCATION_FILE_CAP_REACHED
Why this grade
- PERMISSION_DELETE_FILES Low
Contains a call that can delete files.
plugins/claude-code/hooks/prevent/lib/cache.py, line 155
os.remove(path) - NETWORK_NO_FIXED_HOST Low
Makes a network call whose host is not written as a fixed address.
plugins/claude-code/hooks/telemetry/lib/install-beacon.sh, line 75
# MC_BEACON_SYNC (test-only) runs curl in the foreground so tests can assert - NETWORK_UNNAMED_HOST Low
Calls a fixed host that the description does not name.
plugins/claude-code/hooks/telemetry/lib/install-beacon.sh, line 75
# MC_BEACON_SYNC (test-only) runs curl in the foreground so tests can assert - SECRETS_PATH_DOTENV Low
Mentions a .env file.
plugins/claude-code/evals/constants.py, line 13
load_dotenv(EVALS_DIR / ".env") - SECRETS_ENV_READ Note
Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.
plugins/claude-code/evals/constants.py, line 27
mcd_token = os.environ.get("MCD_TOKEN") - OBFUSCATION_FILE_CAP_REACHED Note
The 400 file cap was reached before every file was read.
skills/push-ingestion/scripts/templates/bigquery-iceberg/collect_and_push_metadata.py, line 1
"""
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
can delete files.
PERMISSION_DELETE_FILES
plugins/claude-code/hooks/prevent/lib/cache.py, line 155
os.remove(path)
plugins/claude-code/hooks/prevent/lib/cache.py, line 185
os.remove(path)
plugins/claude-code/hooks/prevent/lib/cache.py, line 214
os.remove(path)
Show more
plugins/claude-code/hooks/prevent/lib/cache.py, line 368
os.remove(filepath)
plugins/claude-code/hooks/prevent/lib/protocol.py, line 208
result = subprocess.run(
plugins/codex/hooks/prevent/lib/cache.py, line 155
os.remove(path)
plugins/codex/hooks/prevent/lib/cache.py, line 185
os.remove(path)
plugins/codex/hooks/prevent/lib/cache.py, line 214
os.remove(path)
plugins/codex/hooks/prevent/lib/cache.py, line 368
os.remove(filepath)
plugins/codex/hooks/prevent/lib/protocol.py, line 208
result = subprocess.run(
plugins/copilot/hooks/prevent/lib/protocol.py, line 208
result = subprocess.run(
plugins/cortex-code/hooks/prevent/lib/protocol.py, line 208
result = subprocess.run(
plugins/cursor/hooks/prevent/lib/protocol.py, line 208
result = subprocess.run(
plugins/shared/prevent/lib/protocol.py, line 208
result = subprocess.run(
skills/generate-validation-notebook/scripts/generate_notebook_url.py, line 137
subprocess.run(["open", url])
plugins/opencode/README.md, line 138
| Git staged files | `subprocess.run(["git", ...])` | `Bun.spawn(["git", ...])` |
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Concern
can reach a host that is not written as a fixed address. can reach clidocs.getmontecarlo.com. The description does not name that host. can reach api.getmontecarlo.com. The description does not name that host.
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST
plugins/claude-code/hooks/telemetry/lib/install-beacon.sh, line 75
# MC_BEACON_SYNC (test-only) runs curl in the foreground so tests can assert
plugins/claude-code/hooks/telemetry/lib/install-beacon.sh, line 78
curl -fsS -m 2 -X POST -H 'Content-Type: application/json' -d "$PAYLOAD" "$BEACON_URL" >/dev/null 2>&1 || true
plugins/claude-code/hooks/telemetry/lib/install-beacon.sh, line 80
( curl -fsS -m 2 -X POST \
Show more
plugins/claude-code/hooks/telemetry/scripts/skill-beacon.sh, line 60
( curl -fsS -m 2 -X POST \
plugins/codex/hooks/telemetry/lib/install-beacon.sh, line 75
# MC_BEACON_SYNC (test-only) runs curl in the foreground so tests can assert
plugins/codex/hooks/telemetry/lib/install-beacon.sh, line 78
curl -fsS -m 2 -X POST -H 'Content-Type: application/json' -d "$PAYLOAD" "$BEACON_URL" >/dev/null 2>&1 || true
plugins/codex/hooks/telemetry/lib/install-beacon.sh, line 80
( curl -fsS -m 2 -X POST \
plugins/copilot/hooks/telemetry/lib/install-beacon.sh, line 75
# MC_BEACON_SYNC (test-only) runs curl in the foreground so tests can assert
skills/prevent/references/TROUBLESHOOTING.md, line 6
curl -s -o /dev/null -w "%{http_code}" https://mcp.getmontecarlo.com/mcp/toolkit
skills/push-ingestion/references/direct-http-api.md, line 39
curl -X POST "https://integrations.getmontecarlo.com/ingest/v1/metadata" \
skills/push-ingestion/references/direct-http-api.md, line 83
curl -X POST "https://integrations.getmontecarlo.com/ingest/v1/lineage" \
skills/push-ingestion/references/direct-http-api.md, line 120
curl -X POST "https://integrations.getmontecarlo.com/ingest/v1/lineage" \
skills/push-ingestion/references/direct-http-api.md, line 167
curl -X POST "https://integrations.getmontecarlo.com/ingest/v1/querylogs" \
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
plugins/claude-code/evals/constants.py, line 13
load_dotenv(EVALS_DIR / ".env")
plugins/claude-code/evals/constants.py, line 27
mcd_token = os.environ.get("MCD_TOKEN")
plugins/claude-code/evals/constants.py, line 33
mcd_token = os.environ.get("MCD_TOKEN_DEV")
Show more
skills/connection-auth-rules/fetch_schema.py, line 36
token = os.environ.get("GITHUB_TOKEN")
skills/instrument-agent/references/setup-template.md, line 96
api_token = os.environ.get("MCD_DEFAULT_API_TOKEN")
skills/instrument-agent/references/setup-template.md, line 336
assert os.environ.get("MCD_DEFAULT_API_TOKEN"), (
skills/instrument-agent/references/workflow.md, line 205
bool(os.environ.get("MCD_DEFAULT_API_ID")) and bool(os.environ.get("MCD_DEFAULT_API_TOKEN"))
skills/onboarding/reference/output-modes.md, line 860
creds = select(candidates, os.environ.get("MCD_CREDENTIALS_ID"), "credentials")
skills/push-ingestion/scripts/sample_verify.py, line 302
parser.add_argument("--key-token", default=os.environ.get("MCD_TOKEN"))
.gitignore, line 1
.env
plugins/claude-code/evals/.gitignore, line 1
.venv/
plugins/claude-code/evals/README.md, line 15
cp .env.example .env
plugins/claude-code/evals/README.md, line 16
# edit .env with your keys
skills/instrument-agent/SKILL.md, line 34
- **Env files** - `.env`, `.envrc`, shell rc files. Always propose the change and wait for confirmation before editing.
skills/instrument-agent/references/redaction.md, line 257
(e.g., `.env.example`, deployment manifest, or the `mc.setup()` module
skills/instrument-agent/references/setup-template.md, line 374
- Env files (`.env`, `.env.example`, deployment manifests).
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Note
the file cap was reached before every file was read.
OBFUSCATION_FILE_CAP_REACHED
skills/push-ingestion/scripts/templates/bigquery-iceberg/collect_and_push_metadata.py, line 1
"""
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit f1ea90fa2b7f. can delete files. can reach a host that is not written as a fixed address. can reach clidocs.getmontecarlo.com. The description does not name that host. can reach api.getmontecarlo.com. The description does not name that host. reads a credential or environment file. the file cap was reached before every file was read.
Date and source
Date checked:
github.com
Commit graded: f1ea90fa2b7fa1ece98e52a45d887c609f2a8de6
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.