MCP, MCP server
Project Memory
Project Memory keeps the plan, the evidence, the decisions, the outcomes and the accepted lessons of one project in a local SQLite database.
Compatibility: Not stated.
Grade C
One Medium finding. Read the findings before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
Rescanned at commit 1b67f9c4e7f9, unchanged since the check below.
PERMISSION_SHELL_UNDECLARED
Why this grade
- PERMISSION_SHELL_UNDECLARED Medium
Runs shell commands that the manifest or description does not mention.
memory_module/cli.py, line 58
run=subprocess.run(python_args('memory_module.cli')+['serv
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
requests shell access. No manifest field names shell or command execution. can delete files.
PERMISSION_SHELL_UNDECLARED PERMISSION_DELETE_FILES
memory_module/cli.py, line 58
run=subprocess.run(python_args('memory_module.cli')+['serv
memory_module/focus.py, line 552
checked = subprocess.run(check['command'], cwd=tree / snapshot.get('repository_prefix', ''),
memory_module/health.py, line 59
process = subprocess.Popen(['codex', 'app-server', '--stdio'], cwd=project, stdin=subprocess.PIPE,
Show more
memory_module/hosts.py, line 428
self.process = subprocess.Popen(args, cwd=cwd, stdin=incoming, stdout=out, stderr=err, env=environment,
memory_module/hosts.py, line 762
result = subprocess.run([program, '--version'], capture_output=True, text=True, timeout=15, stdin=subprocess.DEVNULL)
memory_module/hosts.py, line 1070
shutil.rmtree(outside_folder, ignore_errors=True)
memory_module/live.py, line 377
process = subprocess.Popen(python_args('memory_module.live') + ['--db', str(path), '--state', str(state)],
memory_module/reviews.py, line 785
process = subprocess.Popen(python_args('memory_module.reviews')+['--db', str(memory.path), '--run', run['id']],
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.
NETWORK_NO_FIXED_HOST
memory_module/ui/core.js, line 291
const request = (path, options, failure) => fetch(path, { cache: "no-store", ...options }).catch(() => { throw new PanelError(failure, { network: true }); });
Secrets
Concern
reads a credential or environment file.
SECRETS_PATH_DOTENV
.gitignore, line 17
.DS_Store
.gitignore, line 18
.env
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 1b67f9c4e7f9. requests shell access. No manifest field names shell or command execution. can delete files. can reach a host that is not written as a fixed address. reads a credential or environment file.
Date and source
Date checked:
github.com
Commit graded: 1b67f9c4e7f93ea6ce57d05b419f3ea5949982fd
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.