MCP, MCP server
VibeShift
VibeShift is an intelligent security agent designed to integrate seamlessly with AI coding assistants (like Cursor, GitHub Copilot, Claude Code, etc.).
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 INSTALL_UNPINNED SECRETS_PATH_DOTENV SECRETS_ENV_READ
Why this grade
- PERMISSION_DELETE_FILES Low
Contains a call that can delete files.
src/agents/recorder_agent.py, line 393
if os.path.exists(image_path): os.remove(image_path) - INSTALL_UNPINNED Low
Dependencies use a range or git URL with no lockfile.
requirements.txt, line 1
playwright - SECRETS_PATH_DOTENV Low
Mentions a .env file.
src/utils/utils.py, line 6
"""Loads the llm API key from .env file.""" - SECRETS_ENV_READ Note
Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.
src/utils/utils.py, line 8
api_key = os.getenv("LLM_API_KEY")
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
src/agents/recorder_agent.py, line 393
if os.path.exists(image_path): os.remove(image_path)
src/agents/recorder_agent.py, line 394
if os.path.exists(metadata_path): os.remove(metadata_path)
src/security/nuclei_scanner.py, line 38
result = subprocess.run(command, capture_output=True, text=True, timeout=timeout, check=False)
Show more
src/security/semgrep_scanner.py, line 31
result = subprocess.run(command, capture_output=True, text=True, timeout=timeout, check=False) # check=False
src/security/zap_scanner.py, line 69
result = subprocess.run(command, capture_output=True, text=True, timeout=timeout, check=False)
src/security/zap_scanner.py, line 182
result = subprocess.run(command, capture_output=True, text=True, timeout=timeout, check=False)
src/security/zap_scanner.py, line 283
result = subprocess.run(command, capture_output=True, text=True, timeout=timeout, check=False)
Install and update
Concern
dependencies are not pinned.
INSTALL_UNPINNED
requirements.txt, line 1
playwright
Network
Pass
No network call found.
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
src/utils/utils.py, line 6
"""Loads the llm API key from .env file."""
src/utils/utils.py, line 8
api_key = os.getenv("LLM_API_KEY")
src/utils/utils.py, line 10
raise ValueError("LLM_API_KEY not found in .env file or environment variables.")
Show more
src/utils/utils.py, line 14
"""Loads the API base url from .env file."""
src/utils/utils.py, line 18
raise ValueError("LLM_BASE_URL not found in .env file or environment variables.")
src/utils/utils.py, line 22
"""Loads the API Version from .env file."""
src/utils/utils.py, line 26
raise ValueError("LLM_API_VERSION not found in .env file or environment variables.")
src/utils/utils.py, line 30
"""Loads the llm model from .env file."""
src/utils/utils.py, line 34
raise ValueError("LLM_MODEL not found in .env file or environment variables.")
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 91d205c6619f. can delete files. dependencies are not pinned. reads a credential or environment file.
Date and source
Date checked:
github.com
Commit graded: 91d205c6619f97cc3209e57866f2c213aca13734
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.