MCP, MCP server
Governed Workflow
A zero-trust orchestration layer for Claude Code that enforces phase progression, scope constraints, and human approval gates on agentic coding sessions.
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.
PERMISSION_DELETE_FILES NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST SECRETS_PATH_DOTENV SECRETS_ENV_READ
Why this grade
- PERMISSION_DELETE_FILES Low
Contains a call that can delete files.
admin-panel/backend/app.py, line 72
result = subprocess.run( - NETWORK_NO_FIXED_HOST Low
Makes a network call whose host is not written as a fixed address.
admin-panel/backend/migrations/0002_seed_verification_profiles.py, line 21
ir -p ${GOVERNED_WORKFLOW_TOOLS_DIR} && curl -sL -o ${GOVERNED_WORKFLOW_TOOLS_DIR}/go - NETWORK_UNNAMED_HOST Low
Calls a fixed host that the description does not name.
admin-panel/backend/migrations/0002_seed_verification_profiles.py, line 21
ir -p ${GOVERNED_WORKFLOW_TOOLS_DIR} && curl -sL -o ${GOVERNED_WORKFLOW_TOOLS_DIR}/go - SECRETS_PATH_DOTENV Low
Mentions a .env file.
claude/modules/telegram/server.ts, line 71
const ENV_FILE = join(STATE_DIR, '.env') - SECRETS_ENV_READ Note
Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.
claude/modules/telegram/server.ts, line 109
const TOKEN = process.env.TELEGRAM_BOT_TOKEN
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
admin-panel/backend/app.py, line 72
result = subprocess.run(
admin-panel/backend/advance/validators.py, line 87
result = subprocess.run(
admin-panel/backend/core/helpers.py, line 111
``FileNotFoundError`` / ``NotADirectoryError`` from ``subprocess.run``; we
Show more
admin-panel/backend/core/helpers.py, line 135
result = subprocess.run(
admin-panel/backend/core/terminal.py, line 111
result = subprocess.run(['tmux', 'has-session', '-t', name],
admin-panel/backend/core/terminal.py, line 118
subprocess.run(['tmux', 'new-session', '-d', '-s', name, '-c', working_dir],
admin-panel/backend/core/terminal.py, line 122
subprocess.run(['tmux', 'setenv', '-t', name, key, value], capture_output=True)
admin-panel/backend/core/terminal.py, line 123
subprocess.run(['tmux', 'set-option', '-t', name, 'mouse', 'on'], capture_output=True)
admin-panel/backend/routes/git_config.py, line 90
os.remove(rules_path)
admin-panel/backend/routes/workspaces.py, line 370
shutil.rmtree(target)
admin-panel/backend/routes/workspaces.py, line 372
shutil.rmtree(backup)
admin-panel/backend/routes/workspaces.py, line 598
shutil.rmtree(wt_path, ignore_errors=True)
admin-panel/backend/routes/workspaces.py, line 717
shutil.rmtree(dst)
admin-panel/backend/routes/workspaces.py, line 1060
shutil.rmtree(proj_ws_dir)
admin-panel/backend/routes/workspaces.py, line 1064
shutil.rmtree(wt_path, ignore_errors=True)
admin-panel/backend/services/lsp_service.py, line 175
shutil.rmtree(project_cache_dir)
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 github. The description does not name that host.
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST
admin-panel/backend/migrations/0002_seed_verification_profiles.py, line 21
ir -p ${GOVERNED_WORKFLOW_TOOLS_DIR} && curl -sL -o ${GOVERNED_WORKFLOW_TOOLS_DIR}/go
admin-panel/backend/migrations/0002_seed_verification_profiles.py, line 22
ir -p ${GOVERNED_WORKFLOW_TOOLS_DIR} && curl -sL -o /tmp/pmd-dist.zip "https://github
admin-panel/backend/migrations/0002_seed_verification_profiles.py, line 26
ir -p ${GOVERNED_WORKFLOW_TOOLS_DIR} && curl -sL -o ${GOVERNED_WORKFLOW_TOOLS_DIR}/go
Show more
admin-panel/backend/migrations/0002_seed_verification_profiles.py, line 27
ir -p ${GOVERNED_WORKFLOW_TOOLS_DIR} && curl -sL -o /tmp/pmd-dist.zip "https://github
admin-panel/backend/migrations/0011_seed_updates.py, line 25
ir -p ${GOVERNED_WORKFLOW_TOOLS_DIR} && curl -sL -o ${GOVERNED_WORKFLOW_TOOLS_DIR}/go
admin-panel/backend/migrations/0017_repoint_format_tools.py, line 23
_LEGACY_INSTALL_PREFIX = "mkdir -p ~/.claude/tools && curl -sL -o ~/.claude/tools/google-java-format.jar"
admin-panel/backend/migrations/0017_repoint_format_tools.py, line 24
_NEW_INSTALL_PREFIX = "mkdir -p ${GOVERNED_WORKFLOW_TOOLS_DIR} && curl -sL -o ${GOVERNED_WORKFLOW_TOOLS_DIR}/google-java-format.jar"
admin-panel/backend/migrations/0018_replace_sonar_with_pmd.py, line 29
"curl -sL -o /tmp/pmd-dist.zip "
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
claude/modules/telegram/server.ts, line 71
const ENV_FILE = join(STATE_DIR, '.env')
claude/modules/telegram/server.ts, line 109
const TOKEN = process.env.TELEGRAM_BOT_TOKEN
claude/modules/telegram/server.ts, line 166
// reply's files param takes any path. .env is ~60 bytes and ships as a
Show more
claude/skills/telegram-multi-session/server.ts, line 71
const ENV_FILE = join(STATE_DIR, '.env')
claude/skills/telegram-multi-session/server.ts, line 109
const TOKEN = process.env.TELEGRAM_BOT_TOKEN
claude/skills/telegram-multi-session/server.ts, line 166
// reply's files param takes any path. .env is ~60 bytes and ships as a
claude/modules/telegram/SKILL.md, line 26
`access.json`, `.env`, and `sessions/` are read from the canonical location only.
claude/modules/telegram/SKILL.md, line 81
default plugin config. Does NOT delete `server.ts` or `.env`.
claude/modules/telegram/SKILL.md, line 100
3. Confirm disable. Note that `server.ts`, `.env`, and `node_modules` are
claude/modules/telegram/SKILL.md, line 109
3. Check if `<tg-state>/.env` exists and contains `BOT_TOKEN`
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
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 e624e3ae94c3. can delete files. can reach a host that is not written as a fixed address. can reach github. The description does not name that host. reads a credential or environment file.
Date and source
Date checked:
github.com
Commit graded: e624e3ae94c3087452543957838343f689235d41
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.