MCP server · Audited from source
Ouroboros MCP server
by q00/ouroborosMIT licenceAudited 21 Sep 2026 · source 53cce73ca28d
Is it safe? No — BLOCK, grade F (33/100). It exposes 3 tools: 3 read, 0 write and 0 destructive. The audit recorded 70 findings (0 critical, 11 high, 16 medium, 40 low). Maintainer's description: Agent OS: the agent gets smarter on its own. We just hold the line: Interview-gated, staged evaluation, budgeted evolution loop. MCP server, 14 runtimes: Claude Code, Codex CLI, Gemini CLI, OpenCode, Copilot, Kiro and more.
Cite
Cite this page
ModelsAtlas. “Ouroboros MCP server (q00/ouroboros)”. Retrieved 21 Sep 2026. https://modelsatlas.com/mcp/q00/ouroboros
Why this is BLOCK. The audit found 0 critical and 11 high findings; the most severe is Code injection at src/ouroboros/cli/runtime_activation.py:343. Each finding is listed below with its file and line.
Why this page is still public. People search for this server by name. Hiding it would leave them with the README's word alone; here they see what the code does. We list it so you can decide, and we do not show connect commands for BLOCK servers.
Trust audit
Audit 0.4.1 · full source read 21 Sep 2026
70 findings, listed below with the file and line each was found on. Grade A needs a sandboxed behavioural run too; this audit read the source only.
What the source does
- FilesystemDeclared9 observations
- NetworkDeclared11 observations
- ShellDeclared9 observations
- DependenciesNot pinnedSome ranges float
- SecretsFoundSee the findings
Findings (70)
Sorted by severity · the 25 most severe of 70 are listed
HIGHCode injectioncode.deserialize · src/ouroboros/cli/runtime_activation.py:343
loaded = yaml.load(snapshot.contents.decode("utf-8"), Loader=_UniqueKeyLoader)- Why
- deserialises untrusted bytes into live objects
- Fix
- use json or yaml.safe_load
HIGHCode injectioncode.eval_exec · src/ouroboros/auto/seed_preflight.py:427
r"(?:command(?:\s+(?:--|-p|-v|-V))*\s+)?eval(?:\s|$)",
- Why
- evaluates text as code
- Fix
- remove; use a parser or a dispatch table
HIGHCode injectioncode.eval_exec · src/ouroboros/mcp/server/security.py:524
"eval(",- Why
- evaluates text as code
- Fix
- remove; use a parser or a dispatch table
HIGHCode injectioncode.eval_exec · src/ouroboros/mcp/server/security.py:525
"exec(",- Why
- evaluates text as code
- Fix
- remove; use a parser or a dispatch table
HIGHFilesystem / pathfs.credential_store · src/ouroboros/evaluation/artifact_collector.py:107
".netrc",
- Why
- touches a credential store
- Fix
- —
HIGHFilesystem / pathfs.credential_store · src/ouroboros/evaluation/artifact_collector.py:110
"id_rsa",
- Why
- touches a credential store
- Fix
- —
HIGHFilesystem / pathfs.credential_store · src/ouroboros/evaluation/artifact_collector.py:111
"id_ed25519",
- Why
- touches a credential store
- Fix
- —
HIGHFilesystem / pathfs.credential_store · src/ouroboros/evaluation/artifact_collector.py:112
"id_ecdsa",
- Why
- touches a credential store
- Fix
- —
HIGHPrompt injectionprompt.hide_from_user · skills/auto/SKILL.md:226
status), keep waiting. Do not tell the user to call job tools themselves.
- Why
- asks the agent to act without the user's knowledge
- Fix
- —
HIGHPrompt injectionprompt.tool_poisoning · docs/runtime-guides/omp.md:94
[--append-system-prompt <SYSTEM>] [--tools <TOOLS>] [--no-tools] <PROMPT>
- Why
- a tool description carrying instructions to the agent
- Fix
- tool descriptions describe the tool; nothing else
HIGHPrompt injectionprompt.tool_poisoning · docs/runtime-guides/pi.md:87
[--append-system-prompt <SYSTEM>] [--tools <TOOLS>] [--no-tools] <PROMPT>
- Why
- a tool description carrying instructions to the agent
- Fix
- tool descriptions describe the tool; nothing else
MEDIUMCode injectioncode.dynamic_import · src/ouroboros/auto/__init__.py:95
value = getattr(importlib.import_module(module_name), name)
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMCode injectioncode.dynamic_import · src/ouroboros/orchestrator/capabilities/__init__.py:116
_lateral_personas = importlib.import_module(f"{__name__}.lateral_personas")- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMCode injectioncode.dynamic_import · src/ouroboros/orchestrator/capabilities/__init__.py:121
_pm_schemas = importlib.import_module(f"{__name__}.pm_schemas")- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMCode injectioncode.dynamic_import · src/ouroboros/orchestrator/capabilities/__init__.py:249
_tool_specs = importlib.import_module(f"{__name__}.tool_specs")- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMCode injectioncode.dynamic_import · src/ouroboros/orchestrator/capabilities/__init__.py:290
_interview_schemas = importlib.import_module(f"{__name__}.interview_schemas")- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMNetwork egressnet.raw_ip · scripts/live-dsh-interview.cjs:19
const baseUrl = process.env.DSH_URL || 'http://127.0.0.1:3081';
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMHard-coded secretssecret.anthropic · tests/unit/core/test_security.py:82
Excerpt withheld: it is a secret, and we never print one.
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMHard-coded secretssecret.generic · tests/unit/evolution/test_provider_usage.py:740
Excerpt withheld: it is a secret, and we never print one.
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMHard-coded secretssecret.generic · tests/unit/evolution/test_provider_usage.py:743
Excerpt withheld: it is a secret, and we never print one.
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMHard-coded secretssecret.generic · tests/unit/evolution/test_provider_usage.py:1919
Excerpt withheld: it is a secret, and we never print one.
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMHard-coded secretssecret.github · tests/unit/plugin/test_firewall.py:1660
Excerpt withheld: it is a secret, and we never print one.
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMHard-coded secretssecret.github · tests/unit/plugin/test_firewall_tool_call_dispatch.py:134
Excerpt withheld: it is a secret, and we never print one.
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMHard-coded secretssecret.github · tests/unit/plugin/test_firewall_tool_call_dispatch.py:475
Excerpt withheld: it is a secret, and we never print one.
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMHard-coded secretssecret.slack · tests/unit/auto/test_state_provenance.py:35
Excerpt withheld: it is a secret, and we never print one.
- Why
- No further detail recorded for this rule.
- Fix
- —
Tools it exposes
3 declared in source · 0 destructive
| Tool | What it does | Risk |
|---|---|---|
identity | Return any JSON value unchanged. | read |
identity-null | Return JSON null unchanged. | read |
inspect_payload | return payload | read |
Safer alternatives
ref-tools/ref-tools-mcp
Helping coding agents never make mistakes working with public or private libraries without wasting the context window.
0xk3vin/megamemory
Persistent project knowledge graph for coding agents. MCP server with semantic search, in-process embeddings, and web explorer.
with-geun/alive-analysis
Data analysis workflow kit for AI coding agents. Structure your analysis with the ALIVE loop — Ask, Look, Investigate, Voice, Evolve.
Audit history
- ✕BLOCK F 33 / 100
Source changed, verdict held ·
53cce73ca28d - ✕BLOCK F 33 / 100
First audit ·
6bd55d5c8f0c
README badge
Badges show the current verdict, BLOCK included
A badge cannot be hidden by the maintainer while the verdict is BLOCK. Fix the findings, push, and the re-audit updates it.
Questions about Ouroboros MCP server
What is the Ouroboros MCP server?
What tools does Ouroboros expose?
Is Ouroboros safe to connect to an agent?
What credentials does Ouroboros need?
How does Ouroboros run?
How current is this page?
I already installed Ouroboros. What should I do?
Can the verdict change?
Sources
- q00/ouroboros on GitHub — the source we read, its licence, stars and activityObserved · 21 Sep 2026
- ModelsAtlas trust audit — BLOCK verdict for commit 53cce73ca28dObserved · 21 Sep 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What is the Ouroboros MCP server?
- What tools does Ouroboros expose?
- Is Ouroboros safe to connect to an agent?